From b540f572a35bea57e0095bff99b9e93c735accb4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 08:40:24 -0400 Subject: [PATCH 01/93] prototype workflow for a quick regression test --- .github/workflows/quick-regression.yml | 66 ++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/quick-regression.yml diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml new file mode 100644 index 0000000000..e4f90326ea --- /dev/null +++ b/.github/workflows/quick-regression.yml @@ -0,0 +1,66 @@ +# GitHub action to build LAMMPS on Linux and run selected regression tests +name: "Quick Regression Test" + +on: + push: + branches: + - develop + - quick-regression + pull_request: + branches: + - develop + + workflow_dispatch: + +jobs: + build: + name: Quick Regression Test + if: ${{ github.repository == 'lammps/lammps' }} + runs-on: ubuntu-latest + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Install ccache + run: apt install ccache + + - name: Create Build Environment + run: mkdir build + + - name: Set up ccache + uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: linux-ccache-${{ github.sha }} + restore-keys: linux-ccache- + + - name: Building LAMMPS via CMake + shell: bash + working-directory: build + run: | + ccache -z + python3 -m venv linuxenv + source linuxenv/bin/activate + python3 -m pip install numpy + python3 -m pip install pyyaml + cmake -C ../cmake/presets/gcc.cmake \ + -C ../cmake/presets/most.cmake \ + -D DOWNLOAD_POTENTIALS=off \ + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -D CMAKE_C_COMPILER_LAUNCHER=ccache \ + -D ENABLE_TESTING=on \ + -D BUILD_SHARED_LIBS=on \ + -D LAMMPS_EXCEPTIONS=on \ + ../cmake + cmake --build . --parallel 2 + ccache -s + + - name: Run Tests + working-directory: build + shell: bash + run: ctest -V From 5562d66931c83da1fccd52f426080e7397385e8c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 08:43:07 -0400 Subject: [PATCH 02/93] need sudo for software installation --- .github/workflows/quick-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index e4f90326ea..52c883823b 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 2 - name: Install ccache - run: apt install ccache + run: sudo apt-get install -y ccache - name: Create Build Environment run: mkdir build From 9d80c22a0bf1cf4b0df1282ce5a6ecb9d7c33015 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 09:43:43 -0400 Subject: [PATCH 03/93] install a few extra packages --- .github/workflows/quick-regression.yml | 31 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 52c883823b..219ce0a38a 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -24,10 +24,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - fetch-depth: 2 + fetch-depth: 2000 - - name: Install ccache - run: sudo apt-get install -y ccache + - name: Install extra packages + run: | + sudo apt-get install -y ccache ninja-build + sudo apt-get install -y libeigen3-dev libgsl-dev libcurl4-openssl-dev python3-dev - name: Create Build Environment run: mkdir build @@ -41,23 +43,30 @@ jobs: - name: Building LAMMPS via CMake shell: bash - working-directory: build run: | ccache -z python3 -m venv linuxenv source linuxenv/bin/activate python3 -m pip install numpy python3 -m pip install pyyaml - cmake -C ../cmake/presets/gcc.cmake \ - -C ../cmake/presets/most.cmake \ - -D DOWNLOAD_POTENTIALS=off \ + cmake -S cmake -B build \ + -C cmake/presets/gcc.cmake \ + -C cmake/presets/most.cmake \ -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ -D CMAKE_C_COMPILER_LAUNCHER=ccache \ - -D ENABLE_TESTING=on \ -D BUILD_SHARED_LIBS=on \ - -D LAMMPS_EXCEPTIONS=on \ - ../cmake - cmake --build . --parallel 2 + -D DOWNLOAD_POTENTIALS=off \ + -D ENABLE_TESTING=on \ + -D PKG_MANIFOLD=on \ + -D PKG_ML-PACE=on \ + -D PKG_ML-RANN=on \ + -D PKG_RHEO=on \ + -D PKG_PTM=on \ + -D PKG_PYTHON=on \ + -D PKG_QTB=on \ + -D PKG_SMTBQ=on \ + -G Ninja + cmake --build build ccache -s - name: Run Tests From d5c245cb3bba0ae41cd8649dff52da4ddeacc4b2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 10:40:19 -0400 Subject: [PATCH 04/93] add workflow for full regression testing --- .github/workflows/full-regression.yml | 69 +++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/full-regression.yml diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml new file mode 100644 index 0000000000..b7ced102c1 --- /dev/null +++ b/.github/workflows/full-regression.yml @@ -0,0 +1,69 @@ +# GitHub action to build LAMMPS on Linux and run regression tests +name: "Full Regression Test" + +on: + push: + branches: + - develop + - quick-regression + + workflow_dispatch: + +jobs: + build: + name: Full Regression Test + # restrict to official LAMMPS repository + if: ${{ github.repository == 'lammps/lammps' }} + runs-on: ubuntu-latest + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Install extra packages + run: | + sudo apt-get install -y ccache ninja-build + sudo apt-get install -y libeigen3-dev libgsl-dev libcurl4-openssl-dev python3-dev + + - name: Create Build Environment + run: mkdir build + + - name: Set up ccache + uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: linux-ccache-${{ github.sha }} + restore-keys: linux-ccache- + + - name: Building LAMMPS via CMake + shell: bash + run: | + ccache -z + cmake -S cmake -B build \ + -C cmake/presets/gcc.cmake \ + -C cmake/presets/most.cmake \ + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -D CMAKE_C_COMPILER_LAUNCHER=ccache \ + -D BUILD_SHARED_LIBS=off \ + -D DOWNLOAD_POTENTIALS=off \ + -D PKG_MANIFOLD=on \ + -D PKG_ML-PACE=on \ + -D PKG_ML-RANN=on \ + -D PKG_RHEO=on \ + -D PKG_PTM=on \ + -D PKG_PYTHON=on \ + -D PKG_QTB=on \ + -D PKG_SMTBQ=on \ + -G Ninja + cmake --build build + ccache -s + + - name: Run Regression Tests + shell: bash + run: | + echo 'Linux binary is here:' + ls -lh build/lmp From 8adc90b71fb870a217592a7a3e879d587cca2319 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 10:41:54 -0400 Subject: [PATCH 05/93] add Linux unit test with -DLAMMPS_BIGBIG --- .github/workflows/unittest-linux.yml | 76 ++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/unittest-linux.yml diff --git a/.github/workflows/unittest-linux.yml b/.github/workflows/unittest-linux.yml new file mode 100644 index 0000000000..65e82face0 --- /dev/null +++ b/.github/workflows/unittest-linux.yml @@ -0,0 +1,76 @@ +# GitHub action to build LAMMPS on Linux and run standard unit tests +name: "Linux Unit Test" + +on: + push: + branches: + - develop + - quick-regression + pull_request: + branches: + - develop + + workflow_dispatch: + +jobs: + build: + name: Quick Regression Test + if: ${{ github.repository == 'lammps/lammps' }} + runs-on: ubuntu-latest + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Install extra packages + run: | + sudo apt-get install -y ccache mold ninja-build + sudo apt-get install -y libeigen3-dev libgsl-dev libcurl4-openssl-dev python3-dev + + - name: Create Build Environment + run: mkdir build + + - name: Set up ccache + uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: linux-ccache-${{ github.sha }} + restore-keys: linux-ccache- + + - name: Building LAMMPS via CMake + shell: bash + run: | + ccache -z + python3 -m venv linuxenv + source linuxenv/bin/activate + python3 -m pip install numpy + python3 -m pip install pyyaml + cmake -S cmake -B build \ + -C cmake/presets/gcc.cmake \ + -C cmake/presets/most.cmake \ + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -D CMAKE_C_COMPILER_LAUNCHER=ccache \ + -D BUILD_SHARED_LIBS=on \ + -D LAMMPS_SIZES=bigbig \ + -D DOWNLOAD_POTENTIALS=off \ + -D ENABLE_TESTING=on \ + -D PKG_MANIFOLD=on \ + -D PKG_ML-PACE=on \ + -D PKG_ML-RANN=on \ + -D PKG_RHEO=on \ + -D PKG_PTM=on \ + -D PKG_PYTHON=on \ + -D PKG_QTB=on \ + -D PKG_SMTBQ=on \ + -G Ninja + cmake --build build + ccache -s + + - name: Run Tests + working-directory: build + shell: bash + run: ctest -V From 8c6351b6b9fd56a8de416608ff4ab07ab0493623 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 10:43:30 -0400 Subject: [PATCH 06/93] remove unneeded stuff from quick regression test --- .github/workflows/quick-regression.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 219ce0a38a..301c8ac99f 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -45,18 +45,13 @@ jobs: shell: bash run: | ccache -z - python3 -m venv linuxenv - source linuxenv/bin/activate - python3 -m pip install numpy - python3 -m pip install pyyaml cmake -S cmake -B build \ -C cmake/presets/gcc.cmake \ -C cmake/presets/most.cmake \ -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ -D CMAKE_C_COMPILER_LAUNCHER=ccache \ - -D BUILD_SHARED_LIBS=on \ + -D BUILD_SHARED_LIBS=off \ -D DOWNLOAD_POTENTIALS=off \ - -D ENABLE_TESTING=on \ -D PKG_MANIFOLD=on \ -D PKG_ML-PACE=on \ -D PKG_ML-RANN=on \ @@ -69,7 +64,8 @@ jobs: cmake --build build ccache -s - - name: Run Tests - working-directory: build + - name: Run Selected Regression Tests shell: bash - run: ctest -V + run: | + echo 'Linux binary is here:' + ls -lh build/lmp From 664c6f908aab6f368911c6e3c26f4d5f7dfaba17 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 11:02:43 -0400 Subject: [PATCH 07/93] must use different ccache keys to avoid conflicts between concurrent jobs --- .github/workflows/full-regression.yml | 4 ++-- .github/workflows/quick-regression.yml | 4 ++-- .github/workflows/unittest-linux.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index b7ced102c1..e3c6835e77 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -36,8 +36,8 @@ jobs: uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} - key: linux-ccache-${{ github.sha }} - restore-keys: linux-ccache- + key: linux-full-ccache-${{ github.sha }} + restore-keys: linux-full-ccache- - name: Building LAMMPS via CMake shell: bash diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 301c8ac99f..1b25058ab6 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -38,8 +38,8 @@ jobs: uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} - key: linux-ccache-${{ github.sha }} - restore-keys: linux-ccache- + key: linux-quick-ccache-${{ github.sha }} + restore-keys: linux-quick-ccache- - name: Building LAMMPS via CMake shell: bash diff --git a/.github/workflows/unittest-linux.yml b/.github/workflows/unittest-linux.yml index 65e82face0..0837eae63f 100644 --- a/.github/workflows/unittest-linux.yml +++ b/.github/workflows/unittest-linux.yml @@ -38,8 +38,8 @@ jobs: uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} - key: linux-ccache-${{ github.sha }} - restore-keys: linux-ccache- + key: linux-unit-ccache-${{ github.sha }} + restore-keys: linux-unit-ccache- - name: Building LAMMPS via CMake shell: bash From 10dce38a76bc8ee1f0557001f2356ecd7b5d20f6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 11:40:01 -0400 Subject: [PATCH 08/93] small tweaks --- .github/workflows/compile-msvc.yml | 4 ++-- .github/workflows/quick-regression.yml | 3 +-- .github/workflows/unittest-linux.yml | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 1a0f1ea62f..04eac38ace 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -1,5 +1,5 @@ -# GitHub action to build LAMMPS on Windows with Visual C++ -name: "Native Windows Compilation and Unit Tests" +# GitHub action to build LAMMPS on Windows with Visual C++ and run unit tests +name: "Native Windows Unit Tests" on: push: diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 1b25058ab6..4c029758ab 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -67,5 +67,4 @@ jobs: - name: Run Selected Regression Tests shell: bash run: | - echo 'Linux binary is here:' - ls -lh build/lmp + python3 tools/regression-tests/get-quick-list.py diff --git a/.github/workflows/unittest-linux.yml b/.github/workflows/unittest-linux.yml index 0837eae63f..49477f7765 100644 --- a/.github/workflows/unittest-linux.yml +++ b/.github/workflows/unittest-linux.yml @@ -1,5 +1,5 @@ # GitHub action to build LAMMPS on Linux and run standard unit tests -name: "Linux Unit Test" +name: "Unittest for Linux" on: push: From 61fd2ba25cc29ef3e9e47f301e2b6c726a55f46c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 11:40:26 -0400 Subject: [PATCH 09/93] apply clang-format to have some files with changes --- src/MOLECULE/angle_harmonic.cpp | 12 ++--- src/MOLECULE/dihedral_multi_harmonic.cpp | 4 +- src/MOLECULE/dihedral_opls.cpp | 14 +++--- src/compute_reduce.cpp | 34 +++++++++----- src/create_box.cpp | 56 ++++++++++++++---------- src/fix_efield.cpp | 33 +++++++++----- 6 files changed, 92 insertions(+), 61 deletions(-) diff --git a/src/MOLECULE/angle_harmonic.cpp b/src/MOLECULE/angle_harmonic.cpp index e9f1c528ef..040cbe7530 100644 --- a/src/MOLECULE/angle_harmonic.cpp +++ b/src/MOLECULE/angle_harmonic.cpp @@ -276,17 +276,17 @@ void AngleHarmonic::born_matrix(int type, int i1, int i2, int i3, double &du, do double delx1 = x[i1][0] - x[i2][0]; double dely1 = x[i1][1] - x[i2][1]; double delz1 = x[i1][2] - x[i2][2]; - domain->minimum_image(delx1,dely1,delz1); - double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1); + domain->minimum_image(delx1, dely1, delz1); + double r1 = sqrt(delx1 * delx1 + dely1 * dely1 + delz1 * delz1); double delx2 = x[i3][0] - x[i2][0]; double dely2 = x[i3][1] - x[i2][1]; double delz2 = x[i3][2] - x[i2][2]; - domain->minimum_image(delx2,dely2,delz2); - double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2); + domain->minimum_image(delx2, dely2, delz2); + double r2 = sqrt(delx2 * delx2 + dely2 * dely2 + delz2 * delz2); - double c = delx1*delx2 + dely1*dely2 + delz1*delz2; - c /= r1*r2; + double c = delx1 * delx2 + dely1 * dely2 + delz1 * delz2; + c /= r1 * r2; if (c > 1.0) c = 1.0; if (c < -1.0) c = -1.0; double theta = acos(c); diff --git a/src/MOLECULE/dihedral_multi_harmonic.cpp b/src/MOLECULE/dihedral_multi_harmonic.cpp index 8e6685cac9..2d1e16b9e4 100644 --- a/src/MOLECULE/dihedral_multi_harmonic.cpp +++ b/src/MOLECULE/dihedral_multi_harmonic.cpp @@ -326,8 +326,8 @@ void DihedralMultiHarmonic::write_data(FILE *fp) /* ---------------------------------------------------------------------- */ -void DihedralMultiHarmonic::born_matrix(int nd, int i1, int i2, int i3, int i4, - double &du, double &du2) +void DihedralMultiHarmonic::born_matrix(int nd, int i1, int i2, int i3, int i4, double &du, + double &du2) { double vb1x, vb1y, vb1z, vb2x, vb2y, vb2z, vb3x, vb3y, vb3z, vb2xm, vb2ym, vb2zm; double sb1, sb3, rb1, rb3, c0, b1mag2, b1mag, b2mag2; diff --git a/src/MOLECULE/dihedral_opls.cpp b/src/MOLECULE/dihedral_opls.cpp index eced454d68..e99d83f631 100644 --- a/src/MOLECULE/dihedral_opls.cpp +++ b/src/MOLECULE/dihedral_opls.cpp @@ -336,8 +336,7 @@ void DihedralOPLS::write_data(FILE *fp) /* ----------------------------------------------------------------------*/ -void DihedralOPLS::born_matrix(int nd, int i1, int i2, int i3, int i4, - double &du, double &du2) +void DihedralOPLS::born_matrix(int nd, int i1, int i2, int i3, int i4, double &du, double &du2) { double vb1x, vb1y, vb1z, vb2x, vb2y, vb2z, vb3x, vb3y, vb3z, vb2xm, vb2ym, vb2zm; double sb1, sb3, rb1, rb3, c0, b1mag2, b1mag, b2mag2; @@ -425,9 +424,10 @@ void DihedralOPLS::born_matrix(int nd, int i1, int i2, int i3, int i4, si = sin(phi); if (fabs(si) < SMALLER) si = SMALLER; - du = k1[type] - 2.0 * k2[type] * sin(2.0 * phi) / si + 3.0 * k3[type] * sin(3.0 * phi) / si - - 4.0 * k4[type] * sin(4.0 * phi) / si; - du2 = (4.0 * k2[type] * si * cos(2.0 * phi) - 2.0 * k2[type] * sin(2.0 * phi) - - 9.0 * k3[type] * si * cos(3.0 * phi) + 3.0 * k3[type] * sin(3.0 * phi) - + 16.0 * k4[type] * si * cos(4.0 * phi) - 4.0 * k4[type] * sin(4.0 * phi)) / (si * si * si); + du = k1[type] - 2.0 * k2[type] * sin(2.0 * phi) / si + 3.0 * k3[type] * sin(3.0 * phi) / si - + 4.0 * k4[type] * sin(4.0 * phi) / si; + du2 = (4.0 * k2[type] * si * cos(2.0 * phi) - 2.0 * k2[type] * sin(2.0 * phi) - + 9.0 * k3[type] * si * cos(3.0 * phi) + 3.0 * k3[type] * sin(3.0 * phi) + + 16.0 * k4[type] * si * cos(4.0 * phi) - 4.0 * k4[type] * sin(4.0 * phi)) / + (si * si * si); } diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp index ee94c2d9a7..40bb206bd2 100644 --- a/src/compute_reduce.cpp +++ b/src/compute_reduce.cpp @@ -214,8 +214,10 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg], "inputs") == 0) { if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, mycmd + " inputs", error); - if (strcmp(arg[iarg+1], "peratom") == 0) input_mode = PERATOM; - else if (strcmp(arg[iarg+1], "local") == 0) input_mode = LOCAL; + if (strcmp(arg[iarg + 1], "peratom") == 0) + input_mode = PERATOM; + else if (strcmp(arg[iarg + 1], "local") == 0) + input_mode = LOCAL; iarg += 2; } else error->all(FLERR, "Unknown compute {} keyword: {}", style, arg[iarg]); @@ -242,7 +244,7 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : for (auto &val : values) { if (val.which == ArgInfo::X || val.which == ArgInfo::V || val.which == ArgInfo::F) { - if (input_mode == LOCAL) error->all(FLERR,"Compute {} inputs must be all local"); + if (input_mode == LOCAL) error->all(FLERR, "Compute {} inputs must be all local"); } else if (val.which == ArgInfo::COMPUTE) { val.val.c = modify->get_compute_by_id(val.id); @@ -251,11 +253,14 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : if (input_mode == PERATOM) { if (!val.val.c->peratom_flag) - error->all(FLERR, "Compute {} compute {} does not calculate per-atom values", style, val.id); + error->all(FLERR, "Compute {} compute {} does not calculate per-atom values", style, + val.id); if (val.argindex == 0 && val.val.c->size_peratom_cols != 0) - error->all(FLERR, "Compute {} compute {} does not calculate a per-atom vector", style, val.id); + error->all(FLERR, "Compute {} compute {} does not calculate a per-atom vector", style, + val.id); if (val.argindex && val.val.c->size_peratom_cols == 0) - error->all(FLERR, "Compute {} compute {} does not calculate a per-atom array", style, val.id); + error->all(FLERR, "Compute {} compute {} does not calculate a per-atom array", style, + val.id); if (val.argindex && val.argindex > val.val.c->size_peratom_cols) error->all(FLERR, "Compute {} compute {} array is accessed out-of-range", style, val.id); @@ -263,9 +268,11 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : if (!val.val.c->local_flag) error->all(FLERR, "Compute {} compute {} does not calculate local values", style, val.id); if (val.argindex == 0 && val.val.c->size_local_cols != 0) - error->all(FLERR, "Compute {} compute {} does not calculate a local vector", style, val.id); + error->all(FLERR, "Compute {} compute {} does not calculate a local vector", style, + val.id); if (val.argindex && val.val.c->size_local_cols == 0) - error->all(FLERR, "Compute {} compute {} does not calculate a local array", style, val.id); + error->all(FLERR, "Compute {} compute {} does not calculate a local array", style, + val.id); if (val.argindex && val.argindex > val.val.c->size_local_cols) error->all(FLERR, "Compute {} compute {} array is accessed out-of-range", style, val.id); } @@ -278,7 +285,8 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : if (!val.val.f->peratom_flag) error->all(FLERR, "Compute {} fix {} does not calculate per-atom values", style, val.id); if (val.argindex == 0 && (val.val.f->size_peratom_cols != 0)) - error->all(FLERR, "Compute {} fix {} does not calculate a per-atom vector", style, val.id); + error->all(FLERR, "Compute {} fix {} does not calculate a per-atom vector", style, + val.id); if (val.argindex && (val.val.f->size_peratom_cols == 0)) error->all(FLERR, "Compute {} fix {} does not calculate a per-atom array", style, val.id); if (val.argindex && (val.argindex > val.val.f->size_peratom_cols)) @@ -296,7 +304,7 @@ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : } } else if (val.which == ArgInfo::VARIABLE) { - if (input_mode == LOCAL) error->all(FLERR,"Compute {} inputs must be all local"); + if (input_mode == LOCAL) error->all(FLERR, "Compute {} inputs must be all local"); val.val.v = input->variable->find(val.id.c_str()); if (val.val.v < 0) error->all(FLERR, "Variable name {} for compute {} does not exist", val.id, style); @@ -417,7 +425,8 @@ void ComputeReduce::compute_vector() } else if (mode == MINN) { if (!replace) { for (int m = 0; m < nvalues; m++) - MPI_Allreduce(&onevec[m], &vector[m], 1, MPI_DOUBLE, this->scalar_reduction_operation, world); + MPI_Allreduce(&onevec[m], &vector[m], 1, MPI_DOUBLE, this->scalar_reduction_operation, + world); } else { for (int m = 0; m < nvalues; m++) @@ -437,7 +446,8 @@ void ComputeReduce::compute_vector() } else if (mode == MAXX) { if (!replace) { for (int m = 0; m < nvalues; m++) - MPI_Allreduce(&onevec[m], &vector[m], 1, MPI_DOUBLE, this->scalar_reduction_operation, world); + MPI_Allreduce(&onevec[m], &vector[m], 1, MPI_DOUBLE, this->scalar_reduction_operation, + world); } else { for (int m = 0; m < nvalues; m++) diff --git a/src/create_box.cpp b/src/create_box.cpp index 8a74ffd7bd..93e699e06b 100644 --- a/src/create_box.cpp +++ b/src/create_box.cpp @@ -49,11 +49,13 @@ void CreateBox::command(int narg, char **arg) Region *region = nullptr; int triclinic_general = 0; - if (strcmp(arg[1],"NULL") == 0) triclinic_general = 1; + if (strcmp(arg[1], "NULL") == 0) + triclinic_general = 1; else { region = domain->get_region_by_id(arg[1]); if (!region) error->all(FLERR, "Create_box region {} does not exist", arg[1]); - if (region->bboxflag == 0) error->all(FLERR, "Create_box region does not support a bounding box"); + if (region->bboxflag == 0) + error->all(FLERR, "Create_box region does not support a bounding box"); region->init(); } @@ -77,9 +79,9 @@ void CreateBox::command(int narg, char **arg) domain->boxlo[2] = region->extent_zlo; domain->boxhi[2] = region->extent_zhi; - // region is prism - // seutp restricted triclinic box - // set simulation domain from prism params + // region is prism + // seutp restricted triclinic box + // set simulation domain from prism params } else { domain->triclinic = 1; @@ -97,17 +99,17 @@ void CreateBox::command(int narg, char **arg) if (domain->dimension == 2) { if (domain->boxlo[2] >= 0.0 || domain->boxhi[2] <= 0.0) - error->all(FLERR,"Create_box region zlo/zhi for 2d simulation must straddle 0.0"); + error->all(FLERR, "Create_box region zlo/zhi for 2d simulation must straddle 0.0"); } - // setup general triclinic box (with no region) - // read next box extent arguments to create ABC edge vectors + origin - // define_general_triclinic() converts - // ABC edge vectors + origin to restricted triclinic + // setup general triclinic box (with no region) + // read next box extent arguments to create ABC edge vectors + origin + // define_general_triclinic() converts + // ABC edge vectors + origin to restricted triclinic } else if (triclinic_general) { if (!domain->lattice->is_general_triclinic()) - error->all(FLERR,"Create_box for general triclinic requires triclnic/general lattice"); + error->all(FLERR, "Create_box for general triclinic requires triclnic/general lattice"); if (iarg + 6 > narg) utils::missing_cmd_args(FLERR, "create_box general triclinic", error); @@ -121,42 +123,50 @@ void CreateBox::command(int narg, char **arg) if (domain->dimension == 2) if (clo != -0.5 || chi != 0.5) - error->all(FLERR,"Create_box for general triclinic requires clo = -0.5 and chi = 0.5"); + error->all(FLERR, "Create_box for general triclinic requires clo = -0.5 and chi = 0.5"); // use lattice2box() to generate origin and ABC vectors // origin = abc lo // ABC vectors = hi in one dim - origin - double avec[3],bvec[3],cvec[3],origin[3]; - double px,py,pz; + double avec[3], bvec[3], cvec[3], origin[3]; + double px, py, pz; - px = alo; py = blo; pz = clo; - domain->lattice->lattice2box(px,py,pz); + px = alo; + py = blo; + pz = clo; + domain->lattice->lattice2box(px, py, pz); origin[0] = px; origin[1] = py; origin[2] = pz; - px = ahi; py = blo; pz = clo; - domain->lattice->lattice2box(px,py,pz); + px = ahi; + py = blo; + pz = clo; + domain->lattice->lattice2box(px, py, pz); avec[0] = px - origin[0]; avec[1] = py - origin[1]; avec[2] = pz - origin[2]; - px = alo; py = bhi; pz = clo; - domain->lattice->lattice2box(px,py,pz); + px = alo; + py = bhi; + pz = clo; + domain->lattice->lattice2box(px, py, pz); bvec[0] = px - origin[0]; bvec[1] = py - origin[1]; bvec[2] = pz - origin[2]; - px = alo; py = blo; pz = chi; - domain->lattice->lattice2box(px,py,pz); + px = alo; + py = blo; + pz = chi; + domain->lattice->lattice2box(px, py, pz); cvec[0] = px - origin[0]; cvec[1] = py - origin[1]; cvec[2] = pz - origin[2]; // define general triclinic box within Domain class - domain->define_general_triclinic(avec,bvec,cvec,origin); + domain->define_general_triclinic(avec, bvec, cvec, origin); } // if molecular, zero out topology info diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp index 81be66b3e3..a5f02cc7c8 100644 --- a/src/fix_efield.cpp +++ b/src/fix_efield.cpp @@ -114,7 +114,8 @@ FixEfield::FixEfield(LAMMPS *lmp, int narg, char **arg) : } if (estr && pstr) - error->all(FLERR, "Must not use energy and potential keywords at the same time with fix efield"); + error->all(FLERR, + "Must not use energy and potential keywords at the same time with fix efield"); force_flag = 0; fsum[0] = fsum[1] = fsum[2] = fsum[3] = 0.0; @@ -171,7 +172,8 @@ void FixEfield::init() if (xstr) { xvar = input->variable->find(xstr); - if (xvar < 0) error->all(FLERR, "Variable {} for x-field in fix {} does not exist", xstr, style); + if (xvar < 0) + error->all(FLERR, "Variable {} for x-field in fix {} does not exist", xstr, style); if (input->variable->equalstyle(xvar)) xstyle = EQUAL; else if (input->variable->atomstyle(xvar)) @@ -182,7 +184,8 @@ void FixEfield::init() if (ystr) { yvar = input->variable->find(ystr); - if (yvar < 0) error->all(FLERR, "Variable {} for y-field in fix {} does not exist", ystr, style); + if (yvar < 0) + error->all(FLERR, "Variable {} for y-field in fix {} does not exist", ystr, style); if (input->variable->equalstyle(yvar)) ystyle = EQUAL; else if (input->variable->atomstyle(yvar)) @@ -193,7 +196,8 @@ void FixEfield::init() if (zstr) { zvar = input->variable->find(zstr); - if (zvar < 0) error->all(FLERR, "Variable {} for z-field in fix {} does not exist", zstr, style); + if (zvar < 0) + error->all(FLERR, "Variable {} for z-field in fix {} does not exist", zstr, style); if (input->variable->equalstyle(zvar)) zstyle = EQUAL; else if (input->variable->atomstyle(zvar)) @@ -213,7 +217,8 @@ void FixEfield::init() if (pstr) { pvar = input->variable->find(pstr); - if (pvar < 0) error->all(FLERR, "Variable {} for potential in fix {} does not exist", pstr, style); + if (pvar < 0) + error->all(FLERR, "Variable {} for potential in fix {} does not exist", pstr, style); if (input->variable->atomstyle(pvar)) pstyle = ATOM; else @@ -244,8 +249,10 @@ void FixEfield::init() error->all(FLERR, "Cannot use variable energy with constant efield in fix {}", style); if (varflag == CONSTANT && pstyle != NONE) error->all(FLERR, "Cannot use variable potential with constant efield in fix {}", style); - if ((varflag == EQUAL || varflag == ATOM) && update->whichflag == 2 && estyle == NONE && pstyle == NONE) - error->all(FLERR, "Must use variable energy or potential with fix {} during minimization", style); + if ((varflag == EQUAL || varflag == ATOM) && update->whichflag == 2 && estyle == NONE && + pstyle == NONE) + error->all(FLERR, "Must use variable energy or potential with fix {} during minimization", + style); if (utils::strmatch(update->integrate_style, "^respa")) { ilevel_respa = (dynamic_cast(update->integrate))->nlevels - 1; @@ -403,8 +410,10 @@ void FixEfield::post_force(int vflag) } f[i][2] += fz; fsum[3] += fz; - if (pstyle == ATOM) fsum[0] += qe2f * q[i] * efield[i][3]; - else if (estyle == ATOM) fsum[0] += efield[i][3]; + if (pstyle == ATOM) + fsum[0] += qe2f * q[i] * efield[i][3]; + else if (estyle == ATOM) + fsum[0] += efield[i][3]; } } @@ -504,8 +513,10 @@ void FixEfield::update_efield_variables() } else if (zstyle == ATOM) { input->variable->compute_atom(zvar, igroup, &efield[0][2], 4, 0); } - if (pstyle == ATOM) input->variable->compute_atom(pvar, igroup, &efield[0][3], 4, 0); - else if (estyle == ATOM) input->variable->compute_atom(evar, igroup, &efield[0][3], 4, 0); + if (pstyle == ATOM) + input->variable->compute_atom(pvar, igroup, &efield[0][3], 4, 0); + else if (estyle == ATOM) + input->variable->compute_atom(evar, igroup, &efield[0][3], 4, 0); modify->addstep_compute(update->ntimestep + 1); } From 1916d0be06496e585ab97ec5dfe1d926e9213113 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 11:41:56 -0400 Subject: [PATCH 10/93] add incomplete draft of quick input file lister --- tools/regression-tests/get-quick-list.py | 154 +++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 tools/regression-tests/get-quick-list.py diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py new file mode 100644 index 0000000000..60bc17f784 --- /dev/null +++ b/tools/regression-tests/get-quick-list.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python3 +""" +Find all example input files containing commands changed in this branch versus develop. +Companion script to run_tests.py regression tester. +""" + +import os, re, sys +from glob import glob +import subprocess + +# infer top level lammps dir +LAMMPS_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', '..')) + +# get list of changed files relative to the develop branch from git +output = None +try: + output = subprocess.run('git diff --diff-filter=MA --name-status develop', + shell=True, capture_output=True) +except: + pass + +# collect header files to check for styles +headers = [] +if output: + for changed in output.stdout.decode().split(): + if (changed == 'A') or (changed == 'M'): continue + if not changed.startswith('src/'): continue + if changed.endswith('.h'): headers.append(changed) + if changed.endswith('.cpp'): headers.append(changed.replace('.cpp','.h')) + +# now loop over header files, search for XxxxStyle() macros and append style name +command = [] +atom = [] +compute = [] +fix = [] +pair = [] +body = [] +bond = [] +angle = [] +dihedral = [] +improper = [] +kspace = [] +dump = [] +region = [] +integrate = [] +minimize = [] + +style_pattern = re.compile(r"(.+)Style\((.+),(.+)\)") +upper = re.compile("[A-Z]+") +gpu = re.compile("(.+)/gpu$") +intel = re.compile("(.+)/intel$") +kokkos = re.compile("(.+)/kk$") +kokkos_skip = re.compile("(.+)/kk/(host|device)$") +omp = re.compile("(.+)/omp$") +opt = re.compile("(.+)/opt$") +removed = re.compile("(.*)Deprecated$") + +for file in headers: + with open(file) as f: + for line in f: + matches = style_pattern.findall(line) + for m in matches: + # skip over internal styles w/o explicit documentation + style = m[1] + if upper.match(style): + continue + + # skip over suffix styles: + suffix = kokkos_skip.match(style) + if suffix: + continue + suffix = gpu.match(style) + if suffix: + continue + suffix = intel.match(style) + if suffix: + continue + suffix = kokkos.match(style) + if suffix: + continue + suffix = omp.match(style) + if suffix: + continue + suffix = opt.match(style) + if suffix: + continue + deprecated = removed.match(m[2]) + if deprecated: + continue + + # register style and suffix flags + if m[0] == 'Angle': + angle.append(style) + elif m[0] == 'Atom': + atom.append(style) + elif m[0] == 'Body': + register_style(body,style,info) + elif m[0] == 'Bond': + bond.applend(style) + elif m[0] == 'Command': + command.append(style) + elif m[0] == 'Compute': + compute.append(style) + elif m[0] == 'Dihedral': + dihedral.append(style) + elif m[0] == 'Dump': + dump.append(style) + elif m[0] == 'Fix': + fix.append(style) + elif m[0] == 'Improper': + improper.append(style) + elif m[0] == 'Integrate': + integrate.append(style) + elif m[0] == 'KSpace': + kspace.append(style) + elif m[0] == 'Minimize': + minimize.append(style) + elif m[0] == 'Pair': + pair.append(style) + elif m[0] == 'Region': + region.append(style) + else: + pass + +if len(command): + print("Commands: ", '|'.join(command)) +if len(atom): + print("Atom styles: ", '|'.join(atom)) +if len(compute): + print("Compute styles: ", '|'.join(compute)) +if len(fix): + print("Fix styles: ", '|'.join(fix)) +if len(pair): + print("Pair styles: ", '|'.join(pair)) +if len(body): + print("Body styles: ", '|'.join(body)) +if len(bond): + print("Bond styles: ", '|'.join(bond)) +if len(angle): + print("Angle styles: ", '|'.join(angle)) +if len(dihedral): + print("Dihedral styles: ", '|'.join(dihedral)) +if len(improper): + print("Improper styles: ", '|'.join(improper)) +if len(kspace): + print("Kspace styles: ", '|'.join(kspace)) +if len(dump): + print("Dump styles: ", '|'.join(dump)) +if len(region): + print("Region styles: ", '|'.join(region)) +if len(integrate): + print("Integrate styles: ", '|'.join(integrate)) +if len(minimize): + print("Minimize styles: ", '|'.join(minimize)) From 022d1d795934feef29a628e571d407067c76ca6a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 15:41:31 -0400 Subject: [PATCH 11/93] get-quick-list.py script is feature complete --- src/REPLICA/verlet_split.cpp | 2 +- src/REPLICA/verlet_split.h | 2 +- tools/regression-tests/get-quick-list.py | 400 +++++++++++++++-------- 3 files changed, 264 insertions(+), 140 deletions(-) diff --git a/src/REPLICA/verlet_split.cpp b/src/REPLICA/verlet_split.cpp index b270ad445d..acc776efc3 100644 --- a/src/REPLICA/verlet_split.cpp +++ b/src/REPLICA/verlet_split.cpp @@ -237,7 +237,7 @@ void VerletSplit::init() tip4pflag = force->kspace->tip4pflag; // invoke parent Verlet init - + Verlet::init(); } diff --git a/src/REPLICA/verlet_split.h b/src/REPLICA/verlet_split.h index 10835e0792..3528a1fe5f 100644 --- a/src/REPLICA/verlet_split.h +++ b/src/REPLICA/verlet_split.h @@ -40,7 +40,7 @@ class VerletSplit : public Verlet { int ratio; // ratio of Rspace procs to Kspace procs int *qsize, *qdisp, *xsize, *xdisp; // MPI gather/scatter params for block comm MPI_Comm block; // communicator within one block - + int tip4pflag; // 1 if Kspace method sets tip4pflag double **f_kspace; // copy of Kspace forces on Rspace procs diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 60bc17f784..7c9f977b74 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -4,151 +4,275 @@ Find all example input files containing commands changed in this branch versus d Companion script to run_tests.py regression tester. """ -import os, re, sys -from glob import glob -import subprocess +import os, re, sys, subprocess +from pathlib import Path -# infer top level lammps dir +if sys.version_info < (3,5): + raise BaseException("Must use at least Python 3.5") + +# infer top level LAMMPS dir LAMMPS_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', '..')) -# get list of changed files relative to the develop branch from git -output = None -try: - output = subprocess.run('git diff --diff-filter=MA --name-status develop', - shell=True, capture_output=True) -except: - pass +# ---------------------------------------------------------------------- -# collect header files to check for styles -headers = [] -if output: - for changed in output.stdout.decode().split(): - if (changed == 'A') or (changed == 'M'): continue - if not changed.startswith('src/'): continue - if changed.endswith('.h'): headers.append(changed) - if changed.endswith('.cpp'): headers.append(changed.replace('.cpp','.h')) +def changed_files_from_git(branch='develop'): + """ + Return list of changed file from git. -# now loop over header files, search for XxxxStyle() macros and append style name -command = [] -atom = [] -compute = [] -fix = [] -pair = [] -body = [] -bond = [] -angle = [] -dihedral = [] -improper = [] -kspace = [] -dump = [] -region = [] -integrate = [] -minimize = [] + This function queries git to return the list of changed files on + the current branch relative to a given branch (default is 'develop'). -style_pattern = re.compile(r"(.+)Style\((.+),(.+)\)") -upper = re.compile("[A-Z]+") -gpu = re.compile("(.+)/gpu$") -intel = re.compile("(.+)/intel$") -kokkos = re.compile("(.+)/kk$") -kokkos_skip = re.compile("(.+)/kk/(host|device)$") -omp = re.compile("(.+)/omp$") -opt = re.compile("(.+)/opt$") -removed = re.compile("(.*)Deprecated$") + param branch: branch to compare with + type branch: string + return: path names of files with changes relative to the repository root + rtype: list of strings + """ -for file in headers: - with open(file) as f: - for line in f: - matches = style_pattern.findall(line) - for m in matches: - # skip over internal styles w/o explicit documentation - style = m[1] - if upper.match(style): - continue + # get list of changed files relative to the develop branch from git + output = None + try: + output = subprocess.run('git diff --diff-filter=MA --name-status develop', + shell=True, capture_output=True) + except: + pass - # skip over suffix styles: - suffix = kokkos_skip.match(style) - if suffix: - continue - suffix = gpu.match(style) - if suffix: - continue - suffix = intel.match(style) - if suffix: - continue - suffix = kokkos.match(style) - if suffix: - continue - suffix = omp.match(style) - if suffix: - continue - suffix = opt.match(style) - if suffix: - continue - deprecated = removed.match(m[2]) - if deprecated: - continue + # collect header files to check for styles + # - skip files that don't end in '.h' or '.cpp' + # - skip paths that don't start with 'src/' + # - replace '.cpp' with '.h' w/o checking it exists + headers = [] + # output will have a letter 'A' or 'M' for added or modified files followed by pathname + # append iterms to list and return it + if output: + for changed in output.stdout.decode().split(): + if (changed == 'A') or (changed == 'M'): continue + if not changed.startswith('src/'): continue + if changed.endswith('.h'): headers.append(changed) + if changed.endswith('.cpp'): headers.append(changed.replace('.cpp','.h')) + return headers - # register style and suffix flags - if m[0] == 'Angle': - angle.append(style) - elif m[0] == 'Atom': - atom.append(style) - elif m[0] == 'Body': - register_style(body,style,info) - elif m[0] == 'Bond': - bond.applend(style) - elif m[0] == 'Command': - command.append(style) - elif m[0] == 'Compute': - compute.append(style) - elif m[0] == 'Dihedral': - dihedral.append(style) - elif m[0] == 'Dump': - dump.append(style) - elif m[0] == 'Fix': - fix.append(style) - elif m[0] == 'Improper': - improper.append(style) - elif m[0] == 'Integrate': - integrate.append(style) - elif m[0] == 'KSpace': - kspace.append(style) - elif m[0] == 'Minimize': - minimize.append(style) - elif m[0] == 'Pair': - pair.append(style) - elif m[0] == 'Region': - region.append(style) - else: - pass +# ---------------------------------------------------------------------- -if len(command): - print("Commands: ", '|'.join(command)) -if len(atom): - print("Atom styles: ", '|'.join(atom)) -if len(compute): - print("Compute styles: ", '|'.join(compute)) -if len(fix): - print("Fix styles: ", '|'.join(fix)) -if len(pair): - print("Pair styles: ", '|'.join(pair)) -if len(body): - print("Body styles: ", '|'.join(body)) -if len(bond): - print("Bond styles: ", '|'.join(bond)) -if len(angle): - print("Angle styles: ", '|'.join(angle)) -if len(dihedral): - print("Dihedral styles: ", '|'.join(dihedral)) -if len(improper): - print("Improper styles: ", '|'.join(improper)) -if len(kspace): - print("Kspace styles: ", '|'.join(kspace)) -if len(dump): - print("Dump styles: ", '|'.join(dump)) -if len(region): - print("Region styles: ", '|'.join(region)) -if len(integrate): - print("Integrate styles: ", '|'.join(integrate)) -if len(minimize): - print("Minimize styles: ", '|'.join(minimize)) +def get_command_from_header(headers, topdir="."): + """ + Loop over list of header files and extract style names, if present. + + LAMMPS commands have macros XxxxStyle() that connects a string with a class. + We search the header files for those macros, extract the string and append + it to a list in a dictionary of different types of styles. We skip over known + suffixes and deprecated commands. + + param headers: header files to check for commands + type headers: + return: dictionary with lists of style names + rtype: dict + """ + + styles = {} + styles['command'] = [] + styles['atom'] = [] + styles['compute'] = [] + styles['fix'] = [] + styles['pair'] = [] + styles['body'] = [] + styles['bond'] = [] + styles['angle'] = [] + styles['dihedral'] = [] + styles['improper'] = [] + styles['kspace'] = [] + styles['dump'] = [] + styles['region'] = [] + styles['integrate'] = [] + styles['minimize'] = [] + + # some regex + style_pattern = re.compile(r"(.+)Style\((.+),(.+)\)") + upper = re.compile("[A-Z]+") + gpu = re.compile("(.+)/gpu$") + intel = re.compile("(.+)/intel$") + kokkos = re.compile("(.+)/kk$") + kokkos_skip = re.compile("(.+)/kk/(host|device)$") + omp = re.compile("(.+)/omp$") + opt = re.compile("(.+)/opt$") + removed = re.compile("(.*)Deprecated$") + + for file in headers: + # don't fail if file is not present + try: + with open(os.path.join(topdir,file)) as f: + for line in f: + matches = style_pattern.findall(line) + for m in matches: + # skip over internal styles w/o explicit documentation + style = m[1] + if upper.match(style): + continue + + # skip over suffix styles: + suffix = kokkos_skip.match(style) + if suffix: + continue + suffix = gpu.match(style) + if suffix: + continue + suffix = intel.match(style) + if suffix: + continue + suffix = kokkos.match(style) + if suffix: + continue + suffix = omp.match(style) + if suffix: + continue + suffix = opt.match(style) + if suffix: + continue + deprecated = removed.match(m[2]) + if deprecated: + continue + + # register style and suffix flags + if m[0] == 'Angle': + styles['angle'].append(style) + elif m[0] == 'Atom': + styles['atom'].append(style) + elif m[0] == 'Body': + styles['body'].append(style) + elif m[0] == 'Bond': + styles['bond'].applend(style) + elif m[0] == 'Command': + styles['command'].append(style) + elif m[0] == 'Compute': + styles['compute'].append(style) + elif m[0] == 'Dihedral': + styles['dihedral'].append(style) + elif m[0] == 'Dump': + styles['dump'].append(style) + elif m[0] == 'Fix': + styles['fix'].append(style) + elif m[0] == 'Improper': + styles['improper'].append(style) + elif m[0] == 'Integrate': + styles['integrate'].append(style) + elif m[0] == 'KSpace': + styles['kspace'].append(style) + elif m[0] == 'Minimize': + styles['minimize'].append(style) + elif m[0] == 'Pair': + styles['pair'].append(style) + elif m[0] == 'Region': + styles['region'].append(style) + else: + pass + # header file not found or not readable + except: + pass + return styles + +# ---------------------------------------------------------------------- + +def make_regex(styles): + """Convert dictionary with styles into a regular expression to scan input files with + + This will construct a regular expression matching LAMMPS commands. Ignores continuation + + param styles: dictionary with style names + type styles: dict + return: compiled regular expression + rtype: regex + """ + + restring = "^\\s*(" + if len(styles['command']): + restring += '(' + '|'.join(styles['command']) + ')|' + if len(styles['atom']): + restring += '(atom_style\\s+(' + '|'.join(styles['atom']) + '))|' + if len(styles['compute']): + restring += '(compute\\s+\\S+\\s+\\S+\\s+(' + '|'.join(styles['compute']) + '))|' + if len(styles['fix']): + restring += '(fix\\s+\\S+\\s+\\S+\\s+(' + '|'.join(styles['fix']) + '))|' + if len(styles['pair']): + restring += '(pair_style\\s+(' + '|'.join(styles['pair']) + '))|' + if len(styles['body']): + restring += '(atom_style\\s+body\\s+(' + '|'.join(styles['body']) + '))|' + if len(styles['bond']): + restring += '(bond_style\\s+(' + '|'.join(styles['bond']) + '))|' + if len(styles['angle']): + restring += '(angle_style\\s+(' + '|'.join(styles['angle']) + '))|' + if len(styles['dihedral']): + restring += '(dihedral_style\\s+(' + '|'.join(styles['dihedral']) + '))|' + if len(styles['improper']): + restring += '(improper_style\\s+(' + '|'.join(styles['improper']) + '))|' + if len(styles['kspace']): + restring += '(kspace_style\\s+(' + '|'.join(styles['kspace']) + '))|' + if len(styles['dump']): + restring += '(dump\\s+\\S+\\s+\\S+\\s+(' + '|'.join(styles['dump']) + '))|' + if len(styles['region']): + restring += '(region\\s+(' + '|'.join(styles['region']) + '))|' + if len(styles['integrate']): + restring += '(run_style\\s+(' + '|'.join(styles['integrate']) + '))|' + if len(styles['minimize']): + restring += '(min_style\\s+(' + '|'.join(styles['minimize']) + '))|' + + # replace last (pipe) character with closing parenthesis + length = len(restring) + restring = restring[:length-1] + ')' + # return compiled regex or None + if length > 5: + return re.compile(restring) + else: + return None + +# ---------------------------------------------------------------------- + +def get_examples_using_styles(regex, examples='examples'): + """ + Loop through LAMMPS examples tree and find all files staring with 'in.' + that have at least one line matching the regex. + + param regex: pattern matching LAMMPS commands + type regex: compiled regex + param example: path where to start looking for examples recursively + type example: string + return: list of matching example inputs + rtype: list of strings + """ + + inputs = [] + for filename in Path(examples).rglob('in.*'): + with open(filename) as f: + for line in f: + matches = regex.match(line) + if matches: + inputs.append(filename) + break + return inputs + +# ---------------------------------------------------------------------- +# ---------------------------------------------------------------------- + +if __name__ == "__main__": + headers = changed_files_from_git('develop') + styles = get_command_from_header(headers, LAMMPS_DIR) + inputs = get_examples_using_styles(make_regex(styles), os.path.join(LAMMPS_DIR,'examples')) + + print("Suggested inputs for testing:") + for inp in inputs: + print(inp) + + print("Found changes to the following styles:") + print("Commands: ", styles['command']) + print("Atom styles: ", styles['atom']) + print("Compute styles: ", styles['compute']) + print("Fix styles: ", styles['fix']) + print("Pair styles: ", styles['pair']) + print("Body styles: ", styles['body']) + print("Bond styles: ", styles['bond']) + print("Angle styles: ", styles['angle']) + print("Dihedral styles: ", styles['dihedral']) + print("Improper styles: ", styles['improper']) + print("Kspace styles: ", styles['kspace']) + print("Dump styles: ", styles['dump']) + print("Region styles: ", styles['region']) + print("Integrate styles: ", styles['integrate']) + print("Minimize styles: ", styles['minimize']) From 66d6804d2341d0c8dd533c99ee894a151381bf06 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 15:43:55 -0400 Subject: [PATCH 12/93] apply clang-format to some pair style headers --- src/DIPOLE/pair_lj_sf_dipole_sf.h | 2 +- src/GPU/pair_amoeba_gpu.h | 3 +-- src/GPU/pair_hippo_gpu.h | 3 +-- src/GRANULAR/pair_granular.h | 2 +- src/INTERLAYER/pair_aip_water_2dm.h | 1 - src/INTERLAYER/pair_ilp_graphene_hbn.h | 7 ++++++- src/LEPTON/pair_lepton_coul.h | 4 ++-- src/LEPTON/pair_lepton_sphere.h | 2 +- src/MANYBODY/pair_bop.h | 6 +++--- src/MANYBODY/pair_meam_spline.h | 10 ++-------- src/MANYBODY/pair_meam_sw_spline.h | 10 ++-------- src/MANYBODY/pair_rebomos.h | 2 +- src/MANYBODY/pair_tersoff_mod_c.h | 2 +- src/ML-PACE/pair_pace.h | 2 +- src/ML-QUIP/pair_quip.h | 2 ++ src/OPT/pair_aip_water_2dm_opt.h | 4 ++-- src/OPT/pair_ilp_graphene_hbn_opt.h | 5 ++--- 17 files changed, 29 insertions(+), 38 deletions(-) diff --git a/src/DIPOLE/pair_lj_sf_dipole_sf.h b/src/DIPOLE/pair_lj_sf_dipole_sf.h index 892c227a7a..df01e3dacd 100644 --- a/src/DIPOLE/pair_lj_sf_dipole_sf.h +++ b/src/DIPOLE/pair_lj_sf_dipole_sf.h @@ -26,7 +26,7 @@ namespace LAMMPS_NS { class PairLJSFDipoleSF : public Pair { public: - PairLJSFDipoleSF(class LAMMPS *_lmp) : Pair(_lmp){}; + PairLJSFDipoleSF(class LAMMPS *_lmp) : Pair(_lmp) {}; ~PairLJSFDipoleSF() override; void compute(int, int) override; void settings(int, char **) override; diff --git a/src/GPU/pair_amoeba_gpu.h b/src/GPU/pair_amoeba_gpu.h index c90339585b..3f5f89424c 100644 --- a/src/GPU/pair_amoeba_gpu.h +++ b/src/GPU/pair_amoeba_gpu.h @@ -64,8 +64,7 @@ class PairAmoebaGPU : public PairAmoeba { void udirect2b_cpu(); - template - void compute_force_from_torque(const numtyp*, double**, double*); + template void compute_force_from_torque(const numtyp *, double **, double *); }; } // namespace LAMMPS_NS diff --git a/src/GPU/pair_hippo_gpu.h b/src/GPU/pair_hippo_gpu.h index 5f36d6e71f..d00c490243 100644 --- a/src/GPU/pair_hippo_gpu.h +++ b/src/GPU/pair_hippo_gpu.h @@ -65,8 +65,7 @@ class PairHippoGPU : public PairAmoeba { void udirect2b_cpu(); - template - void compute_force_from_torque(const numtyp*, double**, double*); + template void compute_force_from_torque(const numtyp *, double **, double *); }; } // namespace LAMMPS_NS diff --git a/src/GRANULAR/pair_granular.h b/src/GRANULAR/pair_granular.h index 46c5570543..f94f4f5dff 100644 --- a/src/GRANULAR/pair_granular.h +++ b/src/GRANULAR/pair_granular.h @@ -75,7 +75,7 @@ class PairGranular : public Pair { // granular models int nmodels, maxmodels; - class Granular_NS::GranularModel** models_list; + class Granular_NS::GranularModel **models_list; int **types_indices; // optional user-specified global cutoff, per-type user-specified cutoffs diff --git a/src/INTERLAYER/pair_aip_water_2dm.h b/src/INTERLAYER/pair_aip_water_2dm.h index 295cdfffb9..91f9395214 100644 --- a/src/INTERLAYER/pair_aip_water_2dm.h +++ b/src/INTERLAYER/pair_aip_water_2dm.h @@ -30,7 +30,6 @@ class PairAIPWATER2DM : virtual public PairILPTMD { protected: void settings(int, char **) override; - }; } // namespace LAMMPS_NS diff --git a/src/INTERLAYER/pair_ilp_graphene_hbn.h b/src/INTERLAYER/pair_ilp_graphene_hbn.h index e151ecc801..5d5c1cce54 100644 --- a/src/INTERLAYER/pair_ilp_graphene_hbn.h +++ b/src/INTERLAYER/pair_ilp_graphene_hbn.h @@ -39,7 +39,12 @@ class PairILPGrapheneHBN : public Pair { static constexpr int NPARAMS_PER_LINE = 13; - enum { ILP_GrhBN, ILP_TMD, SAIP_METAL, AIP_WATER_2DM }; // for telling class variants apart in shared code + enum { + ILP_GrhBN, + ILP_TMD, + SAIP_METAL, + AIP_WATER_2DM + }; // for telling class variants apart in shared code protected: int me; diff --git a/src/LEPTON/pair_lepton_coul.h b/src/LEPTON/pair_lepton_coul.h index 8153792bd5..c58177c6cb 100644 --- a/src/LEPTON/pair_lepton_coul.h +++ b/src/LEPTON/pair_lepton_coul.h @@ -27,8 +27,8 @@ namespace LAMMPS_NS { class PairLeptonCoul : public PairLepton { public: - PairLeptonCoul(class LAMMPS *_lmp) : PairLepton(_lmp){}; - ~PairLeptonCoul() override{}; + PairLeptonCoul(class LAMMPS *_lmp) : PairLepton(_lmp) {}; + ~PairLeptonCoul() override {}; void compute(int, int) override; void settings(int, char **) override; void init_style() override; diff --git a/src/LEPTON/pair_lepton_sphere.h b/src/LEPTON/pair_lepton_sphere.h index ab586a309b..9e2642ac50 100644 --- a/src/LEPTON/pair_lepton_sphere.h +++ b/src/LEPTON/pair_lepton_sphere.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairLeptonSphere : public PairLepton { public: - PairLeptonSphere(class LAMMPS *_lmp) : PairLepton(_lmp){}; + PairLeptonSphere(class LAMMPS *_lmp) : PairLepton(_lmp) {}; void compute(int, int) override; void settings(int, char **) override; diff --git a/src/MANYBODY/pair_bop.h b/src/MANYBODY/pair_bop.h index b210d1cc07..cdc6033f00 100644 --- a/src/MANYBODY/pair_bop.h +++ b/src/MANYBODY/pair_bop.h @@ -57,18 +57,18 @@ class PairBOP : public Pair { struct PairList1 { double r, dis[3]; double betaS, dBetaS, betaP, dBetaP, rep, dRep; - PairList1(){}; + PairList1() {}; }; struct PairList2 { double r, dis[3]; double rep, dRep; - PairList2(){}; + PairList2() {}; }; struct TripleList { double G, dG, cosAng, dCosAngi[3], dCosAngj[3], dCosAngk[3]; - TripleList(){}; + TripleList() {}; }; struct B_SG { diff --git a/src/MANYBODY/pair_meam_spline.h b/src/MANYBODY/pair_meam_spline.h index ee09b045cf..47f3f3d8df 100644 --- a/src/MANYBODY/pair_meam_spline.h +++ b/src/MANYBODY/pair_meam_spline.h @@ -197,16 +197,10 @@ class PairMEAMSpline : public Pair { } /// Returns the number of bytes used by this function object. - double memory_usage() const - { - return sizeof(*this) + sizeof(X[0]) * N * 3; - } + double memory_usage() const { return sizeof(*this) + sizeof(X[0]) * N * 3; } /// Returns the cutoff radius of this function. - double cutoff() const - { - return X[N - 1]; - } + double cutoff() const { return X[N - 1]; } /// Writes a Gnuplot script that plots the spline function. void writeGnuplot(const char *filename, const char *title = nullptr) const; diff --git a/src/MANYBODY/pair_meam_sw_spline.h b/src/MANYBODY/pair_meam_sw_spline.h index 9123f8c560..a5c1b0ffd4 100644 --- a/src/MANYBODY/pair_meam_sw_spline.h +++ b/src/MANYBODY/pair_meam_sw_spline.h @@ -187,16 +187,10 @@ class PairMEAMSWSpline : public Pair { } /// Returns the number of bytes used by this function object. - double memory_usage() const - { - return sizeof(*this) + sizeof(X[0]) * N * 3; - } + double memory_usage() const { return sizeof(*this) + sizeof(X[0]) * N * 3; } /// Returns the cutoff radius of this function. - double cutoff() const - { - return X[N - 1]; - } + double cutoff() const { return X[N - 1]; } /// Writes a Gnuplot script that plots the spline function. void writeGnuplot(const char *filename, const char *title = nullptr) const; diff --git a/src/MANYBODY/pair_rebomos.h b/src/MANYBODY/pair_rebomos.h index 856a52ca81..d36eb41a74 100644 --- a/src/MANYBODY/pair_rebomos.h +++ b/src/MANYBODY/pair_rebomos.h @@ -49,7 +49,7 @@ class PairREBOMoS : public Pair { int *REBO_numneigh; // # of pair neighbors for each atom int **REBO_firstneigh; // ptr to 1st neighbor of each atom - double *nM, *nS; // sum of weighting fns with REBO neighs + double *nM, *nS; // sum of weighting fns with REBO neighs double rcmin[2][2], rcmax[2][2], rcmaxsq[2][2], rcmaxp[2][2]; double Q[2][2], alpha[2][2], A[2][2], BIJc[2][2], Beta[2][2]; diff --git a/src/MANYBODY/pair_tersoff_mod_c.h b/src/MANYBODY/pair_tersoff_mod_c.h index aff1883bbd..8cea97baaf 100644 --- a/src/MANYBODY/pair_tersoff_mod_c.h +++ b/src/MANYBODY/pair_tersoff_mod_c.h @@ -26,7 +26,7 @@ namespace LAMMPS_NS { class PairTersoffMODC : public PairTersoffMOD { public: - PairTersoffMODC(class LAMMPS *lmp) : PairTersoffMOD(lmp){}; + PairTersoffMODC(class LAMMPS *lmp) : PairTersoffMOD(lmp) {}; static constexpr int NPARAMS_PER_LINE = 21; diff --git a/src/ML-PACE/pair_pace.h b/src/ML-PACE/pair_pace.h index 5cff7045fa..a972e857d2 100644 --- a/src/ML-PACE/pair_pace.h +++ b/src/ML-PACE/pair_pace.h @@ -55,7 +55,7 @@ class PairPACE : public Pair { int nmax_corerep; virtual void allocate(); - double *corerep_factor; //per-atom core-rep factor (= 1 - fcut) + double *corerep_factor; //per-atom core-rep factor (= 1 - fcut) int flag_corerep_factor; double **scale; diff --git a/src/ML-QUIP/pair_quip.h b/src/ML-QUIP/pair_quip.h index 2cbbcd4af8..7f23ab4478 100644 --- a/src/ML-QUIP/pair_quip.h +++ b/src/ML-QUIP/pair_quip.h @@ -43,8 +43,10 @@ class PairQUIP : public Pair { double init_one(int, int) override; void allocate(); void *extract(const char *, int &); + protected: double scale; + private: double cutoff; int *quip_potential; diff --git a/src/OPT/pair_aip_water_2dm_opt.h b/src/OPT/pair_aip_water_2dm_opt.h index 50b5043360..18eee58d72 100644 --- a/src/OPT/pair_aip_water_2dm_opt.h +++ b/src/OPT/pair_aip_water_2dm_opt.h @@ -1,4 +1,4 @@ - /* -*- c++ -*- ---------------------------------------------------------- +/* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories LAMMPS development team: developers@lammps.org @@ -20,8 +20,8 @@ PairStyle(aip/water/2dm/opt,PairAIPWATER2DMOpt); #ifndef LMP_PAIR_AIP_WATER_2DM_OPT_H #define LMP_PAIR_AIP_WATER_2DM_OPT_H -#include "pair_ilp_graphene_hbn_opt.h" #include "pair_aip_water_2dm.h" +#include "pair_ilp_graphene_hbn_opt.h" namespace LAMMPS_NS { diff --git a/src/OPT/pair_ilp_graphene_hbn_opt.h b/src/OPT/pair_ilp_graphene_hbn_opt.h index 01b66bb2fa..f2fa30d595 100644 --- a/src/OPT/pair_ilp_graphene_hbn_opt.h +++ b/src/OPT/pair_ilp_graphene_hbn_opt.h @@ -35,8 +35,8 @@ class PairILPGrapheneHBNOpt : virtual public PairILPGrapheneHBN { protected: void update_internal_list(); template - void calc_atom_normal(int i, int itype, int *ILP_neigh, int nneigh, double *normal, double (*dnormdri)[3], - double (*dnormdrk)[3][3]); + void calc_atom_normal(int i, int itype, int *ILP_neigh, int nneigh, double *normal, + double (*dnormdri)[3], double (*dnormdrk)[3][3]); template void eval(); int *layered_neigh; @@ -51,7 +51,6 @@ class PairILPGrapheneHBNOpt : virtual public PairILPGrapheneHBN { SAIP_BNCH, WATER, }; - }; } // namespace LAMMPS_NS From db9a618a7b7bc4befdd36806e8fd32b72162c3d9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 15:51:15 -0400 Subject: [PATCH 13/93] more fault tolerance --- tools/regression-tests/get-quick-list.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 7c9f977b74..ff8077b20e 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -242,10 +242,11 @@ def get_examples_using_styles(regex, examples='examples'): for filename in Path(examples).rglob('in.*'): with open(filename) as f: for line in f: - matches = regex.match(line) - if matches: - inputs.append(filename) - break + if line: + matches = regex.match(line) + if matches: + inputs.append(filename) + break return inputs # ---------------------------------------------------------------------- From 27ff1fa5d4efcc5824dadf56c323f5e3ca8622d7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 15:57:28 -0400 Subject: [PATCH 14/93] pass string instead of compiled regexp --- tools/regression-tests/get-quick-list.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index ff8077b20e..70dfafa99b 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -10,7 +10,7 @@ from pathlib import Path if sys.version_info < (3,5): raise BaseException("Must use at least Python 3.5") -# infer top level LAMMPS dir +# infer top level LAMMPS dir from filename LAMMPS_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', '..')) # ---------------------------------------------------------------------- @@ -178,8 +178,8 @@ def make_regex(styles): param styles: dictionary with style names type styles: dict - return: compiled regular expression - rtype: regex + return: combined regular expression string + rtype: string """ restring = "^\\s*(" @@ -217,9 +217,9 @@ def make_regex(styles): # replace last (pipe) character with closing parenthesis length = len(restring) restring = restring[:length-1] + ')' - # return compiled regex or None + # return combined regex string if length > 5: - return re.compile(restring) + return restring else: return None @@ -230,7 +230,7 @@ def get_examples_using_styles(regex, examples='examples'): Loop through LAMMPS examples tree and find all files staring with 'in.' that have at least one line matching the regex. - param regex: pattern matching LAMMPS commands + param regex: string pattern matching LAMMPS commands type regex: compiled regex param example: path where to start looking for examples recursively type example: string @@ -238,15 +238,14 @@ def get_examples_using_styles(regex, examples='examples'): rtype: list of strings """ + commands = re.compile(regex) inputs = [] for filename in Path(examples).rglob('in.*'): with open(filename) as f: for line in f: - if line: - matches = regex.match(line) - if matches: - inputs.append(filename) - break + if commands.match(line): + inputs.append(filename) + break return inputs # ---------------------------------------------------------------------- From f3df42ec02adb2efb9556d051c2a47cb87a38626 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:07:26 -0400 Subject: [PATCH 15/93] include debug info --- tools/regression-tests/get-quick-list.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 70dfafa99b..9cabce0c92 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -238,6 +238,7 @@ def get_examples_using_styles(regex, examples='examples'): rtype: list of strings """ + print("type ", type(regex)) commands = re.compile(regex) inputs = [] for filename in Path(examples).rglob('in.*'): @@ -252,14 +253,20 @@ def get_examples_using_styles(regex, examples='examples'): # ---------------------------------------------------------------------- if __name__ == "__main__": + headers = changed_files_from_git('develop') + print("headers\n", headers) styles = get_command_from_header(headers, LAMMPS_DIR) - inputs = get_examples_using_styles(make_regex(styles), os.path.join(LAMMPS_DIR,'examples')) + print("styles\n", styles) + regex = make_regex(styles) + print("regex: ", regex) + inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) print("Suggested inputs for testing:") for inp in inputs: print(inp) + print(type(make_regex(styles))) print("Found changes to the following styles:") print("Commands: ", styles['command']) print("Atom styles: ", styles['atom']) From f1f7eb01c84fa1a5a4cf0cc9e5fe78eee3c0ccb1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:15:06 -0400 Subject: [PATCH 16/93] tweak settings in action --- .github/workflows/quick-regression.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 4c029758ab..49424ca26f 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -25,6 +25,8 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 2000 + fetch-tags: true + show-progress: false - name: Install extra packages run: | From 50cd510e7930f5c074bcd2229c593a85c915169a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:16:26 -0400 Subject: [PATCH 17/93] no merge commit so we get differences --- .github/workflows/quick-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 49424ca26f..c1fe0f7fd8 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -24,8 +24,8 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: + ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 2000 - fetch-tags: true show-progress: false - name: Install extra packages From 1c5c3b41a91f71bbf5c04b8fa6d4872792595fc1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:20:27 -0400 Subject: [PATCH 18/93] more debugging --- .github/workflows/quick-regression.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index c1fe0f7fd8..d4e51a31e6 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -69,4 +69,5 @@ jobs: - name: Run Selected Regression Tests shell: bash run: | + git diff develop..HEAD python3 tools/regression-tests/get-quick-list.py From 613e053373ff5e8a461b39ee002336c717b74281 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:23:57 -0400 Subject: [PATCH 19/93] check out whole history --- .github/workflows/quick-regression.yml | 2 +- tools/regression-tests/get-quick-list.py | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index d4e51a31e6..8c52db0ebd 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -25,7 +25,7 @@ jobs: uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - fetch-depth: 2000 + fetch-depth: 0 show-progress: false - name: Install extra packages diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 9cabce0c92..47a3a07b9b 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -238,7 +238,6 @@ def get_examples_using_styles(regex, examples='examples'): rtype: list of strings """ - print("type ", type(regex)) commands = re.compile(regex) inputs = [] for filename in Path(examples).rglob('in.*'): @@ -257,10 +256,9 @@ if __name__ == "__main__": headers = changed_files_from_git('develop') print("headers\n", headers) styles = get_command_from_header(headers, LAMMPS_DIR) - print("styles\n", styles) regex = make_regex(styles) - print("regex: ", regex) - inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) + if regex: + inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) print("Suggested inputs for testing:") for inp in inputs: From a204f8e69f5111bf155eb86aba8a45b44cece1e5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:30:02 -0400 Subject: [PATCH 20/93] refer to branch with origin/develop --- .github/workflows/quick-regression.yml | 1 - tools/regression-tests/get-quick-list.py | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 8c52db0ebd..b8fe12ba14 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -69,5 +69,4 @@ jobs: - name: Run Selected Regression Tests shell: bash run: | - git diff develop..HEAD python3 tools/regression-tests/get-quick-list.py diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 47a3a07b9b..44f6d90770 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -253,8 +253,7 @@ def get_examples_using_styles(regex, examples='examples'): if __name__ == "__main__": - headers = changed_files_from_git('develop') - print("headers\n", headers) + headers = changed_files_from_git('origin/develop') styles = get_command_from_header(headers, LAMMPS_DIR) regex = make_regex(styles) if regex: From dc4e4988a9d62e7a39bab9f66be6e855b7785ace Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:37:35 -0400 Subject: [PATCH 21/93] do not fetch specific commit hash --- .github/workflows/quick-regression.yml | 4 +++- tools/regression-tests/get-quick-list.py | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index b8fe12ba14..a4bb55dffc 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -24,7 +24,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 show-progress: false @@ -69,4 +68,7 @@ jobs: - name: Run Selected Regression Tests shell: bash run: | + git branch + git branch -r + git diff origin/develop..HEAD python3 tools/regression-tests/get-quick-list.py diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 44f6d90770..61ae31a7b3 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -258,10 +258,9 @@ if __name__ == "__main__": regex = make_regex(styles) if regex: inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) - - print("Suggested inputs for testing:") - for inp in inputs: - print(inp) + print("Suggested inputs for testing:") + for inp in inputs: + print(inp) print(type(make_regex(styles))) print("Found changes to the following styles:") From bda862a3a29d6f27b7ad7ddd463c3012dd7d0eb4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 16:50:03 -0400 Subject: [PATCH 22/93] actually honor the branch argument --- .github/workflows/quick-regression.yml | 3 --- tools/regression-tests/get-quick-list.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index a4bb55dffc..bee8835e3f 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -68,7 +68,4 @@ jobs: - name: Run Selected Regression Tests shell: bash run: | - git branch - git branch -r - git diff origin/develop..HEAD python3 tools/regression-tests/get-quick-list.py diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 61ae31a7b3..92f26b054b 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -31,7 +31,7 @@ def changed_files_from_git(branch='develop'): # get list of changed files relative to the develop branch from git output = None try: - output = subprocess.run('git diff --diff-filter=MA --name-status develop', + output = subprocess.run('git diff --diff-filter=MA --name-status ' + branch, shell=True, capture_output=True) except: pass From abbfa9470e2344e7db97d16bcfa3937c8da7f131 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 17:07:12 -0400 Subject: [PATCH 23/93] remove debug print() statement --- tools/regression-tests/get-quick-list.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 92f26b054b..2fa596168c 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -262,7 +262,6 @@ if __name__ == "__main__": for inp in inputs: print(inp) - print(type(make_regex(styles))) print("Found changes to the following styles:") print("Commands: ", styles['command']) print("Atom styles: ", styles['atom']) From 7475e5a5eff1593b823497e10549f2b8c54edaea Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 11:49:20 -0500 Subject: [PATCH 24/93] run the regression tester tool with the list of suggested inputs --- .github/workflows/quick-regression.yml | 9 +++++++++ tools/regression-tests/get-quick-list.py | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index bee8835e3f..90d3932605 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -46,6 +46,11 @@ jobs: shell: bash run: | ccache -z + python3 -m venv linuxenv + source linuxenv/bin/activate + python3 -m pip install numpy + python3 -m pip install pyyaml + python3 -m pip install junit_xml cmake -S cmake -B build \ -C cmake/presets/gcc.cmake \ -C cmake/presets/most.cmake \ @@ -69,3 +74,7 @@ jobs: shell: bash run: | python3 tools/regression-tests/get-quick-list.py + python3 tools/regression-tests/run_tests.py \ + --lmp-bin=build/lmp \ + --config-file=tools/regression-tests/config.yaml \ + --list-input=folder_list.txt diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 2fa596168c..c9ec9e3971 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -258,10 +258,30 @@ if __name__ == "__main__": regex = make_regex(styles) if regex: inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) + + # TODO: modify the regression tester tool to process the raw list of input scripts + folder_list = [] print("Suggested inputs for testing:") for inp in inputs: print(inp) + # get the folder that contains the input script + full_path = str(inp) + folder = full_path.rsplit('/', 1)[0] + # add unique folders in the list + if folder not in folder_list: + folder_list.append(folder) + + # input_list.txt is used for the regression tester tool + # that lists the individual subfolders and the number of input scripts therein + with open('folder_list.txt', 'w') as f: + for folder in folder_list: + cmd_str = f"ls {folder}/in.* | wc -l" + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + num_input = p.stdout.split('\n')[0] + f.write(folder + ' ' + num_input + '\n') + + print("Found changes to the following styles:") print("Commands: ", styles['command']) print("Atom styles: ", styles['atom']) From ebe3bd2f7e6f8e978579da284ffa8dd30633f9e5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 11:59:16 -0500 Subject: [PATCH 25/93] activate the env before running the python scripts --- .github/workflows/quick-regression.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 90d3932605..7ba4e8465b 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -73,6 +73,7 @@ jobs: - name: Run Selected Regression Tests shell: bash run: | + source linuxenv/bin/activate python3 tools/regression-tests/get-quick-list.py python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ From b1d40014a6326d7466f97b9d3ad880dff0ecfb95 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 14:00:13 -0500 Subject: [PATCH 26/93] allow to download artifact from the regression test --- .github/workflows/quick-regression.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 7ba4e8465b..3aed9384c9 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -71,6 +71,7 @@ jobs: ccache -s - name: Run Selected Regression Tests + uses: actions/download-artifact@v4 shell: bash run: | source linuxenv/bin/activate @@ -79,3 +80,8 @@ jobs: --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config.yaml \ --list-input=folder_list.txt + tar -cvf quick-regression-test.tar run.log progress.yaml + with: + name: quick-regression-test-artifact + path: quick-regression-test.tar + From 0d005789787319443f54a7ff7bf37cb0cd7e397a Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 14:03:25 -0500 Subject: [PATCH 27/93] move download artifacts to a separate step --- .github/workflows/quick-regression.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 3aed9384c9..fd7d292c2b 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -71,7 +71,6 @@ jobs: ccache -s - name: Run Selected Regression Tests - uses: actions/download-artifact@v4 shell: bash run: | source linuxenv/bin/activate @@ -81,7 +80,11 @@ jobs: --config-file=tools/regression-tests/config.yaml \ --list-input=folder_list.txt tar -cvf quick-regression-test.tar run.log progress.yaml + + - name: Download artifacts + uses: actions/download-artifact@v4 with: name: quick-regression-test-artifact path: quick-regression-test.tar + retention-days: 5 From e1b324a3e95ac8d960182e154db010c6695bc83c Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 14:18:40 -0500 Subject: [PATCH 28/93] upload artifacts --- .github/workflows/quick-regression.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index fd7d292c2b..2e44e24275 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -81,10 +81,10 @@ jobs: --list-input=folder_list.txt tar -cvf quick-regression-test.tar run.log progress.yaml - - name: Download artifacts - uses: actions/download-artifact@v4 + - name: Upload artifacts + uses: actions/upload-artifact@v4 with: name: quick-regression-test-artifact path: quick-regression-test.tar - retention-days: 5 + From b69a9847f7c6e0db6dc92dbde7c3d94d4b977c56 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 14:40:07 -0500 Subject: [PATCH 29/93] add a config file for running regression tests in serial (no mpirun), modify run_tests.py to handle this case --- .github/workflows/quick-regression.yml | 2 +- tools/regression-tests/config_serial.yaml | 46 +++++++++++++++++++++++ tools/regression-tests/run_tests.py | 4 +- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tools/regression-tests/config_serial.yaml diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 2e44e24275..2726e70650 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -77,7 +77,7 @@ jobs: python3 tools/regression-tests/get-quick-list.py python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config.yaml \ + --config-file=tools/regression-tests/config_serial.yaml \ --list-input=folder_list.txt tar -cvf quick-regression-test.tar run.log progress.yaml diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml new file mode 100644 index 0000000000..900e3d1736 --- /dev/null +++ b/tools/regression-tests/config_serial.yaml @@ -0,0 +1,46 @@ +--- + lmp_binary: "" + nprocs: "1" + args: "-cite none" + mpiexec: "" + mpiexec_numproc_flag: "" + tolerance: + PotEng: + abs: 1e-4 + rel: 1e-7 + TotEng: + abs: 1e-4 + rel: 1e-7 + Press: + abs: 1e-4 + rel: 1e-7 + Temp: + abs: 1e-4 + rel: 1e-7 + E_vdwl: + abs: 1e-3 + rel: 1e-7 + overrides: + in.rigid.tnr: + Temp: + abs: 1e-3 + rel: 1e-5 + Press: + abs: 1e-2 + rel: 1e-4 + skip: + [ in.rigid.poems3, + in.rigid.poems4, + in.rigid.poems5, + in.peptide, + in.voronoi, + in.voronoi.2d, + in.voronoi.data, + in.*_imd*, + in.bucky-plus-cnt*, + ] + + nugget: 1.0 + epsilon: 1e-16 + + diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index b2144478ec..4d9fdfaa22 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -710,7 +710,9 @@ def get_lammps_build_configuration(lmp_binary): - wrap subprocess with try/catch to handle exceptions ''' def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): - cmd_str = config['mpiexec'] + " " + config['mpiexec_numproc_flag'] + " " + config['nprocs'] + " " + cmd_str = "" + if config['mpiexec']: + cmd_str += config['mpiexec'] + " " + config['mpiexec_numproc_flag'] + " " + config['nprocs'] + " " cmd_str += lmp_binary + " -in " + input_file_name + " " + config['args'] logger.info(f" Executing: {cmd_str}") p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) From 380447c6ba8c980747895e7dd89730e71a44be78 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 14:44:08 -0500 Subject: [PATCH 30/93] updated regression test config files --- tools/regression-tests/config.yaml | 11 ++++------- tools/regression-tests/config_serial.yaml | 10 +++------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/tools/regression-tests/config.yaml b/tools/regression-tests/config.yaml index 24f1ab0d67..372d0db10b 100644 --- a/tools/regression-tests/config.yaml +++ b/tools/regression-tests/config.yaml @@ -29,13 +29,10 @@ abs: 1e-2 rel: 1e-4 skip: - [ in.rigid.poems3, - in.rigid.poems4, - in.rigid.poems5, - in.peptide, - in.voronoi, - in.voronoi.2d, - in.voronoi.data, + [ + in.displ, + in.displ2, + in.dos, in.*_imd*, in.bucky-plus-cnt*, ] diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index 900e3d1736..1fe3f48353 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -29,13 +29,9 @@ abs: 1e-2 rel: 1e-4 skip: - [ in.rigid.poems3, - in.rigid.poems4, - in.rigid.poems5, - in.peptide, - in.voronoi, - in.voronoi.2d, - in.voronoi.data, + [ in.displ, + in.displ2, + in.dos, in.*_imd*, in.bucky-plus-cnt*, ] From 9e172665f24ef8b25aa564500ffd8d41b443886d Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 15:45:13 -0500 Subject: [PATCH 31/93] enable full regression tests --- .github/workflows/full-regression.yml | 35 ++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index e3c6835e77..4f18632c99 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -43,6 +43,11 @@ jobs: shell: bash run: | ccache -z + python3 -m venv linuxenv + source linuxenv/bin/activate + python3 -m pip install numpy + python3 -m pip install pyyaml + python3 -m pip install junit_xml cmake -S cmake -B build \ -C cmake/presets/gcc.cmake \ -C cmake/presets/most.cmake \ @@ -62,8 +67,32 @@ jobs: cmake --build build ccache -s - - name: Run Regression Tests + run_regression_tests: + - name: Analyze top-level examples folder, split into 8 seperate subfolder lists shell: bash run: | - echo 'Linux binary is here:' - ls -lh build/lmp + source linuxenv/bin/activate + python3 tools/regression-tests/run_tests.py \ + --lmp-bin=build/lmp \ + --examples-top-level=examples --analyze --num-workers=8 + + - name: Run regression tests with 8 workers each processing a list of subfolders + strategy: + matrix: + idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] + run: | + source linuxenv/bin/activate + python3 tools/regression-tests/run_tests.py \ + --lmp-bin=build/lmp \ + --config-file=tools/regression-tests/config_serial.yaml \ + --list-input=input-list-${{ matrix.idx }}.txt \ + --output-file=output-${{ matrix.idx }}.xml \ + --progress-file=progress-${{ matrix.idx }}.yaml \ + --log-file=run-${{ matrix.idx }}.log > screen-${{ matrix.idx }}.txt + tar -cvf full-regression-test.tar run*.log progress* output* screen*.txt + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: full-regression-test-artifact + path: full-regression-test.tar \ No newline at end of file From 5a9b742086bd9307ce0ef83123754578ff39c88a Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 15:52:41 -0500 Subject: [PATCH 32/93] experiment with the matrix feature at the job level --- .github/workflows/full-regression.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 4f18632c99..1ace372140 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -17,6 +17,9 @@ jobs: runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache + strategy: + matrix: + idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] steps: - name: Checkout repository @@ -67,7 +70,6 @@ jobs: cmake --build build ccache -s - run_regression_tests: - name: Analyze top-level examples folder, split into 8 seperate subfolder lists shell: bash run: | @@ -77,9 +79,6 @@ jobs: --examples-top-level=examples --analyze --num-workers=8 - name: Run regression tests with 8 workers each processing a list of subfolders - strategy: - matrix: - idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] run: | source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ From d09e9d46fa030f2d292fc72b37ff296607285b4e Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 16:00:15 -0500 Subject: [PATCH 33/93] specify the config file when analyzing the examples folder --- .github/workflows/full-regression.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 1ace372140..fc7c05a894 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -76,6 +76,7 @@ jobs: source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ + --config-file=tools/regression-tests/config_serial.yaml \ --examples-top-level=examples --analyze --num-workers=8 - name: Run regression tests with 8 workers each processing a list of subfolders From afb1e499af1a800aae6551ba6eeda49d195d89ef Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 16:28:51 -0500 Subject: [PATCH 34/93] debugging the issue with the runs, list index out of range for run 7 --- .github/workflows/full-regression.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index fc7c05a894..71b176e4ca 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -88,11 +88,8 @@ jobs: --list-input=input-list-${{ matrix.idx }}.txt \ --output-file=output-${{ matrix.idx }}.xml \ --progress-file=progress-${{ matrix.idx }}.yaml \ - --log-file=run-${{ matrix.idx }}.log > screen-${{ matrix.idx }}.txt - tar -cvf full-regression-test.tar run*.log progress* output* screen*.txt + --log-file=run-${{ matrix.idx }}.log - name: Upload artifacts uses: actions/upload-artifact@v4 - with: - name: full-regression-test-artifact - path: full-regression-test.tar \ No newline at end of file + From 149ae7463164d51ed84f59bac5ce14c18a36dfd9 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 17:06:11 -0500 Subject: [PATCH 35/93] debug matrix strategy --- .github/workflows/full-regression.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 71b176e4ca..d550f5b728 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -11,15 +11,12 @@ on: jobs: build: - name: Full Regression Test + name: Build # restrict to official LAMMPS repository if: ${{ github.repository == 'lammps/lammps' }} runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache - strategy: - matrix: - idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] steps: - name: Checkout repository @@ -79,6 +76,19 @@ jobs: --config-file=tools/regression-tests/config_serial.yaml \ --examples-top-level=examples --analyze --num-workers=8 + run_tests: + name: Full Regression Test + # restrict to official LAMMPS repository + if: ${{ github.repository == 'lammps/lammps' }} + runs-on: ubuntu-latest + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + strategy: + max-parallel: 2 + matrix: + idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] + + steps: - name: Run regression tests with 8 workers each processing a list of subfolders run: | source linuxenv/bin/activate From 04400e10a8f3c27a57089598806c8c356415d586 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 25 Aug 2024 16:02:16 -0500 Subject: [PATCH 36/93] Updated the regression tester run_tests.py to handle list of input scripts --- .github/workflows/full-regression.yml | 6 +- .github/workflows/quick-regression.yml | 2 +- tools/regression-tests/get-quick-list.py | 24 +--- tools/regression-tests/run_tests.py | 153 ++++++++++++++++------- 4 files changed, 119 insertions(+), 66 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index d550f5b728..5e11fbbdd4 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -67,7 +67,7 @@ jobs: cmake --build build ccache -s - - name: Analyze top-level examples folder, split into 8 seperate subfolder lists + - name: Analyze top-level examples folder, split into 8 seperate lists of input scripts shell: bash run: | source linuxenv/bin/activate @@ -86,10 +86,10 @@ jobs: strategy: max-parallel: 2 matrix: - idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] + idx: [ 0, 1 ] steps: - - name: Run regression tests with 8 workers each processing a list of subfolders + - name: Run regression tests run: | source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 2726e70650..89da0bfb0a 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -78,7 +78,7 @@ jobs: python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ - --list-input=folder_list.txt + --list-input=input_list.txt tar -cvf quick-regression-test.tar run.log progress.yaml - name: Upload artifacts diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index c9ec9e3971..672aa10f3a 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -259,28 +259,12 @@ if __name__ == "__main__": if regex: inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) - # TODO: modify the regression tester tool to process the raw list of input scripts - folder_list = [] print("Suggested inputs for testing:") - for inp in inputs: - print(inp) - - # get the folder that contains the input script - full_path = str(inp) - folder = full_path.rsplit('/', 1)[0] - # add unique folders in the list - if folder not in folder_list: - folder_list.append(folder) - # input_list.txt is used for the regression tester tool - # that lists the individual subfolders and the number of input scripts therein - with open('folder_list.txt', 'w') as f: - for folder in folder_list: - cmd_str = f"ls {folder}/in.* | wc -l" - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - num_input = p.stdout.split('\n')[0] - f.write(folder + ' ' + num_input + '\n') - + with open('input_list.txt', 'w') as f: + for inp in inputs: + print(inp) + f.write(inp + '\n') print("Found changes to the following styles:") print("Commands: ", styles['command']) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 4d9fdfaa22..3051355eb8 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -9,6 +9,7 @@ UPDATE: August 13, 2024: With the current features, users can: + specify which LAMMPS binary version to test (e.g., the version from a commit, or those from `lammps-testing`) + specify the examples subfolders (thus the reference log files) seperately (e.g. from other LAMMPS versions or commits) + + specify the list of examples input scripts to test + specify tolerances for individual quantities for any input script to override the global values + launch tests with `mpirun` with all supported command line features (multiple procs, multiple paritions, and suffices) + skip certain input files (whose names match specified patterns) if not interested, or packaged not installed, or no reference log file exists @@ -43,21 +44,33 @@ Example usage: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ --example-folders="/path/to/examples/folder1;/path/to/examples/folder2" - The example folders can also be loaded from a text file list_subfolders1.txt: + The example subfolders can also be loaded from a text file list_subfolders1.txt: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ - --list-input=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ + --list-subfolders=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ + --log-file=run1.log + + 4) Specify a list of example input scripts + python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ + --list-input=input-list-1.txt --output-file=output1.txt --progress-file=progress1.yaml \ + --log-file=run1.log + + The example subfolders can also be loaded from a text file list_subfolders1.txt: + python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ + --list-subfolders=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ --log-file=run1.log - 4) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree + 5) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples - 5) Analyze the LAMMPS binary annd whole top-level /examples folder in a LAMMPS source tree + 6) Analyze the LAMMPS binary annd whole top-level /examples folder in a LAMMPS source tree and generate separate input lists for 8 workers: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples \ --analyze --num-workers=8 - This is used for splitting the subfolders into separate input lists and launching different instances - of run_tests.py simultaneously. + The output of this run is 8 files folder-list-[0-7].txt that lists the subfolders + and 8 files input-list-[0-7].txt that lists the input scripts under the top-level example folders. + With these lists, one can launch multiple instances of run_tests.py simultaneously + each with a list of example subfolders (Case 3), or with a list of input scripts (Case 4). ''' from argparse import ArgumentParser @@ -825,6 +838,7 @@ if __name__ == "__main__": lmp_binary = "" configFileName = "config.yaml" example_subfolders = [] + example_inputs = [] example_toplevel = "" genref = False verbose = False @@ -832,6 +846,7 @@ if __name__ == "__main__": progress_file = "progress.yaml" log_file = "run.log" list_input = "" + list_subfolders = "" analyze = False # distribute the total number of input scripts over the workers @@ -844,7 +859,8 @@ if __name__ == "__main__": help="Configuration YAML file") parser.add_argument("--examples-top-level", dest="example_toplevel", default="", help="Examples top-level") parser.add_argument("--example-folders", dest="example_folders", default="", help="Example subfolders") - parser.add_argument("--list-input", dest="list_input", default="", help="File that lists the subfolders") + parser.add_argument("--list-input", dest="list_input", default="", help="File that lists the input scripts") + parser.add_argument("--list-subfolders", dest="list_subfolders", default="", help="File that lists the subfolders") parser.add_argument("--num-workers", dest="num_workers", default=1, help="Number of workers") parser.add_argument("--gen-ref",dest="genref", action='store_true', default=False, help="Generating reference data") @@ -866,6 +882,7 @@ if __name__ == "__main__": if int(args.num_workers) > 0: num_workers = int(args.num_workers) list_input = args.list_input + list_subfolders = args.list_subfolders # example_toplevel is where all the examples subfolders reside if args.example_toplevel != "": @@ -884,33 +901,6 @@ if __name__ == "__main__": logger = logging.getLogger(__name__) logging.basicConfig(filename=log_file, level=logging.INFO, filemode="w") - # read in the configuration of the tests - with open(configFileName, 'r') as f: - config = yaml.load(f, Loader=Loader) - absolute_path = os.path.abspath(configFileName) - print(f"\nRegression tests with the settings defined in the configuration file:\n {absolute_path}") - f.close() - - # check if lmp_binary is specified in the config yaml - if lmp_binary == "": - if config['lmp_binary'] == "": - print("Needs a valid LAMMPS binary") - quit() - else: - lmp_binary = os.path.abspath(config['lmp_binary']) - - # print out the binary info - packages, operating_system, GitInfo, compile_flags = get_lammps_build_configuration(lmp_binary) - print("\nLAMMPS build info:") - print(f" - {operating_system}") - print(f" - {GitInfo}") - print(f" - Active compile flags: {compile_flags}") - print(f" - List of {len(packages)} installed packages:") - all_pkgs = "" - for p in packages: - all_pkgs += p + " " - print(all_pkgs) - if len(example_subfolders) > 0: print("\nExample folders to test:") print(*example_subfolders, sep='\n') @@ -926,7 +916,7 @@ if __name__ == "__main__": # then use the path from --example-top-folder, or from the input-list read from a text file if len(example_subfolders) == 0: - # need top level specified + # if the top level is specified if len(example_toplevel) != 0: # getting the list of all the input files because there are subfolders (e.g. PACKAGES) under the top level cmd_str = f"find {example_toplevel} -name \"in.*\" " @@ -953,7 +943,7 @@ if __name__ == "__main__": # write each chunk to a file idx = 0 for list_input in sublists: - filename = f"input-list-{idx}.txt" + filename = f"folder-list-{idx}.txt" with open(filename, "w") as f: for folder in list_input: # count the number of input scripts in each folder @@ -967,14 +957,28 @@ if __name__ == "__main__": # working on all the folders for now example_subfolders = folder_list - # if a list of subfolders are provided from a text file (list_input from the command-line argument) - elif len(list_input) != 0: + # divide the list of input scripts into num_workers chunks + sublists = divide_into_N(input_list, num_workers) + + # write each chunk to a file + idx = 0 + for list_input in sublists: + filename = f"input-list-{idx}.txt" + with open(filename, "w") as f: + for inp in list_input: + f.write(inp + '\n') + f.close() + idx = idx + 1 + + # if a list of subfolders is provided from a text file (list_subfolders from the command-line argument) + elif len(list_subfolders) != 0: num_inputscripts = 0 - with open(list_input, "r") as f: + with open(list_subfolders, "r") as f: all_subfolders = f.read().splitlines() f.close() for line in all_subfolders: if len(line) > 0: + # skip subfolders if line[0] == '#': continue folder = line.split()[0] @@ -983,6 +987,33 @@ if __name__ == "__main__": msg = f"\nThere are {len(example_subfolders)} folders with {num_inputscripts} input scripts in total listed in {list_input}." print(msg) logger.info(msg) + + # if a list of input scripts is provided from a text file (list_input from the command-line argument) + elif len(list_input) != 0: + num_inputscripts = 0 + folder_list = [] + with open(list_input, "r") as f: + all_inputs = f.read().splitlines() + f.close() + + for line in all_inputs: + if len(line) > 0: + # skip input scripts + if line[0] == '#': + continue + input = line.split()[0] + folder = input.rsplit('/', 1)[0] + # unique folders in the list + if folder not in folder_list: + folder_list.append(folder) + example_inputs.append(input) + num_inputscripts += 1 + + example_subfolders = folder_list + msg = f"\nThere are {num_inputscripts} input scripts listed in {list_input}." + print(msg) + logger.info(msg) + else: inplace_input = False @@ -990,6 +1021,33 @@ if __name__ == "__main__": if analyze == True: quit() + # read in the configuration of the tests + with open(configFileName, 'r') as f: + config = yaml.load(f, Loader=Loader) + absolute_path = os.path.abspath(configFileName) + print(f"\nRegression test configuration file:\n {absolute_path}") + f.close() + + # check if lmp_binary is specified in the config yaml + if lmp_binary == "": + if config['lmp_binary'] == "": + print("Needs a valid LAMMPS binary") + quit() + else: + lmp_binary = os.path.abspath(config['lmp_binary']) + + # print out the binary info + packages, operating_system, GitInfo, compile_flags = get_lammps_build_configuration(lmp_binary) + print("\nLAMMPS build info:") + print(f" - {operating_system}") + print(f" - {GitInfo}") + print(f" - Active compile flags: {compile_flags}") + print(f" - List of {len(packages)} installed packages:") + all_pkgs = "" + for p in packages: + all_pkgs += p + " " + print(all_pkgs) + all_results = [] # save current working dir @@ -1044,10 +1102,21 @@ if __name__ == "__main__": cmd_str = "ls in.*" p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - input_list = p.stdout.split('\n') - input_list.remove('') + all_input_list = p.stdout.split('\n') + all_input_list.remove('') - print(f"{len(input_list)} input script(s): {input_list}") + # if the list of example input scripts is provided + # if an input script is not in the list, then remove it from input_list + input_list = [] + if len(example_inputs) > 0: + for inp in all_input_list: + full_path = directory + "/" + inp + if full_path in example_inputs: + input_list.append(inp) + else: + input_list = all_input_list + + print(f"{len(input_list)} input script(s) to be tested: {input_list}") total_tests += len(input_list) # iterate through the input scripts From 9f20e5b7f7ad49b3460e7f3cf8c6f535fd509742 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 25 Aug 2024 16:19:52 -0500 Subject: [PATCH 37/93] put a timeout for a run, specified in the config file --- tools/regression-tests/config_serial.yaml | 1 + tools/regression-tests/run_tests.py | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index 1fe3f48353..746e74f226 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -36,6 +36,7 @@ in.bucky-plus-cnt*, ] + timeout: 60 nugget: 1.0 epsilon: 1e-16 diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 3051355eb8..f2d41af9de 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -319,7 +319,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if there is no ERROR in the output, but there is no Total wall time printed out if "Total wall time" not in output: - logger.info(f" ERROR: no Total wall time in the output.\n") + logger.info(f" ERROR: no Total wall time in the output.\n") logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") @@ -720,7 +720,6 @@ def get_lammps_build_configuration(lmp_binary): launch LAMMPS using the configuration defined in the dictionary config with an input file TODO: - generate new reference values if needed - - wrap subprocess with try/catch to handle exceptions ''' def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): cmd_str = "" @@ -728,9 +727,22 @@ def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): cmd_str += config['mpiexec'] + " " + config['mpiexec_numproc_flag'] + " " + config['nprocs'] + " " cmd_str += lmp_binary + " -in " + input_file_name + " " + config['args'] logger.info(f" Executing: {cmd_str}") - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + # set a timeout (in seconds) for each run + timeout = 60 + if 'timeout' in config: + if config['timeout'] != "": + timeout = int(config['timeout']) - return cmd_str, p.stdout, p.stderr, p.returncode + try: + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True, timeout=timeout) + return cmd_str, p.stdout, p.stderr, p.returncode + + except subprocess.TimeoutExpired: + msg = f" Timeout for {cmd_str} ({timeout} s) expired" + logger.info(msg) + print(msg) + + return cmd_str, "", "", -1 ''' split a list into a list of N sublists From 1148f5f5c83af07b912c69c38850f9c4580935e5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 25 Aug 2024 16:41:26 -0500 Subject: [PATCH 38/93] cast into PosixPath to str before writing to file --- .github/workflows/full-regression.yml | 2 -- tools/regression-tests/get-quick-list.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 5e11fbbdd4..1dcccfcdcc 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -81,8 +81,6 @@ jobs: # restrict to official LAMMPS repository if: ${{ github.repository == 'lammps/lammps' }} runs-on: ubuntu-latest - env: - CCACHE_DIR: ${{ github.workspace }}/.ccache strategy: max-parallel: 2 matrix: diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get-quick-list.py index 672aa10f3a..9af91b139c 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get-quick-list.py @@ -264,7 +264,7 @@ if __name__ == "__main__": with open('input_list.txt', 'w') as f: for inp in inputs: print(inp) - f.write(inp + '\n') + f.write(str(inp) + '\n') print("Found changes to the following styles:") print("Commands: ", styles['command']) From a59ac7ec86587a5420e21f74ee178545f0b15442 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 26 Aug 2024 17:43:36 -0500 Subject: [PATCH 39/93] Reduced the timeout for quick reg tests --- tools/regression-tests/config_serial.yaml | 2 +- tools/regression-tests/run_tests.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index 746e74f226..ce984bb2b8 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -36,7 +36,7 @@ in.bucky-plus-cnt*, ] - timeout: 60 + timeout: 10 nugget: 1.0 epsilon: 1e-16 diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index f2d41af9de..d2a4559010 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -163,6 +163,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file matched_pattern = False for skipped_files in config['skip']: if '*' in skipped_files: + # check input script name e.g. in.*_imd* if fnmatch.fnmatch(input, skipped_files): matched_pattern = True break From f5ffb28a1f3d20b7a51ddcc093a9e4e7b1bd15f4 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 12:57:58 -0500 Subject: [PATCH 40/93] use the log file with 1 proc in serial runs, removed examples/bpm/impact/brokenDump --- examples/bpm/impact/brokenDump | 3914 --------------------------- tools/regression-tests/run_tests.py | 85 +- 2 files changed, 54 insertions(+), 3945 deletions(-) delete mode 100644 examples/bpm/impact/brokenDump diff --git a/examples/bpm/impact/brokenDump b/examples/bpm/impact/brokenDump deleted file mode 100644 index 0a2316cd5e..0000000000 --- a/examples/bpm/impact/brokenDump +++ /dev/null @@ -1,3914 +0,0 @@ -599 1817 5468 -600 1808 1815 -554 1938 5471 -548 5471 5591 -554 1938 5471 -571 5471 5590 -572 5471 5589 -599 1817 5468 -548 5471 5591 -571 5471 5590 -572 5471 5589 -608 1814 1815 -616 1815 1926 -622 5231 5350 -622 1818 1935 -635 1818 1929 -638 5468 5469 -648 1806 1923 -648 1818 1937 -649 1811 1812 -650 1822 5468 -650 1822 1935 -652 5469 5472 -655 1822 5589 -660 1812 1813 -662 1816 1929 -666 1810 1923 -672 1935 1937 -676 1810 1812 -676 1822 1938 -677 1806 1917 -677 1822 1937 -679 1812 1816 -683 1819 1937 -683 1816 1931 -684 1816 1937 -686 1810 1931 -695 1583 1584 -699 1821 1822 -700 1812 1929 -616 1815 1926 -635 1818 1929 -648 1806 1923 -650 1822 1935 -660 1923 1930 -662 1816 1929 -666 1810 1923 -671 1935 1936 -672 1935 1937 -676 1822 1938 -677 1806 1917 -683 1816 1931 -686 1810 1931 -687 2052 5709 -692 1923 2040 -692 2169 5709 -694 2052 5588 -696 1936 1940 -700 1812 1929 -605 5477 5596 -610 5467 5468 -611 5237 5350 -622 5231 5350 -628 5467 5474 -629 5473 5474 -635 5467 5472 -637 5473 5480 -638 5468 5469 -640 5474 5475 -646 5354 5467 -647 5467 5475 -650 1822 5468 -652 5347 5354 -652 5469 5472 -653 5479 5480 -658 5473 5478 -661 5472 5475 -661 5474 5478 -663 5480 5481 -665 5358 5478 -668 5227 5234 -669 5480 5593 -670 5347 5355 -671 5234 5347 -672 5479 5486 -674 5352 5354 -674 5475 5478 -677 5471 5472 -678 5478 5593 -679 5478 5481 -681 5352 5355 -682 5352 5475 -682 5468 5471 -687 5352 5357 -687 5486 5599 -689 5232 5234 -689 5481 5601 -690 5476 5478 -691 5480 5484 -693 5484 5599 -694 5471 5477 -700 5479 5484 -655 1822 5589 -669 5480 5593 -678 5478 5593 -687 5486 5599 -687 2052 5709 -692 2169 5709 -693 5484 5599 -693 5594 5600 -694 2052 5588 -695 5600 5714 -699 5828 5829 -700 5951 5958 -704 1806 1925 -706 1810 1925 -711 1816 1932 -711 1937 1940 -712 1800 1917 -716 1926 1931 -720 1457 1464 -721 1804 1917 -722 5469 5470 -722 1803 1920 -728 1820 5471 -729 1802 1809 -730 1925 1928 -734 1353 1469 -735 1923 1925 -737 5230 5231 -738 1804 1925 -739 1810 1926 -739 1816 1821 -740 1911 1918 -743 1822 5471 -745 1821 1937 -746 1458 1574 -755 1586 5231 -756 1469 4994 -756 1463 1470 -756 1467 1577 -756 1815 1931 -757 1804 1919 -758 1683 1793 -758 1800 1919 -760 1809 1810 -762 1692 1808 -763 5469 5471 -763 1932 1937 -765 1808 1810 -766 1914 1915 -769 1804 1806 -769 1821 1938 -771 1806 1809 -774 1926 1933 -776 1459 1574 -776 1568 1575 -776 1573 1574 -779 4994 5110 -779 5111 5229 -779 5229 5230 -781 1804 1807 -783 1797 1908 -783 1800 1806 -784 5112 5229 -787 1799 1804 -788 1799 1805 -789 1464 1580 -789 1802 1807 -795 1807 1810 -800 1674 1790 -800 1790 1797 -703 2057 5709 -704 5952 6071 -711 1816 1932 -711 1937 1940 -711 2052 5710 -712 1800 1917 -716 1926 1931 -717 2169 5829 -719 2277 2278 -721 1804 1917 -722 1803 1920 -724 2037 2038 -727 1940 2052 -730 1925 1928 -730 1940 2054 -731 1928 1930 -734 2169 5830 -735 1923 1925 -736 1928 1931 -736 1924 2040 -736 2044 2154 -736 2057 5710 -740 1911 1918 -745 1928 1934 -746 1923 1928 -746 1923 1931 -748 1921 2031 -749 1939 1940 -750 2170 2286 -751 1928 2048 -754 1928 2040 -755 1931 1933 -756 1917 1919 -756 1815 1931 -757 1804 1919 -758 1800 1919 -758 1933 2043 -759 1930 2040 -761 2057 5830 -762 1921 2038 -762 2283 2284 -763 1932 1937 -764 2287 2402 -766 1914 1915 -766 2040 2047 -769 1821 1938 -771 2161 2271 -774 1926 1933 -774 2406 2513 -778 2040 2042 -782 1930 1931 -784 2174 5829 -785 1912 2028 -788 2043 2048 -788 2041 2157 -790 1923 1924 -793 1940 2055 -795 2038 2039 -796 2174 5830 -799 1931 1934 -799 1937 1938 -799 2286 2287 -702 5114 5233 -702 5484 5601 -703 5470 5472 -704 5116 5117 -704 5255 5368 -707 5352 5470 -707 5495 5608 -710 5232 5237 -711 5232 5355 -713 5483 5602 -714 5478 5483 -716 5476 5477 -717 5232 5235 -718 5470 5471 -720 5227 5235 -721 5230 5232 -721 5599 5607 -722 5469 5470 -722 5482 5483 -725 5364 5484 -726 5123 5236 -728 1820 5471 -729 5366 5485 -729 5483 5601 -734 5350 5355 -737 5230 5231 -737 5350 5357 -739 5234 5235 -741 5374 5375 -742 5488 5495 -743 1822 5471 -745 5481 5484 -746 5114 5227 -749 5500 5501 -749 5606 5607 -751 5486 5605 -751 5604 5607 -751 5614 5615 -753 5479 5487 -760 5601 5602 -762 5113 5120 -763 5000 5110 -763 5469 5471 -763 5492 5605 -765 5108 5114 -767 5112 5227 -771 5472 5477 -773 5476 5596 -775 5381 5494 -778 5486 5487 -779 4994 5110 -779 5111 5229 -779 5229 5230 -779 5375 5488 -779 5470 5477 -781 5107 5108 -783 5116 5118 -784 5112 5229 -784 5242 5243 -784 5602 5604 -787 5368 5369 -787 5475 5477 -789 5233 5235 -791 5129 5242 -791 5602 5603 -792 5248 5249 -794 5485 5486 -795 5477 5478 -702 5484 5601 -703 2057 5709 -704 5952 6071 -708 5957 5964 -709 5593 5600 -711 2052 5710 -717 2169 5829 -718 5709 5829 -720 5736 5855 -721 5593 5601 -721 5599 5607 -722 5720 5721 -729 5483 5601 -730 5598 5600 -730 5828 5830 -733 5735 5742 -733 5709 5830 -733 5958 6077 -734 2169 5830 -736 2057 5710 -738 5714 5722 -740 5598 5601 -747 5605 5606 -749 5606 5607 -751 5486 5605 -751 5604 5607 -751 5614 5615 -751 5849 5856 -757 5841 5954 -759 5621 5741 -760 5601 5602 -761 5721 5722 -761 2057 5830 -761 5828 5833 -763 5492 5605 -769 5835 5948 -772 5721 5725 -776 5615 5735 -784 5602 5604 -784 2174 5829 -785 5833 5835 -786 5969 5976 -790 5726 5727 -791 5602 5603 -795 5831 5951 -796 2174 5830 -798 5605 5726 -799 5960 5961 -801 1568 1685 -801 1586 5229 -802 1463 1465 -802 1799 1800 -803 4991 5107 -803 1673 1680 -803 1685 1692 -803 5108 5112 -804 1799 1806 -804 1806 1807 -804 1911 1916 -805 1799 1802 -807 1807 1809 -808 1573 1575 -808 1586 1588 -808 5350 5351 -808 5351 5352 -810 1354 1469 -813 4994 5109 -813 1353 1468 -816 1580 1587 -816 1819 1821 -818 5351 5470 -819 1685 1690 -820 1689 1799 -821 1463 1468 -821 1911 1912 -823 1464 1574 -823 1575 1685 -823 1689 1806 -824 1471 5229 -824 1685 1687 -824 1799 1801 -825 1570 1575 -827 1583 1586 -827 1676 1677 -831 1463 1464 -833 1683 1801 -835 1805 1806 -836 5108 5109 -841 1586 1587 -841 1687 1807 -842 1686 1687 -843 1686 1802 -845 1681 1793 -847 1676 1681 -848 1471 5108 -849 1570 1690 -849 1687 1689 -849 1692 1802 -850 1684 1690 -851 1808 1809 -852 1676 1678 -853 1348 1465 -853 1464 1465 -854 1462 1464 -854 1464 1579 -854 1471 1583 -856 1348 1468 -857 1684 1687 -857 1687 1801 -857 1687 1799 -858 1570 1576 -859 1806 1810 -860 1585 5229 -860 1585 1588 -864 1462 1465 -865 1354 5109 -868 1681 1683 -870 1459 1576 -871 1573 1576 -872 1354 1468 -872 1683 1799 -873 1686 1801 -876 1585 1587 -877 1459 1579 -879 1687 1802 -882 1683 1686 -885 1584 1585 -885 1681 1801 -886 1466 5108 -886 1583 1585 -893 4995 5109 -896 1459 1464 -900 1354 1466 -900 1682 1684 -801 2045 2047 -802 2041 2158 -802 2396 2403 -803 1929 1931 -803 2039 2154 -804 1911 1916 -805 2045 2048 -805 2154 2159 -808 2040 2048 -812 1918 1919 -812 2045 2051 -812 2045 2157 -814 2040 2045 -814 2154 2161 -817 1928 1933 -818 1932 1938 -819 1932 1934 -819 2047 2050 -821 1911 1912 -821 2045 2165 -821 2156 2161 -822 2048 2050 -823 2286 5829 -825 2055 5710 -825 2047 2157 -828 2036 2038 -829 2156 2159 -829 2172 5830 -831 2161 2276 -831 2274 2281 -838 2167 2277 -839 1931 1932 -839 2022 2029 -841 1938 1939 -842 2159 2161 -842 2164 2280 -844 2276 2277 -848 2039 2153 -849 6191 6307 -852 2049 2050 -855 2050 2051 -856 2047 2165 -859 2161 2162 -861 5710 5712 -861 2157 2164 -863 5830 5832 -868 2162 2276 -869 2050 2165 -873 2631 6191 -874 5831 5832 -875 2276 2282 -876 2031 2036 -876 2290 2399 -879 2044 2161 -879 5712 5830 -881 2163 2165 -881 2161 2277 -884 2051 2165 -884 2507 2508 -885 2055 5591 -887 2051 2166 -889 2277 2279 -890 2160 2161 -890 2519 2520 -892 1933 1934 -896 2163 2164 -897 2393 2394 -897 2394 2501 -898 2282 2284 -898 2405 5952 -803 4991 5107 -803 5108 5112 -803 5118 5123 -803 5366 5487 -806 5477 5590 -808 5350 5351 -808 5351 5352 -812 5507 5620 -818 5351 5470 -822 5115 5116 -822 5122 5123 -822 5483 5596 -822 5484 5602 -824 5247 5248 -825 5365 5372 -825 5364 5487 -826 5129 5247 -829 5255 5373 -829 5364 5370 -832 5477 5595 -832 5483 5484 -832 5484 5486 -832 5611 5612 -834 5123 5241 -837 5124 5129 -840 5373 5374 -841 5000 5115 -842 5250 5255 -843 5130 5247 -843 5349 5350 -844 5122 5124 -846 5366 5370 -848 5248 5250 -848 5363 5483 -850 5249 5250 -853 5499 5500 -856 5365 5370 -859 5118 5121 -859 5235 5238 -859 5481 5482 -862 5124 5127 -865 5230 5237 -865 5256 5373 -865 5367 5370 -869 4995 5110 -869 5476 5483 -874 5350 5352 -875 5250 5256 -876 5374 5376 -877 5364 5482 -877 5376 5381 -879 5130 5250 -884 5250 5253 -884 5365 5373 -888 5001 5115 -891 5364 5369 -891 5381 5499 -891 5481 5483 -893 4995 5109 -894 4990 4997 -897 4997 5113 -898 5245 5250 -899 4995 5115 -900 5245 5247 -900 5371 5378 -803 5604 5609 -803 5970 6089 -805 5620 5627 -806 5477 5590 -810 5606 5610 -811 6196 6203 -812 5507 5620 -813 5612 5726 -815 6197 6313 -816 5856 5975 -816 6083 6090 -823 2286 5829 -825 2055 5710 -829 2172 5830 -832 5477 5595 -832 5611 5612 -832 5854 5855 -833 6084 6202 -833 6197 6307 -836 5971 5976 -837 5835 5955 -840 5971 6089 -840 6084 6090 -841 5732 5733 -843 5969 5974 -847 5737 5742 -847 5958 6071 -848 6075 6187 -849 6201 6202 -849 6085 6202 -849 6191 6307 -850 5727 5840 -852 5954 5955 -853 5855 5862 -855 5609 5723 -856 5610 5726 -858 6201 6203 -859 5740 5741 -861 5710 5712 -862 5604 5728 -862 5955 6074 -862 5955 5959 -863 5830 5832 -863 5954 5956 -864 5737 5855 -865 5955 5956 -865 5953 6071 -865 6088 6089 -866 5970 6088 -866 6083 6085 -866 6197 6312 -867 5835 5956 -867 5974 5976 -867 6083 6088 -868 5961 5967 -869 6085 6090 -871 5610 5728 -871 5954 5959 -872 5606 5728 -872 5740 5742 -872 5954 6074 -873 5857 5862 -873 6088 6090 -874 5831 5832 -877 5857 5975 -877 5948 5956 -877 6068 6075 -878 6074 6076 -879 5712 5830 -880 5974 5975 -881 5833 5836 -882 6192 6307 -883 5955 6076 -885 2055 5591 -888 5954 5957 -888 6201 6204 -891 6198 6203 -893 5961 6074 -894 5609 5728 -895 6198 6313 -897 5740 5743 -898 5830 5833 -898 5959 5961 -900 6068 6076 -901 1683 1684 -904 1570 1682 -906 1815 1816 -907 1677 1793 -913 1570 1572 -916 1571 1573 -918 1572 1573 -925 1467 1583 -928 1459 1571 -931 1582 1585 -937 1459 1461 -938 1810 1815 -942 1580 1582 -943 1566 1683 -944 1465 1582 -945 1560 1670 -949 1821 1932 -953 1461 1462 -958 1821 1939 -962 1577 1585 -965 1676 1683 -967 1566 1682 -968 1460 1465 -978 1460 1462 -979 1813 1815 -984 1348 1460 -986 1350 1468 -989 1565 1572 -994 1455 1571 -902 2165 2171 -904 2284 2285 -905 2277 2284 -907 2279 2282 -908 6191 6306 -910 2164 2165 -910 2285 2399 -912 1933 2048 -912 2400 2513 -914 2282 2398 -915 2163 2168 -916 2162 2164 -918 2033 2036 -920 2274 2276 -921 2401 2513 -923 2166 2171 -923 2164 2274 -925 1915 1916 -925 2274 2279 -926 2289 2290 -928 2056 2166 -929 1916 2031 -929 5712 5713 -929 2156 2158 -929 2158 2276 -931 2151 2156 -931 2279 2281 -932 2151 2158 -933 2030 2036 -935 2285 2398 -936 2162 2168 -936 2168 2170 -938 2165 2168 -940 2513 2518 -941 2399 2404 -949 1821 1932 -949 2274 2275 -949 2518 2520 -954 2056 2173 -957 2166 2168 -958 1821 1939 -958 5711 5712 -958 2274 2282 -959 2520 6191 -960 2399 2405 -961 2281 2398 -964 1932 1939 -964 1933 1939 -965 2170 2280 -967 2151 2153 -969 2168 2171 -969 2171 2173 -969 2512 2513 -970 2396 2398 -970 2521 2631 -971 1933 2049 -974 5712 5832 -974 2151 2152 -974 5832 5833 -977 2158 2268 -977 6192 6306 -985 2519 2521 -987 2289 5832 -990 2035 2153 -991 2281 2390 -995 5829 5833 -996 5712 5831 -997 2512 2514 -999 2172 2173 -904 5123 5242 -904 5252 5253 -904 5250 5252 -905 5245 5248 -906 5376 5379 -911 5245 5253 -912 5501 5502 -913 5245 5252 -913 5371 5372 -916 5121 5124 -917 5113 5121 -919 5118 5124 -920 5252 5256 -921 5130 5245 -922 5246 5250 -925 5367 5369 -926 5120 5121 -926 5245 5246 -926 5371 5374 -929 5123 5124 -935 5367 5368 -938 5363 5482 -939 5119 5124 -943 5132 5245 -944 5126 5130 -944 5256 5371 -945 5382 5499 -946 5363 5369 -948 5126 5247 -948 5502 5620 -953 5119 5239 -956 5117 5230 -956 5362 5368 -956 5499 5502 -957 5232 5350 -960 4995 5107 -961 5502 5619 -963 5001 5113 -963 5119 5120 -965 5118 5233 -965 5378 5381 -968 5371 5379 -971 5126 5127 -972 5116 5123 -974 5378 5379 -992 5125 5126 -902 5737 5860 -904 5728 5729 -905 5726 5734 -906 5971 6094 -907 5723 5730 -908 5732 5852 -911 5831 5833 -912 5728 5734 -912 5852 5855 -915 5829 5830 -916 5974 5977 -921 5742 5855 -923 5833 5838 -925 5833 5956 -926 5953 5956 -926 6198 6318 -927 5620 5625 -927 5723 5843 -927 5953 5955 -929 5712 5713 -929 5857 5980 -930 5728 5730 -930 5974 5980 -930 6088 6094 -932 6085 6207 -933 5733 5734 -933 5961 6082 -934 6088 6207 -934 6085 6091 -935 5953 6076 -936 5965 6088 -937 5728 5731 -939 5833 5951 -939 6073 6075 -939 6198 6312 -940 5956 6076 -944 6088 6091 -946 5726 5731 -946 5733 5737 -948 5502 5620 -949 5621 5622 -949 5831 5838 -950 5857 5860 -951 5724 5843 -951 6192 6312 -952 5727 5731 -952 5959 5962 -954 5852 5860 -955 6080 6081 -957 5718 5838 -957 5730 5736 -958 5711 5712 -959 5729 5730 -961 5502 5619 -964 5836 5838 -966 5739 5852 -966 5951 5953 -967 5855 5860 -967 6192 6309 -968 5620 5622 -970 5731 5846 -971 5958 6076 -974 5739 5860 -974 5832 5833 -974 5953 5958 -975 5724 5844 -975 5837 5838 -977 5725 5730 -977 6192 6306 -979 5737 5852 -980 5731 5733 -985 5730 5849 -986 5725 5843 -987 6199 6207 -987 2289 5832 -988 5837 5844 -989 5619 5625 -993 5843 5849 -993 6193 6194 -995 5730 5731 -995 5837 5839 -995 5829 5833 -996 5712 5831 -999 5619 5622 -1000 6199 6204 -1004 1460 1461 -1006 1465 1577 -1020 1580 1581 -1026 1574 1581 -1027 1454 1461 -1028 1344 1460 -1033 1579 1580 -1043 1574 1579 -1047 1461 1465 -1047 1465 1579 -1049 1350 1460 -1056 1350 1466 -1057 1681 1684 -1062 1799 1807 -1085 1343 1460 -1086 1574 1576 -1093 1466 4991 -1002 2401 2404 -1004 2170 2288 -1005 2507 2514 -1006 2404 2406 -1007 2172 5832 -1008 2173 2174 -1010 2033 2035 -1010 2405 2406 -1014 5950 5951 -1019 2521 6189 -1021 2521 6191 -1024 2035 2145 -1024 2510 2517 -1028 2396 2401 -1032 2028 2145 -1032 2515 2518 -1034 2162 2282 -1034 2512 2515 -1034 2518 2521 -1039 5829 5950 -1039 2510 2515 -1042 2028 2033 -1047 2167 2168 -1048 2401 2403 -1051 2507 2509 -1057 2509 2512 -1058 2028 2029 -1059 1916 2030 -1060 2401 2407 -1061 2396 2397 -1061 2506 2507 -1062 2174 2289 -1062 2406 2407 -1071 2504 2507 -1073 2517 2518 -1074 5832 5950 -1077 2507 2512 -1080 2274 2277 -1081 2028 2030 -1085 2511 2512 -1086 2403 2510 -1088 2394 2506 -1091 2395 2507 -1092 2162 2277 -1092 2516 2517 -1092 6190 6191 -1093 2166 2173 -1100 2516 2518 -1003 5003 5113 -1006 5252 5365 -1008 5118 5120 -1010 5119 5126 -1014 5251 5252 -1017 5378 5382 -1025 5258 5371 -1037 5126 5245 -1040 5377 5378 -1046 5362 5369 -1047 5498 5502 -1049 5118 5238 -1064 5235 5237 -1073 5382 5497 -1075 5118 5241 -1080 4997 5001 -1088 5497 5502 -1091 4995 4997 -1094 5497 5505 -1095 5236 5237 -1001 5730 5850 -1001 5848 5849 -1004 5730 5848 -1005 6087 6207 -1006 5729 5731 -1007 5739 5858 -1007 5835 5838 -1007 5972 5975 -1008 5622 5740 -1009 5731 5848 -1009 5739 5743 -1010 5727 5730 -1010 5731 5849 -1013 5733 5854 -1014 5950 5951 -1017 5725 5848 -1017 5846 5849 -1019 5731 5736 -1019 5848 5854 -1019 5973 6094 -1019 2521 6189 -1020 5842 5843 -1020 5973 5977 -1020 6087 6091 -1021 5731 5851 -1021 6086 6091 -1023 6086 6094 -1024 5852 5858 -1025 5725 5845 -1026 5849 5854 -1026 5849 5850 -1028 5852 5859 -1029 5736 5854 -1031 5731 5854 -1031 5842 5844 -1034 5849 5851 -1037 5730 5843 -1038 6200 6204 -1039 6198 6310 -1048 5836 5839 -1049 5731 5734 -1049 5842 5845 -1049 5733 5852 -1049 5972 5977 -1053 6068 6073 -1056 5736 5737 -1059 5736 5849 -1059 5737 5854 -1060 5839 5842 -1064 5610 5731 -1067 5727 5848 -1068 5729 5849 -1069 5857 5859 -1071 5841 5842 -1072 5972 5980 -1073 5834 5839 -1074 6200 6318 -1076 5859 5972 -1077 6199 6205 -1078 6194 6312 -1079 5738 5743 -1083 5835 5839 -1084 5972 5978 -1086 6075 6195 -1089 5972 5979 -1089 6193 6310 -1092 5618 5622 -1092 5857 5972 -1092 6190 6191 -1115 1349 1466 -1131 4991 4995 -1133 1574 1575 -1143 1354 4991 -1150 1350 4991 -1154 4990 4991 -1157 4991 4992 -1158 1908 1913 -1167 1905 1906 -1171 1349 4991 -1179 1349 4874 -1180 1905 1910 -1184 4874 4991 -1184 5107 5109 -1186 1349 4992 -1194 1905 1907 -1194 1905 1908 -1197 1574 1580 -1199 4991 5109 -1102 2277 2282 -1105 2167 2282 -1107 1912 2030 -1107 2174 2288 -1107 2400 2507 -1108 5951 5952 -1108 2394 2507 -1110 2510 2511 -1115 2403 2518 -1119 1913 2030 -1120 2174 5950 -1120 2405 2519 -1121 2516 2521 -1122 2041 2159 -1126 5829 5948 -1129 1913 1915 -1133 2407 2518 -1137 1912 2022 -1137 2151 2159 -1138 2166 2283 -1138 2521 6188 -1146 6069 6073 -1152 1910 1912 -1158 1908 1913 -1165 6188 6306 -1167 1905 1906 -1168 1910 1913 -1180 1905 1910 -1181 2407 2519 -1181 6069 6187 -1186 2045 2159 -1187 2174 2286 -1188 2504 2511 -1192 2628 6188 -1194 1905 1907 -1198 2519 6072 -1200 1899 1906 -1200 2039 2159 -1113 5230 5235 -1114 5502 5617 -1117 4996 4997 -1130 5236 5238 -1131 4991 4995 -1136 5249 5368 -1138 5247 5250 -1154 4990 4991 -1155 5384 5497 -1156 5617 5622 -1166 4997 4998 -1171 5250 5367 -1184 5107 5109 -1184 5236 5243 -1185 5617 5625 -1199 5118 5236 -1103 6192 6304 -1108 5951 5952 -1109 6194 6310 -1114 6070 6071 -1114 6070 6076 -1115 5834 5841 -1115 6087 6205 -1119 5972 6092 -1122 5840 5842 -1124 5972 5974 -1126 5829 5948 -1126 5973 6092 -1128 5745 5858 -1130 5725 5840 -1135 5622 5738 -1145 5855 5857 -1146 6069 6073 -1153 5739 5745 -1153 5853 5972 -1156 5617 5622 -1157 6200 6310 -1159 5973 6093 -1160 6086 6093 -1165 5855 5856 -1167 5727 5846 -1174 5738 5745 -1181 6069 6187 -1185 5617 5625 -1186 6070 6073 -1188 5738 5746 -1198 2519 6072 -1200 5721 5840 -1200 5835 5954 -1205 1349 1354 -1214 1809 1920 -1217 1240 1349 -1229 1792 1907 -1229 1792 1908 -1235 1686 1796 -1236 1804 1809 -1244 5109 5112 -1245 1788 1907 -1246 5109 5110 -1246 1809 1925 -1251 1809 1926 -1253 1788 1899 -1254 1350 1354 -1254 1925 1926 -1256 1791 1792 -1278 1348 1350 -1280 1680 1797 -1280 1790 1792 -1288 1680 1796 -1290 1788 1791 -1300 1349 1350 -1205 6188 6304 -1208 2174 5832 -1211 2519 6189 -1214 1809 1920 -1215 2041 2045 -1229 1792 1907 -1243 1926 1927 -1245 1788 1907 -1251 1809 1926 -1253 1788 1899 -1254 1925 1926 -1258 5832 5838 -1259 2042 2045 -1262 2167 2283 -1263 2039 2044 -1267 2040 2041 -1274 1927 1928 -1278 2282 2283 -1282 2166 2167 -1215 5617 5624 -1228 5504 5617 -1231 5236 5241 -1243 5250 5365 -1244 5109 5112 -1246 5109 5110 -1268 5497 5504 -1205 6188 6304 -1211 2519 6189 -1212 6194 6304 -1214 5624 5738 -1215 5617 5624 -1224 6189 6191 -1228 6194 6311 -1258 5832 5838 -1259 6191 6192 -1261 5958 5959 -1269 5726 5728 -1276 6199 6206 -1301 1681 1796 -1305 1790 1795 -1315 1680 1795 -1319 1343 1350 -1323 1681 1795 -1329 1782 1899 -1333 1350 1351 -1354 1789 1795 -1354 1789 1792 -1354 5110 5111 -1355 1675 1795 -1359 1786 1788 -1367 1675 1792 -1372 1787 1790 -1378 1786 1899 -1380 1786 1907 -1390 1782 1893 -1393 1788 1789 -1306 1924 1928 -1309 2519 6191 -1310 1928 2043 -1312 5832 5951 -1313 2165 2167 -1320 2162 2167 -1321 1928 2042 -1329 1782 1899 -1378 1786 1899 -1380 1786 1907 -1316 5111 5112 -1354 5110 5111 -1382 5501 5619 -1384 5501 5620 -1309 2519 6191 -1312 5832 5951 -1317 6200 6316 -1338 5733 5846 -1364 5606 5726 -1368 5619 5620 -1372 5620 5621 -1378 5614 5620 -1382 5501 5619 -1384 5501 5620 -1396 5619 5621 -1403 1782 1901 -1405 1677 1681 -1410 1804 1920 -1415 1787 1789 -1427 1677 1678 -1445 1675 1677 -1447 1787 1788 -1450 5111 5230 -1451 1675 1787 -1472 1671 1787 -1477 1670 1677 -1495 1462 1463 -1499 1469 5110 -1410 1804 1920 -1416 2279 2284 -1425 2044 2159 -1445 2284 2393 -1458 2516 6187 -1472 2031 2038 -1484 2284 2398 -1486 2032 2038 -1488 2042 2043 -1495 1927 2043 -1404 5368 5370 -1430 5006 5116 -1446 5116 5121 -1450 5111 5230 -1479 4999 5116 -1489 5129 5248 -1499 1469 5110 -1416 5621 5740 -1420 5614 5621 -1435 5616 5621 -1439 5733 5853 -1458 2516 6187 -1516 1347 1463 -1520 1781 1788 -1557 1338 1448 -1558 1348 1463 -1580 1560 1678 -1593 1454 1455 -1594 1782 1788 -1598 1564 1678 -1504 2398 2399 -1510 2038 2148 -1512 2033 2038 -1512 6069 6189 -1516 2393 2399 -1521 2284 2399 -1543 2033 2153 -1556 2037 2044 -1567 2038 2154 -1568 2038 2153 -1598 2042 2044 -1598 2504 2509 -1508 5000 5116 -1516 5129 5130 -1530 5127 5130 -1538 5001 5116 -1550 4880 4996 -1567 5128 5129 -1568 5128 5135 -1574 5128 5130 -1589 5009 5125 -1512 6069 6189 -1574 6072 6073 -1606 1459 1462 -1610 1353 1463 -1612 1558 1560 -1618 1553 1670 -1626 1679 1684 -1630 1448 1456 -1631 1684 1686 -1635 1553 1554 -1637 1455 1456 -1642 1553 1558 -1644 1554 1664 -1645 1558 1561 -1654 1557 1673 -1661 1439 1446 -1661 1440 1446 -1664 1440 1556 -1666 1455 1459 -1669 1547 1548 -1671 1553 1555 -1675 1556 1557 -1676 1680 1790 -1678 1673 1674 -1680 1554 1555 -1684 1437 1547 -1685 1564 1679 -1690 1331 1332 -1690 1555 1558 -1690 1679 1685 -1694 1453 1456 -1699 1563 1564 -1620 2275 2390 -1630 2390 2391 -1630 2518 2519 -1630 2506 2509 -1631 2275 2279 -1632 2511 2616 -1637 2390 2392 -1637 2399 2400 -1638 2275 2391 -1640 2397 2504 -1647 2262 2269 -1648 2384 2391 -1649 2505 2509 -1662 2276 2279 -1662 2504 2512 -1664 2029 2030 -1675 2279 2392 -1677 2395 2506 -1677 2505 2616 -1678 2406 2519 -1681 2392 2395 -1683 2263 2378 -1686 2278 2279 -1693 2391 2395 -1698 2506 2508 -1699 2504 2616 -1700 2510 2518 -1603 5121 5123 -1604 5125 5127 -1620 5013 5125 -1628 5009 5013 -1633 5251 5258 -1650 5008 5009 -1655 5010 5013 -1660 5127 5128 -1660 5256 5374 -1669 5122 5128 -1670 5256 5379 -1672 5013 5127 -1673 5008 5010 -1676 5255 5374 -1678 5256 5261 -1679 5012 5128 -1680 4892 5008 -1682 5138 5257 -1682 5255 5261 -1684 5258 5379 -1691 5377 5382 -1693 5254 5255 -1694 5012 5127 -1697 5258 5377 -1700 5254 5256 -1607 6071 6072 -1702 1561 1563 -1704 1569 1679 -1709 1554 1672 -1710 1336 1338 -1715 1437 1555 -1717 1563 1569 -1719 1672 1673 -1720 1556 1561 -1720 1557 1558 -1722 1440 1441 -1723 1441 1555 -1723 1547 1554 -1723 1552 1664 -1724 1329 1445 -1726 1439 1441 -1734 1563 1679 -1741 1439 1444 -1742 1674 1675 -1744 1675 1790 -1745 1441 1556 -1747 1681 1686 -1748 1435 1441 -1749 1435 1437 -1751 1569 1686 -1755 1217 1218 -1756 1329 1444 -1763 1679 1686 -1766 1329 1335 -1770 1438 1441 -1771 1224 1331 -1773 1562 1563 -1776 1670 1671 -1781 1453 1459 -1783 1331 1338 -1791 1437 1438 -1792 1430 1547 -1793 1555 1556 -1794 1436 1438 -1800 1459 1573 -1800 1563 1678 -1701 2394 2395 -1701 2385 2498 -1701 2492 2499 -1703 2030 2033 -1703 2610 2616 -1705 2278 2394 -1710 2027 2029 -1711 2023 2139 -1711 2512 2518 -1714 2506 2618 -1714 2505 2618 -1715 2391 2504 -1715 2407 6189 -1719 2389 2391 -1719 2501 2508 -1722 2250 2257 -1730 2610 2617 -1736 2385 2500 -1737 2504 2506 -1739 2503 2508 -1740 2399 2406 -1742 2389 2506 -1743 2389 2501 -1744 2401 2518 -1745 2401 2406 -1746 2031 2033 -1748 2610 2618 -1752 2503 2618 -1753 2389 2498 -1756 2400 2406 -1757 2391 2392 -1757 2493 2604 -1758 2612 2618 -1759 2389 2500 -1761 2386 2500 -1762 2492 2500 -1762 2504 2505 -1762 2503 2613 -1763 2610 2615 -1764 2615 2618 -1765 2140 2256 -1766 2388 2389 -1767 2611 2721 -1771 2503 2615 -1772 2383 2500 -1772 2502 2508 -1779 2399 2401 -1781 2032 2033 -1784 2492 2497 -1786 2611 2615 -1787 2027 2147 -1787 2387 2388 -1787 2383 2389 -1789 2493 2497 -1790 2502 2613 -1791 2612 2615 -1792 2027 2139 -1792 2386 2388 -1793 2392 2393 -1797 2612 2613 -1800 2391 2506 -1703 5258 5262 -1704 5251 5259 -1710 4896 5008 -1714 5138 5259 -1714 5253 5254 -1715 5377 5384 -1718 5256 5259 -1719 5012 5129 -1720 4891 4898 -1722 5258 5259 -1727 5258 5264 -1730 5010 5011 -1731 5377 5385 -1732 5012 5013 -1733 4896 4898 -1736 5264 5385 -1738 5264 5383 -1739 5011 5012 -1743 5136 5259 -1744 5257 5264 -1747 4896 5016 -1752 5257 5258 -1757 5136 5253 -1758 5136 5254 -1761 5263 5270 -1762 5135 5248 -1765 5135 5253 -1769 5135 5254 -1774 5138 5142 -1774 5251 5256 -1776 5262 5385 -1777 5136 5141 -1780 5000 5001 -1788 5137 5257 -1790 5136 5142 -1795 4898 4899 -1715 2407 6189 -1736 6072 6189 -1756 5957 5958 -1761 6072 6190 -1801 1336 1456 -1811 1430 1431 -1814 1670 1672 -1816 1430 1437 -1816 1554 1558 -1818 1458 1459 -1822 1670 1675 -1823 1430 1435 -1829 1110 1217 -1829 1324 1444 -1829 1457 1458 -1834 1672 1675 -1842 1558 1672 -1846 1456 1459 -1849 1552 1554 -1851 1324 1436 -1854 1552 1558 -1861 1435 1438 -1863 1324 1326 -1866 1675 1789 -1874 1454 1459 -1877 880 887 -1877 1320 1436 -1877 1446 1563 -1878 1671 1675 -1881 1457 1459 -1887 1554 1670 -1888 862 869 -1888 874 881 -1888 1329 1330 -1892 1671 1789 -1893 1304 1311 -1894 1314 1424 -1894 1671 1672 -1897 868 875 -1899 1671 1674 -1802 2721 2723 -1807 2721 2722 -1808 2715 2722 -1817 2383 2386 -1818 2615 2723 -1819 2492 2495 -1821 2032 2147 -1822 2133 2140 -1822 2383 2385 -1825 2406 2518 -1826 2383 2388 -1826 2385 2492 -1827 2381 2386 -1829 2728 2829 -1837 2032 2148 -1837 2272 2381 -1841 2378 2383 -1842 2614 2615 -1844 2721 2726 -1851 2267 2383 -1852 2267 2381 -1853 2244 2251 -1858 2391 2498 -1859 2278 2393 -1862 2726 2728 -1871 2378 2379 -1871 2395 2504 -1875 2134 2250 -1884 2835 2836 -1885 2378 2380 -1886 2267 2380 -1891 2726 2729 -1894 2263 2380 -1898 2612 2614 -1900 2266 2267 -1803 4896 5010 -1806 5130 5135 -1809 5256 5258 -1835 5137 5144 -1836 5269 5270 -1837 5134 5141 -1842 5134 5136 -1844 5137 5142 -1845 5139 5141 -1847 5139 5142 -1848 5027 5144 -1851 5130 5133 -1852 4777 4784 -1853 5250 5373 -1860 4896 5011 -1860 5027 5143 -1863 5137 5140 -1864 5139 5140 -1866 5137 5145 -1877 5027 5145 -1880 5135 5136 -1883 5377 5379 -1886 5026 5033 -1888 4784 4891 -1895 5025 5145 -1898 4891 4899 -1901 1327 1444 -1902 1197 1310 -1902 1670 1678 -1904 1446 1556 -1906 1675 1678 -1908 780 886 -1910 1319 1320 -1913 1673 1675 -1916 1331 1339 -1917 863 971 -1919 683 785 -1920 868 869 -1921 1319 1324 -1921 1678 1680 -1921 1669 1671 -1925 1675 1680 -1928 880 881 -1928 1324 1327 -1935 1671 1781 -1936 1082 1089 -1938 1664 1671 -1941 779 786 -1941 1196 1203 -1942 867 869 -1942 868 870 -1944 1327 1329 -1946 880 882 -1946 1558 1678 -1951 965 972 -1951 1305 1421 -1951 1680 1681 -1955 879 881 -1956 768 874 -1957 864 869 -1957 1321 1327 -1961 1083 1196 -1964 689 785 -1965 1322 1327 -1966 874 876 -1966 1212 1319 -1966 1319 1321 -1969 874 875 -1971 880 885 -1974 780 885 -1975 873 875 -1978 864 971 -1979 689 791 -1983 978 1088 -1983 1205 1206 -1983 1210 1324 -1985 763 870 -1985 1328 1329 -1985 1673 1678 -1986 1415 1422 -1989 1103 1104 -1989 1679 1680 -1995 1210 1212 -1997 780 781 -1997 1304 1309 -1998 970 971 -1999 779 781 -2000 873 876 -1919 2265 2266 -1923 2516 6189 -1927 2931 2932 -1930 2611 2614 -1931 2808 2809 -1932 2263 2372 -1934 2264 2266 -1934 2815 2913 -1937 2261 2263 -1937 2829 2837 -1939 2251 2366 -1944 2259 2265 -1945 2472 2577 -1949 2465 2466 -1949 2502 2607 -1952 2261 2264 -1952 2925 2926 -1954 2352 2459 -1956 2583 2584 -1957 2821 2919 -1958 2257 2372 -1962 2345 2346 -1962 2695 2701 -1963 2257 2373 -1964 2229 2230 -1965 2701 2802 -1965 2829 2836 -1969 2257 2261 -1970 2810 2913 -1972 2256 2261 -1973 2366 2372 -1975 1995 1996 -1975 2144 2261 -1976 2919 2920 -1977 2694 2695 -1977 2726 2837 -1979 2809 2810 -1979 3034 3125 -1982 2257 2374 -1985 2113 2229 -1987 2924 2926 -1989 2257 2366 -1991 2149 2265 -1992 1879 1995 -1992 2230 2345 -1992 2467 2472 -1992 2807 2809 -1993 2913 2918 -1993 3131 3132 -1994 2112 2113 -1994 2577 2582 -1999 2465 2467 -1904 4782 4784 -1907 5031 5143 -1914 5025 5140 -1917 4896 4899 -1917 4896 4901 -1920 5024 5134 -1922 5027 5031 -1923 4784 4785 -1927 4782 4899 -1929 4465 4564 -1931 5024 5139 -1933 4805 4912 -1944 5033 5143 -1948 4452 4453 -1948 5031 5145 -1950 4916 5032 -1951 5024 5141 -1953 4459 4558 -1953 5019 5024 -1957 5033 5034 -1961 5025 5030 -1962 4895 5011 -1964 5024 5140 -1965 4704 4705 -1971 4471 4570 -1974 4894 4900 -1981 4440 4441 -1982 4894 4901 -1989 4680 4686 -1995 4894 4899 -1995 5032 5033 -1998 5024 5030 -2000 4337 4434 -1913 5956 5959 -1923 2516 6189 -1926 5957 5959 -1995 6080 6082 -1999 5965 6082 -2004 684 785 -2004 867 870 -2005 1197 1309 -2011 695 791 -2011 4330 4331 -2012 1643 1650 -2013 1199 1205 -2014 1210 1321 -2015 1532 1539 -2016 1650 1760 -2017 1197 1198 -2017 1206 1319 -2018 970 972 -2018 1533 1649 -2018 1878 1879 -2019 879 882 -2022 689 790 -2022 966 1076 -2023 688 695 -2024 694 4331 -2024 683 784 -2024 876 879 -2026 775 885 -2026 867 976 -2029 1760 1767 -2031 1091 1092 -2034 1210 1327 -2035 870 873 -2035 1761 1878 -2037 690 791 -2037 1206 1210 -2037 1415 1420 -2041 779 784 -2041 1210 1216 -2042 864 973 -2043 778 885 -2043 1070 1077 -2043 1210 1322 -2046 694 695 -2046 1304 1306 -2047 967 972 -2048 865 870 -2050 1215 1322 -2051 878 879 -2051 1760 1765 -2052 970 973 -2052 1305 1306 -2052 1645 1650 -2053 1235 1236 -2054 864 976 -2055 694 696 -2055 1422 1532 -2055 1533 1534 -2059 1532 1537 -2059 1877 1878 -2060 778 781 -2060 1209 1210 -2060 1305 1420 -2062 693 695 -2062 1122 1235 -2063 1196 1197 -2064 1760 1878 -2065 678 784 -2066 1235 1237 -2066 1417 1422 -2067 684 787 -2067 967 1076 -2068 1532 1649 -2069 689 695 -2071 1236 1240 -2071 1532 1534 -2072 684 790 -2072 1417 1537 -2073 1098 1205 -2075 877 879 -2075 1192 1198 -2076 684 784 -2080 4329 4331 -2081 1235 1240 -2082 690 790 -2084 866 870 -2084 1648 1649 -2085 1529 1532 -2085 1648 1650 -2085 1761 1762 -2085 1762 1767 -2086 680 784 -2088 684 782 -2088 690 695 -2089 1531 1534 -2090 1192 1309 -2096 1417 1420 -2097 690 796 -2099 1300 1420 -2099 1534 1648 -2002 2464 2465 -2002 2611 2723 -2004 2259 2264 -2004 2802 2807 -2005 2694 2696 -2006 2695 2696 -2007 2467 2470 -2009 2918 2920 -2010 2693 2694 -2011 2258 2261 -2011 2347 2352 -2011 2696 2802 -2012 2344 2345 -2013 2230 2231 -2013 2352 2464 -2014 2696 2701 -2014 2926 2927 -2015 2584 2688 -2016 3138 3225 -2017 1996 2112 -2017 2113 2114 -2017 2228 2229 -2018 1878 1879 -2018 2582 2584 -2019 2255 2366 -2020 2584 2694 -2020 2584 2585 -2022 2353 2464 -2027 2255 2257 -2028 2810 2912 -2029 1996 1997 -2030 2607 2612 -2031 2579 2582 -2032 2919 2926 -2036 1994 1995 -2036 2345 2347 -2038 2579 2585 -2039 2256 2259 -2039 2467 2582 -2041 2347 2353 -2042 2111 2112 -2046 2347 2350 -2046 2693 2695 -2050 2516 6188 -2051 2231 2344 -2052 2149 2259 -2054 2920 2921 -2055 2585 2693 -2057 1879 1880 -2059 1877 1878 -2061 2696 2804 -2062 2804 2807 -2064 2467 2469 -2065 2137 2247 -2065 2143 2149 -2065 2144 2259 -2066 1997 2111 -2068 2228 2231 -2069 2142 2149 -2070 2609 2612 -2070 2696 2801 -2073 2114 2228 -2074 2462 2467 -2079 2921 3021 -2081 1994 1997 -2082 2111 2114 -2083 1880 1994 -2085 2258 2260 -2086 1877 1880 -2092 2462 2464 -2094 2574 2582 -2096 2609 2611 -2098 2258 2259 -2001 4787 4894 -2005 5023 5025 -2011 4330 4331 -2014 4577 4680 -2015 4464 4465 -2019 5254 5374 -2020 5031 5033 -2023 5031 5151 -2025 4780 4781 -2029 4349 4446 -2034 5023 5024 -2035 4782 4787 -2039 5254 5261 -2040 4783 4785 -2041 4440 4447 -2041 5025 5028 -2043 4672 4783 -2051 4361 4458 -2055 4785 4788 -2060 4686 4687 -2061 4459 4564 -2063 5027 5028 -2066 4687 4693 -2066 5022 5023 -2073 5020 5028 -2089 4459 4563 -2091 5261 5374 -2092 5034 5037 -2094 4676 4783 -2094 5254 5259 -2096 4915 4922 -2099 4907 5017 -2100 4440 4442 -2012 5962 5964 -2042 5964 5965 -2049 5963 5964 -2050 2516 6188 -2102 1760 1762 -2102 1762 1877 -2104 1121 1122 -2104 1207 1210 -2105 693 696 -2105 1075 1076 -2105 1126 1235 -2106 1208 1215 -2107 1240 4874 -2108 1205 1207 -2109 967 1081 -2109 1645 1765 -2112 775 877 -2112 1648 1651 -2114 1195 1196 -2115 1300 1306 -2117 1195 1198 -2118 1759 1762 -2119 1192 1306 -2120 872 873 -2120 968 971 -2120 1096 1207 -2121 1417 1419 -2123 696 4329 -2125 866 976 -2125 1092 1207 -2125 1195 1201 -2125 1645 1651 -2128 690 788 -2129 1092 1199 -2129 1205 1208 -2129 1208 1209 -2130 1092 1205 -2130 1303 1306 -2131 1208 1210 -2132 686 790 -2133 686 782 -2133 871 876 -2133 1207 1208 -2134 1092 1096 -2144 1085 1199 -2147 968 973 -2149 1096 1205 -2152 1101 1214 -2152 1417 1529 -2153 1092 1093 -2154 1240 4875 -2155 1085 1086 -2156 4329 4332 -2159 1646 1648 -2162 975 1086 -2162 1090 1092 -2163 1208 1213 -2164 968 976 -2164 1095 1208 -2166 690 692 -2168 776 784 -2168 1085 1090 -2169 1095 1096 -2170 1530 1534 -2171 975 1079 -2171 981 1085 -2172 1086 1087 -2172 1529 1531 -2174 1122 1126 -2175 1205 1210 -2181 1090 1093 -2181 1100 1107 -2181 1647 1648 -2189 776 781 -2190 1354 4992 -2194 1758 1762 -2195 1010 4648 -2195 1645 1647 -2199 1085 1087 -2102 1762 1877 -2105 2227 2231 -2107 2142 2147 -2108 2250 2255 -2108 2360 2367 -2108 2693 2696 -2111 2142 2259 -2113 2231 2342 -2113 2366 2368 -2114 2349 2464 -2116 2915 2918 -2118 2692 2696 -2120 2226 2231 -2120 2347 2349 -2121 2110 2114 -2123 2342 2350 -2128 2255 2258 -2128 2367 2368 -2131 2226 2227 -2132 2349 2456 -2132 2921 3020 -2133 2227 2342 -2133 2342 2347 -2134 1875 1877 -2134 2342 2349 -2134 2806 2807 -2135 2144 2149 -2135 2806 2810 -2136 2349 2350 -2136 2604 2609 -2137 2691 2693 -2138 2932 3027 -2139 2579 2581 -2142 2349 2353 -2143 1992 1994 -2143 2497 2607 -2145 2114 2226 -2146 1993 1997 -2146 2144 2264 -2148 2581 2693 -2152 2927 3027 -2154 2226 2234 -2157 2462 2463 -2159 2361 2474 -2159 2927 3026 -2160 2696 2799 -2161 2144 2146 -2161 2799 2807 -2162 2109 2114 -2162 2144 2147 -2162 3027 3032 -2165 2109 2226 -2165 2143 2144 -2166 2611 2715 -2169 2116 2226 -2169 2349 2462 -2169 2709 2716 -2170 2348 2349 -2172 2469 2574 -2174 2144 2256 -2175 2253 2258 -2175 2932 3034 -2176 1876 1880 -2178 2226 2233 -2179 3026 3027 -2180 2921 2926 -2182 2256 2258 -2182 3027 3034 -2183 2574 2581 -2185 2365 2367 -2185 2926 3027 -2187 2109 2110 -2189 2139 2144 -2189 2250 2251 -2190 3027 3029 -2192 2139 2142 -2192 2146 2256 -2195 2109 2111 -2195 2605 2715 -2197 2257 2258 -2104 4452 4454 -2106 4669 4774 -2107 4330 4332 -2108 4343 4446 -2108 4907 5022 -2110 5026 5027 -2117 4808 4921 -2118 5133 5136 -2123 5132 5133 -2127 4902 4907 -2128 4785 4787 -2131 4908 5022 -2140 4344 4446 -2140 4780 4787 -2141 4678 4789 -2147 4908 5020 -2149 5374 5379 -2150 4662 4663 -2154 4337 4439 -2154 4900 4901 -2156 4329 4332 -2156 4451 4453 -2156 4678 4684 -2157 5019 5136 -2162 4439 4440 -2163 4332 4337 -2165 4904 4908 -2168 4338 4439 -2169 4335 4439 -2169 4446 4451 -2169 4910 5026 -2170 4337 4440 -2173 4905 5022 -2174 4332 4335 -2175 4454 4459 -2176 4337 4338 -2178 4786 4787 -2182 4900 4902 -2182 4910 5028 -2185 4780 4782 -2190 4902 4905 -2191 4335 4337 -2192 4343 4445 -2193 4437 4440 -2194 4440 4445 -2198 5136 5139 -2109 5965 6083 -2110 5963 6083 -2129 5970 6083 -2140 5979 6092 -2143 5751 5864 -2147 6205 6206 -2150 5741 5742 -2159 6098 6099 -2160 5873 5880 -2169 5744 5745 -2174 5977 6092 -2174 6120 6238 -2177 6202 6203 -2180 6098 6217 -2187 6202 6209 -2188 5870 5871 -2191 5622 5743 -2192 6089 6090 -2192 6092 6100 -2192 6452 6459 -2195 5977 6097 -2198 5745 5746 -2198 6099 6100 -2198 6090 6202 -2200 5743 5746 -2200 6105 6217 -2201 1085 1092 -2201 1240 4992 -2202 1412 1420 -2203 1080 1187 -2208 777 885 -2209 975 1087 -2210 1083 1084 -2211 968 969 -2212 691 696 -2223 1456 1458 -2225 1757 1765 -2226 777 781 -2234 1302 1420 -2239 1084 1195 -2240 777 883 -2252 777 877 -2256 1302 1306 -2256 1757 1762 -2257 1530 1646 -2259 1082 1087 -2260 969 973 -2261 865 872 -2262 686 788 -2264 979 1087 -2264 1529 1530 -2270 969 970 -2271 1758 1875 -2272 692 693 -2273 1640 1646 -2280 1082 1084 -2289 978 1082 -2294 776 783 -2295 871 872 -2202 2605 2609 -2203 2810 2910 -2207 2226 2228 -2208 2257 2263 -2212 2256 2264 -2215 2606 2609 -2219 2143 2258 -2220 2365 2474 -2224 1993 2109 -2225 2910 2918 -2225 3027 3028 -2228 2142 2144 -2233 2251 2252 -2236 2252 2255 -2236 2605 2717 -2238 2031 2032 -2240 2139 2140 -2248 2917 2918 -2249 2139 2141 -2251 2917 2921 -2254 2709 2717 -2258 2025 2031 -2258 2581 2685 -2261 1915 2031 -2266 1875 1876 -2271 1758 1875 -2274 2251 2255 -2275 2805 2806 -2276 2474 2476 -2276 2691 2692 -2280 2921 3018 -2283 2368 2371 -2287 2030 2031 -2288 2921 3026 -2289 1992 1993 -2294 2468 2475 -2294 2698 2799 -2295 1876 1992 -2202 4336 4337 -2206 4338 4445 -2206 4904 4905 -2210 4678 4791 -2211 4676 4791 -2212 4678 4783 -2213 4344 4445 -2216 4899 4901 -2224 5374 5381 -2228 4897 4905 -2229 4678 4682 -2230 4343 4440 -2233 4338 4440 -2235 4344 4448 -2237 4779 4780 -2237 4788 4902 -2241 4330 4337 -2247 4899 4902 -2249 4454 4457 -2253 4336 4440 -2253 4677 4684 -2258 4338 4437 -2260 4448 4451 -2266 4327 4332 -2266 4451 4454 -2266 4669 4779 -2274 4450 4451 -2275 4903 5020 -2281 4443 4451 -2282 4785 4786 -2284 4677 4682 -2291 4910 5020 -2296 5635 5636 -2202 5977 6094 -2202 6440 6447 -2203 5976 6089 -2204 5757 5870 -2205 6446 6453 -2209 6202 6207 -2212 5975 5976 -2212 6452 6453 -2214 6097 6100 -2220 6548 6555 -2221 6099 6103 -2224 6451 6453 -2225 5741 5743 -2226 5744 5749 -2232 6316 6317 -2234 5746 5749 -2235 6103 6217 -2235 6202 6204 -2240 5744 5751 -2240 5749 5752 -2241 6452 6454 -2244 5746 5748 -2247 6232 6239 -2248 6316 6318 -2250 5747 5749 -2255 5741 5748 -2258 5751 5752 -2258 6448 6453 -2260 6344 6458 -2261 6103 6219 -2265 6217 6225 -2266 5766 5885 -2267 6219 6225 -2268 5750 5751 -2268 6005 6012 -2271 5627 5748 -2275 6343 6458 -2277 6094 6095 -2281 5747 5748 -2282 5630 5750 -2283 6095 6097 -2283 6080 6085 -2289 6223 6224 -2290 6224 6225 -2290 6343 6350 -2293 5892 6005 -2294 5885 5886 -2296 5635 5636 -2296 6119 6126 -2296 6343 6349 -2298 6653 6660 -2300 5750 5755 -2301 4762 4763 -2302 1081 1084 -2302 1640 1647 -2305 1757 1764 -2307 1647 1757 -2312 973 975 -2318 866 974 -2318 1126 1237 -2328 1193 1195 -2330 680 782 -2333 685 692 -2334 1301 1306 -2338 1301 1309 -2345 4328 4329 -2346 771 877 -2347 973 976 -2349 973 1087 -2351 1007 1014 -2352 691 692 -2352 1080 1084 -2360 1124 4651 -2363 1007 1008 -2363 1096 1213 -2364 973 978 -2365 1194 1195 -2367 1192 1194 -2374 971 972 -2380 1101 1213 -2383 1007 1009 -2386 971 973 -2391 1013 1014 -2394 1011 1121 -2398 691 4328 -2400 686 692 -2305 2812 2910 -2309 2365 2482 -2310 2495 2502 -2311 2143 2259 -2312 2255 2368 -2331 2586 2593 -2353 2254 2255 -2358 2368 2369 -2361 2513 2520 -2363 2916 2917 -2370 2253 2255 -2374 2253 2260 -2374 2917 2923 -2393 2110 2226 -2398 2513 2625 -2301 4762 4763 -2303 4903 4904 -2306 4344 4443 -2310 4340 4445 -2310 5629 5636 -2313 4332 4334 -2324 4460 4564 -2326 4334 4439 -2326 5141 5254 -2329 4683 4690 -2334 4768 4769 -2340 4899 4900 -2345 4328 4329 -2347 4568 4677 -2347 4657 4762 -2348 4897 4902 -2357 4775 4882 -2368 4460 4566 -2369 5638 5645 -2371 4460 4563 -2375 4897 4898 -2376 4679 4682 -2376 4676 4786 -2378 4779 4781 -2386 4465 4570 -2386 4664 4774 -2394 4327 4328 -2397 4465 4569 -2398 691 4328 -2399 4449 4454 -2302 5752 5755 -2303 6097 6102 -2306 5752 5754 -2306 6090 6207 -2309 5747 5754 -2310 5629 5636 -2310 6222 6225 -2310 6233 6349 -2313 6345 6458 -2315 6006 6125 -2315 6090 6208 -2316 6345 6350 -2319 6224 6228 -2323 5645 5759 -2323 5757 5878 -2324 6094 6096 -2325 6653 6654 -2328 6090 6091 -2330 6102 6219 -2341 5976 6095 -2343 6334 6335 -2348 5752 5753 -2350 5765 5766 -2352 6219 6220 -2353 6348 6350 -2355 6348 6349 -2359 5755 5758 -2362 6457 6458 -2365 5755 5757 -2365 6234 6349 -2366 6340 6341 -2367 6457 6459 -2369 5638 5645 -2370 6224 6340 -2376 6234 6239 -2379 5884 5885 -2386 6096 6097 -2391 6340 6342 -2396 6237 6239 -2397 5640 5645 -2409 1080 1193 -2426 1079 1084 -2433 1121 1123 -2434 1079 1087 -2437 4650 4651 -2451 1413 1529 -2461 1192 1301 -2469 1079 1086 -2469 1641 1647 -2476 1412 1419 -2494 1354 4994 -2496 968 975 -2422 2917 3018 -2425 2474 2475 -2426 2254 2369 -2459 2253 2369 -2467 2368 2370 -2467 2513 2514 -2473 2233 2342 -2486 2365 2370 -2404 4774 4779 -2412 4782 4785 -2413 4460 4569 -2421 4897 4904 -2425 4346 4443 -2426 4466 4570 -2427 5525 5638 -2429 4776 4779 -2434 4779 4782 -2437 4650 4651 -2437 4663 4774 -2440 4327 4431 -2443 4340 4443 -2447 5635 5642 -2448 4768 4770 -2449 4683 4684 -2452 4684 4685 -2455 5635 5640 -2459 4466 4572 -2461 4460 4561 -2464 4773 4779 -2465 4683 4688 -2471 4768 4775 -2477 4664 4773 -2478 4778 4779 -2481 4466 4569 -2485 4663 4773 -2489 4658 4664 -2491 4334 4431 -2492 4663 4664 -2493 4340 4437 -2493 4544 4653 -2494 4462 4569 -2497 4682 4685 -2500 4658 4773 -2405 6218 6328 -2406 6228 6342 -2408 6237 6238 -2408 6345 6463 -2409 6220 6222 -2423 6097 6214 -2423 6121 6238 -2424 6121 6126 -2426 6348 6463 -2438 5766 5767 -2438 6340 6345 -2441 5876 5883 -2442 5976 5977 -2444 6457 6463 -2447 5635 5642 -2455 5635 5640 -2462 6089 6094 -2469 5636 5637 -2472 6455 6456 -2477 5633 5753 -2480 6234 6354 -2485 6228 6345 -2485 6340 6347 -2487 6005 6010 -2490 6124 6126 -2520 1123 1126 -2553 1187 1194 -2561 1010 4538 -2569 1188 1194 -2579 1010 4649 -2588 1301 1303 -2589 1015 4648 -2589 1188 1301 -2591 1302 1418 -2600 978 1087 -2502 2476 2479 -2507 2475 2476 -2519 2476 2588 -2530 2473 2475 -2534 2025 2032 -2537 2365 2477 -2543 2469 2580 -2549 2030 2032 -2557 2473 2580 -2558 2476 2477 -2572 2027 2032 -2575 3018 3020 -2578 2473 2588 -2579 2607 2613 -2584 2032 2142 -2590 2580 2582 -2593 2476 2478 -2503 4567 4569 -2507 4456 4563 -2508 4334 4437 -2512 4462 4567 -2512 4661 4663 -2515 4570 4575 -2516 4771 4779 -2517 4567 4570 -2519 4663 4768 -2519 4664 4771 -2520 4657 4767 -2522 4462 4568 -2524 4561 4569 -2524 4685 4688 -2524 4777 4782 -2531 4767 4769 -2531 4777 4778 -2532 4572 4575 -2537 4660 4664 -2544 4575 4577 -2547 4658 4768 -2552 4657 4768 -2554 4567 4572 -2556 4454 4456 -2556 4658 4661 -2561 1010 4538 -2564 4685 4687 -2569 4660 4773 -2571 4676 4681 -2585 4666 4778 -2589 4666 4771 -2596 4658 4767 -2598 4686 4688 -2599 4780 4786 -2501 6005 6007 -2505 5876 5881 -2507 5882 5883 -2517 5886 5887 -2518 6124 6125 -2519 6006 6007 -2520 6348 6354 -2524 5761 5878 -2524 5876 5878 -2541 5976 6094 -2546 6348 6351 -2554 5742 5861 -2555 6237 6240 -2557 5883 5884 -2568 5742 5743 -2570 5753 5755 -2573 5767 5885 -2575 6347 6348 -2578 6004 6007 -2581 5887 5892 -2583 5881 5884 -2583 6446 6447 -2599 6001 6007 -2605 1096 1208 -2613 1015 1121 -2615 1101 1208 -2628 1015 4761 -2628 1093 1095 -2646 1908 1915 -2654 1240 4877 -2659 1301 1302 -2667 1301 1418 -2688 1295 1301 -2696 1085 1088 -2607 2254 2370 -2617 2469 2582 -2619 2613 2614 -2621 2581 2582 -2646 1908 1915 -2655 2473 2478 -2655 2615 2724 -2662 1909 1915 -2665 2473 2583 -2676 2582 2585 -2685 2364 2477 -2690 1915 2025 -2700 2363 2370 -2611 4655 4767 -2616 4572 4577 -2616 4679 4685 -2620 4449 4450 -2624 4683 4691 -2626 5522 5641 -2628 1015 4761 -2636 4576 4577 -2644 4455 4561 -2644 4570 4577 -2649 4680 4685 -2662 4462 4561 -2670 4573 4580 -2675 4652 4657 -2677 5521 5528 -2679 4658 4765 -2683 4659 4660 -2692 4686 4693 -2694 4675 4786 -2601 6124 6243 -2602 5885 5887 -2604 6124 6127 -2606 6121 6243 -2618 6457 6460 -2619 5887 6010 -2619 5889 6002 -2619 6085 6088 -2626 5522 5641 -2626 5755 5760 -2637 6345 6347 -2641 5753 5873 -2641 5760 5878 -2645 5883 5887 -2648 5753 5754 -2648 5887 6002 -2654 5767 5772 -2656 5887 5890 -2660 5887 5893 -2661 5767 5890 -2663 5765 5772 -2667 6102 6214 -2669 5887 6004 -2687 5651 5771 -2688 5761 5879 -2689 5760 5873 -2717 871 878 -2730 1352 4992 -2738 1015 4649 -2744 901 4538 -2752 906 4538 -2762 1012 4649 -2763 906 4649 -2768 1087 1088 -2769 1015 4651 -2797 1013 4649 -2797 1125 1126 -2704 2025 2030 -2705 1910 2030 -2710 1910 1915 -2745 2027 2030 -2750 1915 2030 -2751 2022 2030 -2752 2473 2582 -2762 2604 2605 -2718 4660 4661 -2720 4572 4574 -2720 4692 4693 -2722 4572 4685 -2723 4456 4555 -2727 4679 4681 -2728 4677 4685 -2736 4456 4561 -2739 4691 4693 -2744 901 4538 -2749 4567 4568 -2749 4688 4691 -2750 4674 4681 -2752 906 4538 -2753 4679 4680 -2756 4555 4561 -2784 4692 4694 -2785 4690 4691 -2791 4691 4694 -2705 6095 6096 -2712 6220 6221 -2715 5889 6010 -2719 5879 5884 -2723 6089 6096 -2723 6096 6102 -2724 5884 5886 -2725 5766 5879 -2737 6214 6220 -2740 6007 6124 -2745 5760 5879 -2752 5889 6008 -2756 6003 6007 -2763 5895 6008 -2763 6122 6124 -2765 6002 6007 -2780 6002 6010 -2799 5893 6008 -2817 901 4432 -2818 1013 1015 -2819 1013 4651 -2820 1238 4875 -2827 1124 4761 -2832 1124 1126 -2832 1126 1238 -2833 4541 4649 -2837 901 4539 -2839 1088 1090 -2847 1012 1013 -2849 906 4539 -2852 1238 4877 -2858 1352 4877 -2872 1238 4763 -2872 1352 4994 -2808 3012 3019 -2812 2471 2478 -2848 3020 3023 -2849 2472 2582 -2854 3019 3020 -2880 3017 3019 -2810 4692 4699 -2814 4677 4683 -2817 901 4432 -2823 4698 4699 -2827 1124 4761 -2832 4694 4697 -2833 4541 4649 -2835 4697 4699 -2848 4574 4677 -2865 4689 4694 -2868 4658 4660 -2873 4705 4810 -2885 4689 4690 -2898 4699 4700 -2811 5893 6010 -2813 5893 6013 -2818 6014 6015 -2842 6002 6009 -2847 5766 5886 -2868 5887 6005 -2870 6003 6122 -2881 6008 6016 -2908 794 4432 -2911 971 976 -2938 1124 4763 -2940 971 978 -2946 869 971 -2958 799 4432 -2969 869 978 -2982 869 976 -2988 794 4431 -2990 799 4539 -2901 2620 2724 -2918 2724 2729 -2934 2472 2583 -2903 4680 4682 -2904 4700 4810 -2906 4689 4696 -2908 794 4432 -2921 4571 4680 -2942 4700 4809 -2958 799 4432 -2966 4680 4687 -2980 4810 4815 -2984 4653 4660 -2988 794 4431 -2990 4572 4680 -2902 5892 6012 -2904 5904 6023 -2907 6015 6016 -2913 5892 6010 -2918 6235 6238 -2922 6123 6127 -2928 6013 6016 -2928 6304 6305 -2929 6017 6024 -2937 6122 6123 -2949 5893 6011 -2950 6002 6122 -2957 6123 6243 -2960 6021 6134 -2973 5892 6011 -2974 6235 6243 -2980 6014 6019 -2983 5891 6011 -2984 5892 5898 -2995 5892 5893 -2995 5898 6011 -2999 6455 6463 -3000 6347 6455 -3014 794 4328 -3039 794 4433 -3073 696 4328 -3090 1353 4994 -3092 906 4541 -3021 2724 2731 -3040 2692 2799 -3014 794 4328 -3021 4654 4765 -3039 794 4433 -3039 4816 4817 -3054 4817 4823 -3073 696 4328 -3075 4650 4652 -3079 4654 4658 -3080 4696 4697 -3092 906 4541 -3002 5891 5898 -3004 6235 6240 -3005 5893 6016 -3006 5891 5892 -3010 5893 5898 -3021 6011 6016 -3025 6016 6018 -3027 6016 6019 -3028 5778 5891 -3028 5885 5891 -3029 6236 6240 -3030 5890 5892 -3030 6454 6459 -3040 6236 6354 -3045 5885 5890 -3052 5896 5898 -3052 6235 6241 -3058 6346 6354 -3068 5772 5885 -3071 6235 6242 -3075 6123 6241 -3075 6346 6351 -3083 6346 6347 -3093 5896 5897 -3096 6455 6460 -3107 904 4539 -3112 799 4433 -3116 906 1013 -3158 1090 1095 -3161 866 968 -3171 1088 1095 -3191 1088 1089 -3141 2729 2731 -3107 4652 4655 -3112 799 4433 -3164 4653 4654 -3188 4654 4655 -3102 5778 5897 -3106 5895 6016 -3118 6346 6352 -3120 6454 6566 -3132 6236 6352 -3135 6089 6091 -3141 6453 6454 -3150 5896 5899 -3155 6445 6447 -3157 6454 6571 -3170 6451 6565 -3184 6448 6560 -3187 5777 5784 -3198 6019 6021 -3213 1013 4650 -3225 1095 1207 -3233 1301 1308 -3213 1013 4650 -3202 6448 6565 -3206 6456 6460 -3209 6454 6565 -3213 6447 6560 -3227 6456 6462 -3233 6456 6571 -3243 6304 6306 -3245 5895 5899 -3246 6561 6671 -3250 6554 6560 -3251 6450 6565 -3267 6559 6560 -3271 6455 6462 -3273 5895 6014 -3278 6557 6560 -3284 6560 6561 -3290 6559 6562 -3294 6557 6565 -3297 6561 6562 -3371 4649 4651 -3383 4649 4652 -3394 1095 1202 -3325 2934 2941 -3337 2935 3036 -3340 2836 2940 -3345 2513 2515 -3327 4680 4681 -3338 4695 4702 -3363 4697 4700 -3369 4695 4696 -3371 5381 5500 -3383 4649 4652 -3305 6557 6562 -3311 6564 6565 -3313 6561 6670 -3316 6450 6557 -3320 6563 6564 -3326 6557 6564 -3327 6345 6348 -3329 6563 6565 -3333 6563 6571 -3334 5894 5899 -3334 6558 6562 -3336 6561 6665 -3353 6346 6461 -3355 6563 6568 -3357 6346 6353 -3363 6555 6665 -3367 6456 6569 -3368 6558 6564 -3379 5894 5901 -3382 6556 6665 -3464 696 4433 -3489 1302 1412 -3414 3029 3032 -3424 2728 2837 -3425 3029 3034 -3432 3125 3130 -3435 3130 3132 -3408 5381 5387 -3421 4680 4792 -3427 5379 5382 -3431 4695 4700 -3460 5381 5382 -3464 696 4433 -3482 5380 5381 -3494 5379 5380 -3417 6555 6666 -3418 6556 6670 -3466 6222 6227 -3476 6563 6570 -3477 6664 6665 -3489 6343 6345 -3500 6552 6662 -3508 1295 1412 -3509 1300 1302 -3529 1085 1093 -3531 799 4435 -3542 797 4433 -3546 975 1085 -3569 979 1085 -3512 3131 3133 -3527 3127 3130 -3574 2836 2840 -3583 2940 2942 -3590 2834 2837 -3524 4698 4700 -3528 5262 5379 -3531 799 4435 -3537 5261 5380 -3542 797 4433 -3544 5261 5381 -3549 4702 4703 -3552 5261 5379 -3560 4700 4703 -3563 4592 4701 -3581 4701 4703 -3595 4592 4598 -3598 4703 4706 -3505 6342 6343 -3515 5781 5900 -3518 6227 6342 -3521 6651 6752 -3526 6343 6344 -3528 5894 5902 -3528 6659 6666 -3540 5781 5902 -3540 6664 6666 -3555 6664 6667 -3560 6659 6660 -3561 5779 5902 -3561 6661 6666 -3563 6660 6666 -3577 6658 6660 -3585 5780 5787 -3588 6758 6759 -3598 6558 6670 -3601 1302 1303 -3608 3030 3037 -3623 2836 2837 -3625 2939 2941 -3625 2941 3036 -3642 2941 2942 -3653 2840 2942 -3663 2941 3044 -3676 3037 3134 -3680 3049 3140 -3685 3042 3043 -3687 2942 2945 -3611 4591 4598 -3618 4698 4705 -3630 4596 4701 -3639 4596 4598 -3646 4596 4706 -3674 4703 4705 -3676 4596 4709 -3694 4492 4591 -3602 5779 5897 -3606 5781 5785 -3614 6662 6664 -3615 6655 6660 -3617 6556 6662 -3623 5780 5785 -3632 6659 6661 -3642 5780 5786 -3647 5666 5786 -3647 6558 6668 -3655 5782 5785 -3665 5672 5786 -3673 5779 5784 -3691 5780 5788 -3694 5666 5788 -3696 5672 5792 -3702 1013 4541 -3739 3146 3147 -3748 3042 3044 -3755 3147 3240 -3771 3036 3038 -3775 3047 3049 -3781 2739 6420 -3787 3031 3128 -3796 2942 2943 -3702 1013 4541 -3711 4704 4706 -3713 4591 4599 -3721 4485 4492 -3737 4490 4492 -3748 4704 4709 -3771 4490 4599 -3774 4596 4599 -3776 4388 4492 -3782 4594 4599 -3785 4388 4491 -3800 4704 4711 -3701 5670 5786 -3718 5664 5788 -3722 6305 6419 -3726 5782 5784 -3726 6227 6337 -3737 5672 5794 -3748 6661 6667 -3750 5670 5788 -3769 6305 6309 -3775 5783 5785 -3781 2739 6420 -3797 5672 5676 -3810 2832 2837 -3815 3140 3148 -3817 2740 2847 -3822 3147 3151 -3824 2945 3044 -3834 3044 3050 -3836 3042 3047 -3839 3235 3322 -3844 3047 3050 -3845 3234 3241 -3849 3047 3148 -3850 3044 3047 -3852 3042 3050 -3852 3147 3148 -3853 3042 3049 -3853 3047 3052 -3855 3045 3050 -3856 3043 3047 -3857 2944 2945 -3857 3045 3047 -3858 2945 3042 -3858 3050 3052 -3863 2945 3045 -3865 3145 3148 -3866 3143 3148 -3874 2941 2947 -3875 2943 2944 -3879 2944 2950 -3880 2947 3042 -3880 3051 3052 -3887 2941 2945 -3889 2940 2941 -3892 3052 3053 -3895 2950 3045 -3895 3234 3242 -3898 3147 3242 -3801 4596 4601 -3803 4492 4493 -3803 4495 4599 -3820 4491 4493 -3822 4594 4601 -3827 5671 5676 -3829 4493 4496 -3850 5673 5794 -3856 4392 4491 -3858 4601 4704 -3863 4495 4496 -3865 4704 4710 -3871 4387 4394 -3886 4392 4394 -3890 5677 5684 -3897 4493 4499 -3812 5678 5792 -3813 5669 5788 -3816 6306 6309 -3818 5783 5788 -3824 5663 5784 -3827 5671 5676 -3839 5678 5798 -3843 5670 5794 -3843 5783 5784 -3850 5673 5794 -3864 5676 5792 -3864 5678 5800 -3878 5676 5678 -3880 5678 5682 -3881 5670 5789 -3890 5677 5684 -3891 5676 5794 -3933 1295 1302 -3987 859 860 -3904 2838 2839 -3909 3145 3242 -3912 2839 2840 -3914 3145 3150 -3914 3239 3241 -3919 3239 3242 -3922 2837 2839 -3922 3143 3149 -3923 3237 3242 -3937 3150 3237 -3944 3052 3143 -3944 3143 3150 -3951 3322 3324 -3952 2839 2943 -3952 3322 3323 -3956 3145 3237 -3957 3239 3322 -3965 3239 3330 -3973 3242 3244 -3982 3323 3404 -3987 2726 2731 -3988 3046 3052 -3991 3239 3244 -3992 3322 3327 -3993 2731 2832 -3994 3052 3149 -3996 3045 3052 -3996 3322 3325 -3999 3052 3148 -3901 4392 4499 -3903 5677 5682 -3909 4495 4600 -3925 4494 4496 -3931 5683 5684 -3953 4295 4393 -3961 4494 4499 -3964 5684 5685 -3973 5679 5682 -3973 5562 5682 -3981 4394 4395 -3991 4494 4501 -3991 5682 5685 -3992 5683 5690 -3996 4393 4395 -3903 5677 5682 -3905 5676 5797 -3908 5783 5790 -3914 5676 5800 -3921 5675 5794 -3930 5676 5795 -3931 5683 5684 -3939 6558 6669 -3940 6558 6662 -3941 5783 5789 -3948 6661 6664 -3949 6647 6654 -3954 5676 5681 -3964 5684 5685 -3971 6663 6664 -3973 5562 5682 -3973 5679 5682 -3973 6658 6661 -3977 5669 5789 -3988 6468 6575 -3989 6656 6663 -3991 5682 5685 -3992 5683 5690 -4007 2923 3026 -4010 3327 3329 -4011 3327 3330 -4012 2923 3025 -4014 3404 3405 -4020 2923 3018 -4025 3237 3244 -4033 3325 3330 -4040 3238 3244 -4044 3404 3406 -4048 3013 3110 -4053 3244 3325 -4063 3323 3327 -4012 4395 4398 -4016 4394 4397 -4019 5683 5688 -4023 4397 4499 -4034 5570 5689 -4044 4294 4301 -4053 4397 4398 -4062 5568 5688 -4065 5685 5688 -4082 4299 4393 -4094 4397 4500 -4019 5683 5688 -4028 6569 6570 -4029 6661 6663 -4045 6569 6680 -4053 6019 6022 -4055 6581 6582 -4055 6663 6764 -4062 5568 5688 -4062 6569 6571 -4062 6576 6680 -4065 5685 5688 -4068 5675 5789 -4082 6021 6142 -4084 6570 6574 -4085 6569 6574 -4096 5680 5682 -4097 6680 6688 -4099 6574 6680 -4128 696 4331 -4141 797 4331 -4150 797 4435 -4102 3327 3404 -4105 3024 3026 -4112 3327 3412 -4117 3405 3480 -4119 3405 3409 -4121 3406 3412 -4133 3404 3409 -4154 3024 3029 -4158 3474 3481 -4161 3406 3409 -4168 2508 2613 -4170 3327 3332 -4198 3029 3031 -4102 4299 4301 -4124 4299 4401 -4147 4207 4300 -4147 5576 5689 -4148 5683 5691 -4149 5679 5681 -4150 797 4435 -4151 5574 5689 -4153 4396 4398 -4154 5570 5691 -4158 4331 4433 -4163 5685 5687 -4164 4294 4302 -4166 4331 4435 -4167 4331 4332 -4174 5568 5691 -4182 4331 4434 -4197 5574 5691 -4106 5675 5795 -4108 6574 6682 -4112 6680 6683 -4115 6017 6019 -4117 6022 6142 -4117 6021 6140 -4117 6680 6685 -4119 6570 6680 -4120 6680 6682 -4123 6027 6140 -4123 6570 6571 -4130 6764 6771 -4132 6460 6571 -4135 6674 6680 -4136 6568 6571 -4137 6681 6788 -4138 6681 6685 -4140 6025 6140 -4142 6687 6788 -4147 5576 5689 -4148 5683 5691 -4149 5679 5681 -4151 5574 5689 -4151 6680 6681 -4154 5570 5691 -4163 5685 5687 -4165 6025 6142 -4166 6685 6687 -4168 6685 6688 -4174 5568 5691 -4174 6146 6147 -4176 6080 6199 -4176 6661 6772 -4180 6764 6772 -4182 6140 6148 -4183 6573 6574 -4187 6794 6795 -4189 6687 6795 -4190 6019 6024 -4195 6147 6148 -4197 5574 5691 -4201 962 969 -4210 1440 1555 -4204 3029 3130 -4209 3325 3332 -4227 3133 3138 -4239 3130 3133 -4253 3024 3025 -4271 3405 3482 -4282 3327 3407 -4290 3474 3482 -4238 5576 5695 -4246 5674 5681 -4259 5582 5695 -4275 5576 5697 -4294 5574 5694 -4299 5574 5697 -4211 6788 6796 -4214 6687 6796 -4219 6146 6265 -4220 6571 6573 -4226 6566 6571 -4232 6024 6142 -4233 6682 6683 -4237 6795 6799 -4238 5576 5695 -4241 6794 6899 -4242 6794 6796 -4245 6147 6151 -4246 5674 5681 -4249 6795 6899 -4254 6017 6018 -4258 6145 6148 -4259 5582 5695 -4266 6691 6796 -4275 5576 5697 -4278 6153 6265 -4286 6683 6684 -4287 6899 6900 -4291 6899 6901 -4294 5574 5694 -4296 6142 6143 -4296 6151 6265 -4299 5574 5697 -4300 6683 6685 -4301 3138 3230 -4302 3129 3130 -4306 3122 3130 -4317 3133 3136 -4345 3406 3407 -4352 3406 3482 -4364 3403 3482 -4370 3231 3232 -4302 4206 4213 -4308 4299 4302 -4309 5582 5701 -4339 4396 4401 -4340 4301 4302 -4349 5580 5695 -4384 4300 4302 -4388 4301 4304 -4390 5582 5703 -4305 6151 6267 -4306 6796 6799 -4306 6799 6901 -4326 6271 6272 -4328 6024 6137 -4337 6899 6904 -4337 6906 7000 -4341 6265 6273 -4349 5580 5695 -4360 6573 6683 -4360 6685 6690 -4363 6272 6273 -4365 6143 6145 -4368 6796 6797 -4368 6904 6906 -4369 5680 5681 -4375 5680 5687 -4397 6690 6796 -4405 3128 3133 -4408 3479 3481 -4411 3475 3543 -4455 3326 3332 -4457 3479 3482 -4458 3138 3231 -4476 3481 3543 -4497 3408 3409 -4408 5685 5686 -4431 5573 5691 -4433 5568 5686 -4447 5580 5697 -4472 4302 4305 -4474 5586 5701 -4477 5574 5692 -4479 4302 4308 -4480 5580 5700 -4408 5685 5686 -4416 6661 6767 -4417 7006 7007 -4425 6278 6388 -4431 5573 5691 -4433 5568 5686 -4434 6145 6150 -4434 6904 6907 -4439 6904 6910 -4442 6150 6267 -4443 6453 6459 -4445 6272 6276 -4447 5580 5697 -4451 5686 5688 -4452 5686 5691 -4456 6798 6799 -4464 6143 6144 -4465 6276 6388 -4465 7000 7008 -4467 6459 6566 -4470 6572 6573 -4470 6904 7008 -4474 6901 6902 -4475 7000 7007 -4477 7007 7097 -4480 5580 5700 -4480 6270 6273 -4485 6904 6909 -4487 6265 6268 -4489 5686 5687 -4492 6902 6904 -4500 7005 7007 -4502 3326 3407 -4508 3144 3237 -4518 3408 3483 -4524 3128 3129 -4533 3031 3122 -4534 3144 3231 -4550 3479 3551 -4559 3139 3231 -4566 3139 3230 -4567 3407 3408 -4567 3408 3482 -4568 3144 3236 -4573 3477 3482 -4596 3479 3543 -4598 3142 3236 -4507 4211 4300 -4530 4211 4213 -4535 5580 5703 -4555 5586 5703 -4568 4304 4401 -4585 5586 5707 -4586 4211 4308 -4511 7005 7008 -4512 6267 6268 -4519 6276 6390 -4521 7003 7008 -4526 7097 7105 -4536 7005 7105 -4545 6690 6791 -4547 7097 7104 -4553 7103 7104 -4554 7102 7105 -4556 6660 6661 -4563 6268 6270 -4564 6797 6798 -4572 6798 6902 -4572 7104 7188 -4574 7102 7104 -4580 6150 6262 -4587 5686 5693 -4595 6902 6903 -4598 7194 7195 -4627 904 4541 -4660 904 4435 -4667 1413 1523 -4672 962 963 -4691 854 963 -4699 962 967 -4609 3145 3236 -4610 3543 3545 -4618 3139 3236 -4618 3537 3544 -4641 3133 3135 -4645 3139 3228 -4663 3479 3484 -4667 3141 3236 -4667 3544 3545 -4676 3135 3139 -4686 3477 3484 -4606 4327 4334 -4627 904 4541 -4636 4235 4327 -4645 5572 5692 -4655 4327 4335 -4660 904 4435 -4667 4213 4214 -4692 5573 5692 -4616 6394 6395 -4635 7188 7196 -4647 7005 7010 -4653 7102 7196 -4657 7100 7105 -4669 6388 6396 -4674 6903 6909 -4674 7188 7195 -4688 6909 7003 -4699 7003 7010 -4711 967 970 -4718 1406 1407 -4735 854 956 -4742 963 964 -4746 848 854 -4754 956 964 -4762 852 956 -4765 961 964 -4770 964 967 -4788 964 966 -4790 965 967 -4710 3542 3544 -4720 3545 3548 -4730 3135 3136 -4733 3544 3597 -4743 3141 3228 -4746 3234 3236 -4766 3134 3135 -4766 3546 3551 -4789 3545 3605 -4794 3484 3546 -4706 4141 4228 -4708 5579 5697 -4711 5579 5692 -4721 4233 4235 -4723 4228 4235 -4739 4233 4335 -4744 4228 4236 -4763 4134 4141 -4776 4233 4236 -4776 5585 5703 -4779 4139 4141 -4789 4330 4335 -4708 5579 5697 -4710 6395 6396 -4710 7102 7107 -4755 7193 7196 -4767 7189 7273 -4768 7191 7196 -4780 7195 7196 -4782 7201 7279 -4792 6270 6275 -4801 959 964 -4806 848 950 -4807 965 966 -4813 848 956 -4825 848 958 -4832 852 854 -4833 852 964 -4840 852 958 -4858 846 848 -4888 841 846 -4891 841 842 -4895 852 959 -4898 959 965 -4802 3234 3235 -4804 3597 3604 -4807 3546 3548 -4808 3546 3553 -4828 3598 3604 -4831 3128 3135 -4831 3597 3605 -4836 3542 3605 -4841 3234 3239 -4851 3547 3548 -4857 3542 3602 -4859 3547 3605 -4864 3602 3604 -4872 3600 3605 -4873 3597 3602 -4879 3604 3645 -4883 3602 3605 -4900 3645 3652 -4807 4053 4134 -4808 4139 4236 -4828 5698 5703 -4839 4134 4142 -4840 4233 4238 -4884 5585 5704 -4892 4231 4236 -4896 4238 4330 -4802 5697 5698 -4808 6275 6390 -4809 6393 6396 -4809 7193 7199 -4809 7195 7199 -4811 7196 7198 -4828 5698 5703 -4829 7199 7281 -4830 7010 7100 -4833 7285 7286 -4836 6269 6275 -4844 6268 6269 -4845 6150 6269 -4857 7107 7191 -4867 7199 7279 -4873 7279 7287 -4876 5698 5700 -4883 7198 7199 -4884 5585 5704 -4896 6395 6399 -4899 7286 7287 -4904 857 959 -4906 851 852 -4908 850 959 -4910 846 849 -4914 851 959 -4917 1758 1869 -4922 849 851 -4938 850 851 -4943 1758 1877 -4945 841 843 -4952 735 842 -4963 843 849 -4971 735 835 -4979 844 851 -4990 735 843 -4925 3645 3653 -4943 1758 1877 -4949 3602 3653 -4958 3605 3607 -4972 3646 3678 -4979 3645 3650 -4985 3602 3650 -4985 3646 3650 -4995 3647 3650 -4998 3645 3648 -4939 4231 4238 -4947 4139 4142 -4910 7100 7107 -4926 7284 7287 -4935 7286 7364 -4937 7199 7282 -4940 7286 7290 -4963 5698 5705 -4967 7364 7365 -4981 7364 7366 -4984 6275 6385 -4991 7282 7287 -5002 739 843 -5011 736 843 -5018 1752 1869 -5022 1756 1869 -5027 844 846 -5031 1752 1863 -5036 733 735 -5036 1752 1871 -5044 844 845 -5065 1756 1877 -5072 1746 1863 -5073 1756 1871 -5076 843 844 -5084 733 835 -5015 3646 3679 -5017 3602 3607 -5030 3547 3606 -5034 3600 3607 -5036 1752 1871 -5048 3675 3679 -5065 1756 1877 -5065 2336 2343 -5073 1756 1871 -5084 3602 3648 -5036 5586 5704 -5032 7371 7436 -5036 5586 5704 -5049 7290 7366 -5088 7364 7369 -5102 733 843 -5118 729 835 -5121 1750 1863 -5101 3648 3653 -5104 3648 3650 -5119 3644 3679 -5148 3649 3650 -5154 3648 3655 -5161 3649 3679 -5187 3607 3648 -5188 2227 2344 -5127 4396 4403 -5185 4299 4304 -5119 7287 7289 -5127 7369 7371 -5130 7191 7197 -5131 5698 5699 -5154 7436 7443 -5168 6655 6761 -5171 6390 6391 -5193 7369 7372 -5243 3677 3679 -5291 3649 3680 -5224 4304 4396 -5263 4125 4206 -5217 7197 7198 -5243 7289 7290 -5252 7204 7282 -5258 7369 7443 -5299 7289 7295 -5310 4206 4214 -5372 4118 4125 -5311 7366 7367 -5314 7288 7289 -5346 6766 6772 -5360 7367 7369 -5365 7369 7374 -5373 7289 7367 -5418 728 735 -5478 632 728 -5481 733 736 -5489 728 736 -5406 4123 4125 -5414 4304 4305 -5439 4118 4124 -5459 4304 4403 -5463 4211 4214 -5478 4208 4214 -5482 4042 4124 -5496 4123 4214 -5415 7441 7443 -5529 1761 1877 -5542 738 843 -5529 1761 1877 -5509 4123 4129 -5523 4118 4126 -5526 4123 4126 -5546 4302 4303 -5564 4304 4402 -5568 4042 4118 -5583 4211 4216 -5506 7439 7443 -5521 7367 7368 -5557 7374 7439 -5602 4211 4303 -5612 4209 4214 -5616 4041 4126 -5617 4297 4303 -5621 4042 4045 -5627 4123 4128 -5628 4042 4126 -5634 4210 4303 -5659 4043 4045 -5662 4303 4304 -5696 4043 4044 -5789 630 728 -5789 630 733 -5795 738 838 -5715 4121 4126 -5849 733 738 -5856 732 738 -5833 4209 4216 -5888 4044 4126 -5909 731 733 -5941 731 732 -5944 630 730 -5946 625 626 -5951 626 630 -5956 730 731 -5959 627 730 -5973 626 627 -5983 629 730 -5988 619 626 -5917 4121 4128 -6013 629 725 -6037 619 624 -6039 624 627 -6050 619 620 -6063 624 629 -6083 519 620 -6009 4044 4045 -6013 4044 4127 -6052 4128 4209 -6228 620 621 -6242 621 624 -6250 4046 4047 -6259 622 624 -6292 519 613 -6250 4046 4047 -6337 618 621 -6354 613 621 -6364 621 623 -6378 622 623 -6445 616 621 -6514 517 613 -6539 6275 6391 -6656 517 615 -6724 513 517 -6760 517 616 -6765 512 513 -6784 506 512 -6792 513 514 -6801 522 616 -6831 516 517 -6853 506 514 -6854 515 616 -6877 511 514 -6885 417 506 -6908 514 516 -6921 415 506 -6942 515 516 -6947 411 506 -6959 509 515 -6966 509 514 -7022 411 500 -7023 420 509 -7043 411 508 -7047 415 508 -7068 412 508 -7093 415 509 -7099 409 500 -7102 413 509 -7135 409 502 -7160 414 508 -7161 409 508 -7174 409 503 -7175 409 411 -7177 409 415 -7180 414 509 -7185 409 414 -7194 409 412 -7173 6274 6281 -7231 414 503 -7204 6280 6281 diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index d2a4559010..82da5bfac5 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 ''' -UPDATE: August 13, 2024: +UPDATE: August 28, 2024: Launching the LAMMPS binary under testing using a configuration defined in a yaml file (e.g. config.yaml). Comparing the output thermo with that in the existing log file (with the same nprocs) + data in the log files are extracted and converted into yaml data structure @@ -13,6 +13,8 @@ With the current features, users can: + specify tolerances for individual quantities for any input script to override the global values + launch tests with `mpirun` with all supported command line features (multiple procs, multiple paritions, and suffices) + skip certain input files (whose names match specified patterns) if not interested, or packaged not installed, or no reference log file exists + + set a timeout for every input script run if they may take too long + + skip numerical checks if the goal is just to check if the runs do not fail + simplify the main LAMMPS builds, as long as a LAMMPS binary is available + keep track of the testing progress to resume the testing from the last checkpoint (skipping completed runs) + distribute the input list across multiple processes via multiprocessing, or @@ -49,16 +51,10 @@ Example usage: --list-subfolders=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ --log-file=run1.log - 4) Specify a list of example input scripts + 4) Specify a list of example input scripts (e.g. obtained from running tools/regression-tests/get-quick-list.py) python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ - --list-input=input-list-1.txt --output-file=output1.txt --progress-file=progress1.yaml \ - --log-file=run1.log - - The example subfolders can also be loaded from a text file list_subfolders1.txt: - python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ - --list-subfolders=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ - --log-file=run1.log - + --list-input=input_list.txt + 5) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples @@ -248,7 +244,8 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file if fnmatch.fnmatch(file, pattern): p = file.rsplit('.', 1) if p[1].isnumeric(): - if use_valgrind == True: + # if using valgrind or running in serial, then use the log file with 1 proc + if use_valgrind == True or config['mpiexec'] == "": if int(p[1]) == 1: max_np = int(p[1]) ref_logfile_exist = True @@ -263,10 +260,11 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if there is no ref log file and not running with valgrind if ref_logfile_exist == False and use_valgrind == False: max_np = 4 - - # if the maximum number of procs is different from the value in the configuration file - # then override the setting for this input script + saved_nprocs = config['nprocs'] + + # if the maximum number of procs is different from the value in the configuration file + # then override the setting for this particular input script if max_np != int(config['nprocs']): config['nprocs'] = str(max_np) @@ -318,6 +316,41 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue + # check if a log.lammps file exists in the current folder + if os.path.isfile("log.lammps") == False: + logger.info(f" ERROR: No log.lammps generated with {input_test} with return code {returncode}.\n") + logger.info(f" Output:") + logger.info(f" {output}") + logger.info(f" Error:\n{error}") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"error, no log.lammps\" }}\n") + progress.close() + num_error = num_error + 1 + test_id = test_id + 1 + continue + else: + # save a copy of the log file for further inspection + cmd_str = f"cp log.lammps log.{basename}.{nprocs}" + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + + # if skip numerical checks, then skip the rest + if skip_numerical_check == True: + msg = "completed, skipping numerical checks" + if use_valgrind == True: + if "All heap blocks were freed" in error: + msg += ", no memory leak" + else: + msg += ", memory leaks detected" + num_memleak = num_memleak + 1 + result.status = msg + results.append(result) + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\" }}\n") + progress.close() + + # count the number of completed runs + num_completed = num_completed + 1 + test_id = test_id + 1 + continue + # if there is no ERROR in the output, but there is no Total wall time printed out if "Total wall time" not in output: logger.info(f" ERROR: no Total wall time in the output.\n") @@ -342,22 +375,6 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue - # check if a log.lammps file exists in the current folder - if os.path.isfile("log.lammps") == False: - logger.info(f" ERROR: No log.lammps generated with {input_test} with return code {returncode}.\n") - logger.info(f" Output:") - logger.info(f" {output}") - logger.info(f" Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"error, no log.lammps\" }}\n") - progress.close() - num_error = num_error + 1 - test_id = test_id + 1 - continue - else: - # save a copy of the log file for further inspection - cmd_str = f"cp log.lammps log.{basename}.{nprocs}" - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - # parse thermo output in log.lammps from the run thermo = extract_data_to_yaml("log.lammps") num_runs = len(thermo) @@ -724,9 +741,12 @@ def get_lammps_build_configuration(lmp_binary): ''' def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): cmd_str = "" + # check if mpiexec/mpirun is used if config['mpiexec']: cmd_str += config['mpiexec'] + " " + config['mpiexec_numproc_flag'] + " " + config['nprocs'] + " " + cmd_str += lmp_binary + " -in " + input_file_name + " " + config['args'] + logger.info(f" Executing: {cmd_str}") # set a timeout (in seconds) for each run timeout = 60 @@ -739,7 +759,7 @@ def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): return cmd_str, p.stdout, p.stderr, p.returncode except subprocess.TimeoutExpired: - msg = f" Timeout for {cmd_str} ({timeout} s) expired" + msg = f" Timeout for: {cmd_str} ({timeout}s expired)" logger.info(msg) print(msg) @@ -886,6 +906,8 @@ if __name__ == "__main__": parser.add_argument("--progress-file",dest="progress_file", default=progress_file, help="Progress file") parser.add_argument("--analyze",dest="analyze", action='store_true', default=False, help="Analyze the testing folders and report statistics, not running the tests") + parser.add_argument("--skip-numerical-check",dest="skip_numerical_check", action='store_true', default=False, + help="Generating reference data") args = parser.parse_args() @@ -907,6 +929,7 @@ if __name__ == "__main__": verbose = args.verbose log_file = args.logfile analyze = args.analyze + skip_numerical_check = args.skip_numerical_check resume = args.resume progress_file = args.progress_file From c60e69ea1eece9e9a659447a77846230a1bc3147 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 14:06:40 -0500 Subject: [PATCH 41/93] have a single job definition with matrix strategy, the build and env do not persist between jobs --- .github/workflows/full-regression.yml | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 1dcccfcdcc..458b48ef0a 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -17,6 +17,10 @@ jobs: runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache + strategy: + max-parallel: 2 + matrix: + idx: [ 0, 1, 2, 3 ] steps: - name: Checkout repository @@ -67,29 +71,15 @@ jobs: cmake --build build ccache -s - - name: Analyze top-level examples folder, split into 8 seperate lists of input scripts + - name: Full regression tests, splitting the top-level example input into 4 lists shell: bash run: | source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ - --examples-top-level=examples --analyze --num-workers=8 + --examples-top-level=examples --analyze --num-workers=4 - run_tests: - name: Full Regression Test - # restrict to official LAMMPS repository - if: ${{ github.repository == 'lammps/lammps' }} - runs-on: ubuntu-latest - strategy: - max-parallel: 2 - matrix: - idx: [ 0, 1 ] - - steps: - - name: Run regression tests - run: | - source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ @@ -101,3 +91,5 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 + + From 4e40b4ba63c0b613bcca2b670693f691fc342951 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 14:11:23 -0500 Subject: [PATCH 42/93] upload the artifacts of the full regression test workflow --- .github/workflows/full-regression.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 458b48ef0a..d1b0c0c86a 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -88,8 +88,13 @@ jobs: --progress-file=progress-${{ matrix.idx }}.yaml \ --log-file=run-${{ matrix.idx }}.log + tar -cvf full-regression-test.tar run*.log progress*.yaml output*.xml + - name: Upload artifacts uses: actions/upload-artifact@v4 + with: + name: full-regression-test-artifact + path: full-regression-test.tar From aa088da59bb16ed5ec6d3a685adf30295d3ad106 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 14:43:27 -0500 Subject: [PATCH 43/93] pack test output into separate artifacts --- .github/workflows/full-regression.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index d1b0c0c86a..34a4907d02 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -88,13 +88,10 @@ jobs: --progress-file=progress-${{ matrix.idx }}.yaml \ --log-file=run-${{ matrix.idx }}.log - tar -cvf full-regression-test.tar run*.log progress*.yaml output*.xml + tar -cvf full-regression-test-${{ matrix.idx }}.tar run-${{ matrix.idx }}.log progress-${{ matrix.idx }}.yaml output-${{ matrix.idx }}.xml - name: Upload artifacts uses: actions/upload-artifact@v4 - with: - name: full-regression-test-artifact - path: full-regression-test.tar From 5306f5ff18f43d038a1ddf1b0bbd1c61ec8eb696 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 15:35:25 -0500 Subject: [PATCH 44/93] provide path to the artifacts --- .github/workflows/full-regression.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 34a4907d02..7ae324f99a 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -92,6 +92,8 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 - + with: + name: full-regression-test-artifact + path: full-regression-test-*.tar From 796a0f18d3880619a577339ac965b114161d6792 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 16:07:13 -0500 Subject: [PATCH 45/93] upload per-job artifacts, try action merge in a separate job --- .github/workflows/full-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 7ae324f99a..b97910d32c 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -94,6 +94,6 @@ jobs: uses: actions/upload-artifact@v4 with: name: full-regression-test-artifact - path: full-regression-test-*.tar + path: full-regression-test-${{ matrix.idx }}.tar From 04bd62a677ef869e2caaa7bf27987dda88a6023f Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 16:13:10 -0500 Subject: [PATCH 46/93] add another job with the action merge --- .github/workflows/full-regression.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index b97910d32c..1b8a3d402d 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -95,5 +95,14 @@ jobs: with: name: full-regression-test-artifact path: full-regression-test-${{ matrix.idx }}.tar - + + merge: + runs-on: ubuntu-latest + needs: build + steps: + - name: Merge Artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: merged-full-regresssion-artifact + pattern: full-regression-test-*.tar From a1a3e4e5b7c58af6f024b8cdf21f7f3bf26b84b3 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 16:45:00 -0500 Subject: [PATCH 47/93] name the artifacts with their matrix idx --- .github/workflows/full-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 1b8a3d402d..fb3ce9cbef 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -93,7 +93,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: full-regression-test-artifact + name: full-regression-test-artifact-${{ matrix.idx }} path: full-regression-test-${{ matrix.idx }}.tar merge: From 2d3cd2a0b91fe3c2945deb87f182176c49b28473 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 17:22:13 -0500 Subject: [PATCH 48/93] fix typo in the per-job artifact names --- .github/workflows/full-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index fb3ce9cbef..94068252a7 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -104,5 +104,5 @@ jobs: uses: actions/upload-artifact/merge@v4 with: name: merged-full-regresssion-artifact - pattern: full-regression-test-*.tar + pattern: full-regression-test-artifact-* From 62bfd7dc74329f5374641dd210df4aea0966e496 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 16:05:55 -0400 Subject: [PATCH 49/93] Move Linux unit test workflow to PR #4304 --- .github/workflows/unittest-linux.yml | 76 ---------------------------- 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/unittest-linux.yml diff --git a/.github/workflows/unittest-linux.yml b/.github/workflows/unittest-linux.yml deleted file mode 100644 index 49477f7765..0000000000 --- a/.github/workflows/unittest-linux.yml +++ /dev/null @@ -1,76 +0,0 @@ -# GitHub action to build LAMMPS on Linux and run standard unit tests -name: "Unittest for Linux" - -on: - push: - branches: - - develop - - quick-regression - pull_request: - branches: - - develop - - workflow_dispatch: - -jobs: - build: - name: Quick Regression Test - if: ${{ github.repository == 'lammps/lammps' }} - runs-on: ubuntu-latest - env: - CCACHE_DIR: ${{ github.workspace }}/.ccache - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: Install extra packages - run: | - sudo apt-get install -y ccache mold ninja-build - sudo apt-get install -y libeigen3-dev libgsl-dev libcurl4-openssl-dev python3-dev - - - name: Create Build Environment - run: mkdir build - - - name: Set up ccache - uses: actions/cache@v4 - with: - path: ${{ env.CCACHE_DIR }} - key: linux-unit-ccache-${{ github.sha }} - restore-keys: linux-unit-ccache- - - - name: Building LAMMPS via CMake - shell: bash - run: | - ccache -z - python3 -m venv linuxenv - source linuxenv/bin/activate - python3 -m pip install numpy - python3 -m pip install pyyaml - cmake -S cmake -B build \ - -C cmake/presets/gcc.cmake \ - -C cmake/presets/most.cmake \ - -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -D CMAKE_C_COMPILER_LAUNCHER=ccache \ - -D BUILD_SHARED_LIBS=on \ - -D LAMMPS_SIZES=bigbig \ - -D DOWNLOAD_POTENTIALS=off \ - -D ENABLE_TESTING=on \ - -D PKG_MANIFOLD=on \ - -D PKG_ML-PACE=on \ - -D PKG_ML-RANN=on \ - -D PKG_RHEO=on \ - -D PKG_PTM=on \ - -D PKG_PYTHON=on \ - -D PKG_QTB=on \ - -D PKG_SMTBQ=on \ - -G Ninja - cmake --build build - ccache -s - - - name: Run Tests - working-directory: build - shell: bash - run: ctest -V From 6fb50cbdc140f9a01ab9fc79f2f2b2fdaba58621 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 23:16:02 -0400 Subject: [PATCH 50/93] integrate quick regression support into regression tester --- .github/workflows/full-regression.yml | 6 +- .github/workflows/quick-regression.yml | 36 ++- tools/regression-tests/config_serial.yaml | 2 +- .../{get-quick-list.py => get_quick_list.py} | 14 +- tools/regression-tests/run_tests.py | 306 +++++++++++------- 5 files changed, 220 insertions(+), 144 deletions(-) rename tools/regression-tests/{get-quick-list.py => get_quick_list.py} (97%) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 94068252a7..d208538a7d 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -11,14 +11,14 @@ on: jobs: build: - name: Build + name: Build LAMMPS # restrict to official LAMMPS repository if: ${{ github.repository == 'lammps/lammps' }} runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache strategy: - max-parallel: 2 + max-parallel: 4 matrix: idx: [ 0, 1, 2, 3 ] @@ -71,7 +71,7 @@ jobs: cmake --build build ccache -s - - name: Full regression tests, splitting the top-level example input into 4 lists + - name: Run Full Regression Tests shell: bash run: | source linuxenv/bin/activate diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 89da0bfb0a..297b45c5ec 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -14,11 +14,16 @@ on: jobs: build: - name: Quick Regression Test + name: Build LAMMPS + # restrict to official LAMMPS repository if: ${{ github.repository == 'lammps/lammps' }} runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache + strategy: + max-parallel: 4 + matrix: + idx: [ 0, 1, 2, 3 ] steps: - name: Checkout repository @@ -70,21 +75,38 @@ jobs: cmake --build build ccache -s - - name: Run Selected Regression Tests + - name: Run Regression Tests for Modified Styles shell: bash run: | source linuxenv/bin/activate - python3 tools/regression-tests/get-quick-list.py python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ - --list-input=input_list.txt - tar -cvf quick-regression-test.tar run.log progress.yaml + --examples-top-level=examples --quick --quick-branch=origin/develop --num-workers=4 + + python3 tools/regression-tests/run_tests.py \ + --lmp-bin=build/lmp \ + --config-file=tools/regression-tests/config_serial.yaml \ + --list-input=input-list-${{ matrix.idx }}.txt \ + --output-file=output-${{ matrix.idx }}.xml \ + --progress-file=progress-${{ matrix.idx }}.yaml \ + --log-file=run-${{ matrix.idx }}.log + + tar -cvf quick-regression-test-${{ matrix.idx }}.tar run-${{ matrix.idx }}.log progress-${{ matrix.idx }}.yaml output-${{ matrix.idx }}.xml - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: quick-regression-test-artifact - path: quick-regression-test.tar + name: quick-regression-test-artifact-${{ matrix.idx }} + path: quick-regression-test-${{ matrix.idx }}.tar + merge: + runs-on: ubuntu-latest + needs: build + steps: + - name: Merge Artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: merged-quick-regresssion-artifact + pattern: quick-regression-test-artifact-* diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index ce984bb2b8..fb79c301f1 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -36,7 +36,7 @@ in.bucky-plus-cnt*, ] - timeout: 10 + timeout: 30 nugget: 1.0 epsilon: 1e-16 diff --git a/tools/regression-tests/get-quick-list.py b/tools/regression-tests/get_quick_list.py similarity index 97% rename from tools/regression-tests/get-quick-list.py rename to tools/regression-tests/get_quick_list.py index 9af91b139c..457137a7b9 100644 --- a/tools/regression-tests/get-quick-list.py +++ b/tools/regression-tests/get_quick_list.py @@ -244,7 +244,7 @@ def get_examples_using_styles(regex, examples='examples'): with open(filename) as f: for line in f: if commands.match(line): - inputs.append(filename) + inputs.append(str(filename)) break return inputs @@ -258,14 +258,8 @@ if __name__ == "__main__": regex = make_regex(styles) if regex: inputs = get_examples_using_styles(regex, os.path.join(LAMMPS_DIR,'examples')) - - print("Suggested inputs for testing:") - # input_list.txt is used for the regression tester tool - with open('input_list.txt', 'w') as f: - for inp in inputs: - print(inp) - f.write(str(inp) + '\n') - + else: + inputs = [] print("Found changes to the following styles:") print("Commands: ", styles['command']) print("Atom styles: ", styles['atom']) @@ -282,3 +276,5 @@ if __name__ == "__main__": print("Region styles: ", styles['region']) print("Integrate styles: ", styles['integrate']) print("Minimize styles: ", styles['minimize']) + + print("Example input files affected: ", len(inputs)) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 82da5bfac5..d369eec9c8 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -29,7 +29,7 @@ TODO: + be able to be invoked from run_tests in the lammps-testing infrastruture The following Python packages need to be installed into an activated environment: - + python3 -m venv testing-env source testing-env/bin/activate pip install numpy pyyaml junit_xml @@ -54,16 +54,16 @@ Example usage: 4) Specify a list of example input scripts (e.g. obtained from running tools/regression-tests/get-quick-list.py) python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ --list-input=input_list.txt - + 5) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples - 6) Analyze the LAMMPS binary annd whole top-level /examples folder in a LAMMPS source tree + 6) Analyze the LAMMPS binary and whole top-level /examples folder in a LAMMPS source tree and generate separate input lists for 8 workers: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples \ --analyze --num-workers=8 - The output of this run is 8 files folder-list-[0-7].txt that lists the subfolders + The output of this run is 8 files folder-list-[0-7].txt that lists the subfolders and 8 files input-list-[0-7].txt that lists the input scripts under the top-level example folders. With these lists, one can launch multiple instances of run_tests.py simultaneously each with a list of example subfolders (Case 3), or with a list of input scripts (Case 4). @@ -76,6 +76,7 @@ import logging import os import re import subprocess +import sys #from multiprocessing import Pool # need "pip install numpy pyyaml" @@ -90,6 +91,13 @@ try: except ImportError: from yaml import SafeLoader as Loader +# infer top level LAMMPS dir from filename +LAMMPS_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', '..')) + +# import git interface module +sys.path.append(os.path.realpath(os.path.join(LAMMPS_DIR, 'tools', 'regression-tests'))) +import get_quick_list + ''' data structure to store the test result ''' @@ -104,11 +112,11 @@ class TestResult: ''' Iterate over a list of input folders and scripts using the given lmp_binary and the testing configuration - lmp_binary : full path to the LAMMPS binary + lmp_binary : full path to the LAMMPS binary input_folder : the absolute path to the input files input_list : list of the input scripts under the input_folder config : the dict that contains the test configuration - + output_buf: placeholder for storing the output of a given worker return @@ -186,7 +194,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_skipped = num_skipped + 1 test_id = test_id + 1 continue - + if 'packaged not installed' in status: msg = " + " + input + f" ({test_id+1}/{num_tests}): due to package not installed (see {progress_file})" logger.info(msg) @@ -196,14 +204,14 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_skipped = num_skipped + 1 test_id = test_id + 1 continue - + # if annotating input scripts with REG markers is True if using_markers == True: input_test = 'test.' + input if os.path.isfile(input) == True: if has_markers(input): process_markers(input, input_test) - + else: print(f"WARNING: {input} does not have REG markers") input_markers = input + '.markers' @@ -214,7 +222,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file os.system(cmd_str) generate_markers(input, input_markers) process_markers(input_markers, input_test) - + else: # else the same file name for testing input_test = input @@ -222,7 +230,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file str_t = " + " + input_test + f" ({test_id+1}/{num_tests})" logger.info(str_t) print(str_t) - + # check if a reference log file exists in the current folder: log.DDMMMYY.basename.g++.[nprocs] # assuming that input file names start with "in." (except in.disp, in.disp2 and in.dos in phonon/) basename = input_test[3:] @@ -260,15 +268,15 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if there is no ref log file and not running with valgrind if ref_logfile_exist == False and use_valgrind == False: max_np = 4 - + saved_nprocs = config['nprocs'] - + # if the maximum number of procs is different from the value in the configuration file # then override the setting for this particular input script if max_np != int(config['nprocs']): config['nprocs'] = str(max_np) - # store the value of nprocs + # store the value of nprocs nprocs = int(config['nprocs']) # if valgrind is used for mem check, the run command will be @@ -296,7 +304,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file error_line = line break logger.info(f" The run terminated with {input_test} gives the following output:") - logger.info(f" {error_line}") + logger.info(f" {error_line}") if "Unrecognized" in output: result.status = f"error, unrecognized command, package not installed, {error_line}" elif "Unknown" in output: @@ -334,7 +342,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if skip numerical checks, then skip the rest if skip_numerical_check == True: - msg = "completed, skipping numerical checks" + msg = "completed, skipping numerical checks" if use_valgrind == True: if "All heap blocks were freed" in error: msg += ", no memory leak" @@ -475,7 +483,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file if verbose == True: print("Quantities".ljust(width) + "Output".center(width) + "Reference".center(width) + "Abs Diff Check".center(width) + "Rel Diff Check".center(width)) - + # check if overrides for this input scipt is specified overrides = {} if 'overrides' in config: @@ -521,7 +529,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file abs_diff_check = "PASSED" rel_diff_check = "PASSED" - + if quantity in config['tolerance'] or quantity in overrides: if quantity in config['tolerance']: @@ -547,7 +555,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file else: # N/A means that tolerances are not defined in the config file abs_diff_check = "N/A" - rel_diff_check = "N/A" + rel_diff_check = "N/A" if verbose == True and abs_diff_check != "N/A" and rel_diff_check != "N/A": print(f"{thermo[irun]['keywords'][i].ljust(width)} {str(val).rjust(20)} {str(ref).rjust(20)} " @@ -580,7 +588,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg = f" all {num_checks} thermo checks passed." print(msg) logger.info(msg) - result.status = "passed" + result.status = "passed" num_passed = num_passed + 1 results.append(result) @@ -621,7 +629,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file of output and the inner list the values of the columns matching the header keywords for that step. ''' def extract_thermo(yamlFileName): - docs = "" + docs = "" with open(yamlFileName) as f: for line in f: m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line) @@ -658,7 +666,7 @@ def extract_data_to_yaml(inputFileName): if "Loop" in line: reading = False docs += "...\n" - + if reading == True and "Step" not in line: if "WARNING" in line: continue @@ -718,7 +726,7 @@ def get_lammps_build_configuration(lmp_binary): operating_system = line if "Git info" in line: GitInfo = line - + row += 1 packages = packages.strip() @@ -729,7 +737,7 @@ def get_lammps_build_configuration(lmp_binary): if line != "": if "-DLAMMPS" in line: compile_flags += " " + line.strip() - + row += 1 return packages.split(" "), operating_system, GitInfo, compile_flags @@ -780,7 +788,7 @@ def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): for i in range(num_workers): args.append((input1, input2, output_buf)) - with Pool(num_workers) as pool: + with Pool(num_workers) as pool: results = pool.starmap(func, args) ''' def divide_into_N(original_list, N): @@ -807,7 +815,7 @@ def process_markers(inputFileName, outputFileName): # replace #REG:ADD with empty string (i.e. adding the text at the end of the line) data = data.replace("#REG:ADD", "") - # replace the line contaning #REG:SUB with a line with the text that follows this marker + # replace the line contaning #REG:SUB with a line with the text that follows this marker data = data.splitlines() separator="#REG:SUB" out = [] @@ -881,6 +889,8 @@ if __name__ == "__main__": list_input = "" list_subfolders = "" analyze = False + quick = False + quick_branch = "origin/develop" # distribute the total number of input scripts over the workers num_workers = 1 @@ -888,9 +898,9 @@ if __name__ == "__main__": # parse the arguments parser = ArgumentParser() parser.add_argument("--lmp-bin", dest="lmp_binary", default="", help="LAMMPS binary") - parser.add_argument("--config-file", dest="config_file", default=configFileName, - help="Configuration YAML file") - parser.add_argument("--examples-top-level", dest="example_toplevel", default="", help="Examples top-level") + parser.add_argument("--config-file", dest="config_file", default=configFileName, help="Configuration YAML file") + parser.add_argument("--examples-top-level", dest="example_toplevel", default=os.path.join(LAMMPS_DIR, 'examples'), + help="Examples top-level") parser.add_argument("--example-folders", dest="example_folders", default="", help="Example subfolders") parser.add_argument("--list-input", dest="list_input", default="", help="File that lists the input scripts") parser.add_argument("--list-subfolders", dest="list_subfolders", default="", help="File that lists the subfolders") @@ -904,8 +914,13 @@ if __name__ == "__main__": parser.add_argument("--output-file",dest="output", default=output_file, help="Output file") parser.add_argument("--log-file",dest="logfile", default=log_file, help="Log file") parser.add_argument("--progress-file",dest="progress_file", default=progress_file, help="Progress file") - parser.add_argument("--analyze",dest="analyze", action='store_true', default=False, + analyze = parser.add_mutually_exclusive_group() + analyze.add_argument("--analyze",dest="analyze", action='store_true', default=False, help="Analyze the testing folders and report statistics, not running the tests") + analyze.add_argument("--quick", dest="quick", action='store_true', default=False, + help="Determine which test inputs have commands changed between a branch and the head") + parser.add_argument("--quick-branch", dest="quick_branch", default=quick_branch, + help="Branch to which compare the current head to for changed styles") parser.add_argument("--skip-numerical-check",dest="skip_numerical_check", action='store_true', default=False, help="Generating reference data") @@ -924,11 +939,13 @@ if __name__ == "__main__": example_toplevel = args.example_toplevel if args.example_folders != "": example_subfolders = args.example_folders.split(';') - + genref = args.genref verbose = args.verbose log_file = args.logfile analyze = args.analyze + quick = args.quick + quick_branch = args.quick_branch skip_numerical_check = args.skip_numerical_check resume = args.resume progress_file = args.progress_file @@ -948,51 +965,20 @@ if __name__ == "__main__": inplace_input = True test_cases = [] - # if the example folders are not specified from the command-line argument --example-folders - # then use the path from --example-top-folder, or from the input-list read from a text file - if len(example_subfolders) == 0: - - # if the top level is specified - if len(example_toplevel) != 0: - # getting the list of all the input files because there are subfolders (e.g. PACKAGES) under the top level - cmd_str = f"find {example_toplevel} -name \"in.*\" " - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - input_list = p.stdout.split('\n') - input_list.remove("") - msg = f"\nThere are {len(input_list)} input scripts in total under the {example_toplevel} folder." + # generate list of input scripts with commands that have been changed + if quick: + headers = get_quick_list.changed_files_from_git(quick_branch) + print("headers ", headers) + styles = get_quick_list.get_command_from_header(headers, LAMMPS_DIR) + print("styles ", styles) + regex = get_quick_list.make_regex(styles) + print("regex ", regex) + if regex: + input_list = get_quick_list.get_examples_using_styles(regex, example_toplevel) + msg = f"\nThere are {len(input_list)} input scripts with changed styles relative to branch {quick_branch}." print(msg) logger.info(msg) - # get the input file list - # TODO: generate a list of tuples, each tuple contains a folder list for a worker, - # then use multiprocessing.Pool starmap() - folder_list = [] - for input in input_list: - folder = input.rsplit('/', 1)[0] - # unique folders in the list - if folder not in folder_list: - folder_list.append(folder) - - # divide the list of folders into num_workers chunks - sublists = divide_into_N(folder_list, num_workers) - - # write each chunk to a file - idx = 0 - for list_input in sublists: - filename = f"folder-list-{idx}.txt" - with open(filename, "w") as f: - for folder in list_input: - # count the number of input scripts in each folder - cmd_str = f"ls {folder}/in.* | wc -l" - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - num_input = p.stdout.split('\n')[0] - f.write(folder + ' ' + num_input + '\n') - f.close() - idx = idx + 1 - - # working on all the folders for now - example_subfolders = folder_list - # divide the list of input scripts into num_workers chunks sublists = divide_into_N(input_list, num_workers) @@ -1005,53 +991,125 @@ if __name__ == "__main__": f.write(inp + '\n') f.close() idx = idx + 1 - - # if a list of subfolders is provided from a text file (list_subfolders from the command-line argument) - elif len(list_subfolders) != 0: - num_inputscripts = 0 - with open(list_subfolders, "r") as f: - all_subfolders = f.read().splitlines() - f.close() - for line in all_subfolders: - if len(line) > 0: - # skip subfolders - if line[0] == '#': - continue - folder = line.split()[0] - example_subfolders.append(folder) - num_inputscripts += int(line.split()[1]) - msg = f"\nThere are {len(example_subfolders)} folders with {num_inputscripts} input scripts in total listed in {list_input}." - print(msg) - logger.info(msg) - - # if a list of input scripts is provided from a text file (list_input from the command-line argument) - elif len(list_input) != 0: - num_inputscripts = 0 - folder_list = [] - with open(list_input, "r") as f: - all_inputs = f.read().splitlines() - f.close() - - for line in all_inputs: - if len(line) > 0: - # skip input scripts - if line[0] == '#': - continue - input = line.split()[0] - folder = input.rsplit('/', 1)[0] - # unique folders in the list - if folder not in folder_list: - folder_list.append(folder) - example_inputs.append(input) - num_inputscripts += 1 - - example_subfolders = folder_list - msg = f"\nThere are {num_inputscripts} input scripts listed in {list_input}." - print(msg) - logger.info(msg) - else: - inplace_input = False + msg = f"\nThere are no input scripts with changed styles relative to branch {quick_branch}." + print(msg) + logger.info(msg) + for idx in range(0, num_workers): + try: + os.remove(f"folder-list-{idx}.txt") + except: + pass + try: + os.remove(f"input-list-{idx}.txt") + except: + pass + quit() + else: + # if the example folders are not specified from the command-line argument --example-folders + # then use the path from --example-top-folder, or from the input-list read from a text file + if len(example_subfolders) == 0: + + # if the top level is specified + if len(example_toplevel) != 0: + # getting the list of all the input files because there are subfolders (e.g. PACKAGES) under the top level + cmd_str = f"find {example_toplevel} -name \"in.*\" " + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + input_list = p.stdout.split('\n') + input_list.remove("") + msg = f"\nThere are {len(input_list)} input scripts in total under the {example_toplevel} folder." + print(msg) + logger.info(msg) + + # get the input file list + # TODO: generate a list of tuples, each tuple contains a folder list for a worker, + # then use multiprocessing.Pool starmap() + folder_list = [] + for input in input_list: + folder = input.rsplit('/', 1)[0] + # unique folders in the list + if folder not in folder_list: + folder_list.append(folder) + + # divide the list of folders into num_workers chunks + sublists = divide_into_N(folder_list, num_workers) + + # write each chunk to a file + idx = 0 + for list_input in sublists: + filename = f"folder-list-{idx}.txt" + with open(filename, "w") as f: + for folder in list_input: + # count the number of input scripts in each folder + cmd_str = f"ls {folder}/in.* | wc -l" + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + num_input = p.stdout.split('\n')[0] + f.write(folder + ' ' + num_input + '\n') + f.close() + idx = idx + 1 + + # working on all the folders for now + example_subfolders = folder_list + + # divide the list of input scripts into num_workers chunks + sublists = divide_into_N(input_list, num_workers) + + # write each chunk to a file + idx = 0 + for list_input in sublists: + filename = f"input-list-{idx}.txt" + with open(filename, "w") as f: + for inp in list_input: + f.write(inp + '\n') + f.close() + idx = idx + 1 + + # if a list of subfolders is provided from a text file (list_subfolders from the command-line argument) + elif len(list_subfolders) != 0: + num_inputscripts = 0 + with open(list_subfolders, "r") as f: + all_subfolders = f.read().splitlines() + f.close() + for line in all_subfolders: + if len(line) > 0: + # skip subfolders + if line[0] == '#': + continue + folder = line.split()[0] + example_subfolders.append(folder) + num_inputscripts += int(line.split()[1]) + msg = f"\nThere are {len(example_subfolders)} folders with {num_inputscripts} input scripts in total listed in {list_input}." + print(msg) + logger.info(msg) + + # if a list of input scripts is provided from a text file (list_input from the command-line argument) + elif len(list_input) != 0: + num_inputscripts = 0 + folder_list = [] + with open(list_input, "r") as f: + all_inputs = f.read().splitlines() + f.close() + + for line in all_inputs: + if len(line) > 0: + # skip input scripts + if line[0] == '#': + continue + input = line.split()[0] + folder = input.rsplit('/', 1)[0] + # unique folders in the list + if folder not in folder_list: + folder_list.append(folder) + example_inputs.append(input) + num_inputscripts += 1 + + example_subfolders = folder_list + msg = f"\nThere are {num_inputscripts} input scripts listed in {list_input}." + print(msg) + logger.info(msg) + + else: + inplace_input = False # if analyze the example folders (and split into separate lists for top-level examples), not running any test if analyze == True: @@ -1063,7 +1121,7 @@ if __name__ == "__main__": absolute_path = os.path.abspath(configFileName) print(f"\nRegression test configuration file:\n {absolute_path}") f.close() - + # check if lmp_binary is specified in the config yaml if lmp_binary == "": if config['lmp_binary'] == "": @@ -1091,7 +1149,7 @@ if __name__ == "__main__": pwd = p.stdout.split('\n')[0] pwd = os.path.abspath(pwd) print("\nWorking directory: " + pwd) - + progress_file_abs = pwd + "/" + progress_file last_progress = {} if resume == False: @@ -1124,7 +1182,7 @@ if __name__ == "__main__": for i in range(num_workers): args.append((input1, input2, output)) - with Pool(num_workers) as pool: + with Pool(num_workers) as pool: results = pool.starmap(func, args) ''' @@ -1204,9 +1262,9 @@ if __name__ == "__main__": print(msg) # optional: need to check if junit_xml packaged is already installed in the env - # generate a JUnit XML file + # generate a JUnit XML file with open(output_file, 'w') as f: - test_cases = [] + test_cases = [] for result in all_results: #print(f"{result.name}: {result.status}") case = TestCase(name=result.name, classname=result.name) From f39e795bca9d1f420e74c8ea7dff8d7fe2224809 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 23:19:16 -0400 Subject: [PATCH 51/93] revert changes to create_box --- src/create_box.cpp | 56 +++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/src/create_box.cpp b/src/create_box.cpp index 93e699e06b..8a74ffd7bd 100644 --- a/src/create_box.cpp +++ b/src/create_box.cpp @@ -49,13 +49,11 @@ void CreateBox::command(int narg, char **arg) Region *region = nullptr; int triclinic_general = 0; - if (strcmp(arg[1], "NULL") == 0) - triclinic_general = 1; + if (strcmp(arg[1],"NULL") == 0) triclinic_general = 1; else { region = domain->get_region_by_id(arg[1]); if (!region) error->all(FLERR, "Create_box region {} does not exist", arg[1]); - if (region->bboxflag == 0) - error->all(FLERR, "Create_box region does not support a bounding box"); + if (region->bboxflag == 0) error->all(FLERR, "Create_box region does not support a bounding box"); region->init(); } @@ -79,9 +77,9 @@ void CreateBox::command(int narg, char **arg) domain->boxlo[2] = region->extent_zlo; domain->boxhi[2] = region->extent_zhi; - // region is prism - // seutp restricted triclinic box - // set simulation domain from prism params + // region is prism + // seutp restricted triclinic box + // set simulation domain from prism params } else { domain->triclinic = 1; @@ -99,17 +97,17 @@ void CreateBox::command(int narg, char **arg) if (domain->dimension == 2) { if (domain->boxlo[2] >= 0.0 || domain->boxhi[2] <= 0.0) - error->all(FLERR, "Create_box region zlo/zhi for 2d simulation must straddle 0.0"); + error->all(FLERR,"Create_box region zlo/zhi for 2d simulation must straddle 0.0"); } - // setup general triclinic box (with no region) - // read next box extent arguments to create ABC edge vectors + origin - // define_general_triclinic() converts - // ABC edge vectors + origin to restricted triclinic + // setup general triclinic box (with no region) + // read next box extent arguments to create ABC edge vectors + origin + // define_general_triclinic() converts + // ABC edge vectors + origin to restricted triclinic } else if (triclinic_general) { if (!domain->lattice->is_general_triclinic()) - error->all(FLERR, "Create_box for general triclinic requires triclnic/general lattice"); + error->all(FLERR,"Create_box for general triclinic requires triclnic/general lattice"); if (iarg + 6 > narg) utils::missing_cmd_args(FLERR, "create_box general triclinic", error); @@ -123,50 +121,42 @@ void CreateBox::command(int narg, char **arg) if (domain->dimension == 2) if (clo != -0.5 || chi != 0.5) - error->all(FLERR, "Create_box for general triclinic requires clo = -0.5 and chi = 0.5"); + error->all(FLERR,"Create_box for general triclinic requires clo = -0.5 and chi = 0.5"); // use lattice2box() to generate origin and ABC vectors // origin = abc lo // ABC vectors = hi in one dim - origin - double avec[3], bvec[3], cvec[3], origin[3]; - double px, py, pz; + double avec[3],bvec[3],cvec[3],origin[3]; + double px,py,pz; - px = alo; - py = blo; - pz = clo; - domain->lattice->lattice2box(px, py, pz); + px = alo; py = blo; pz = clo; + domain->lattice->lattice2box(px,py,pz); origin[0] = px; origin[1] = py; origin[2] = pz; - px = ahi; - py = blo; - pz = clo; - domain->lattice->lattice2box(px, py, pz); + px = ahi; py = blo; pz = clo; + domain->lattice->lattice2box(px,py,pz); avec[0] = px - origin[0]; avec[1] = py - origin[1]; avec[2] = pz - origin[2]; - px = alo; - py = bhi; - pz = clo; - domain->lattice->lattice2box(px, py, pz); + px = alo; py = bhi; pz = clo; + domain->lattice->lattice2box(px,py,pz); bvec[0] = px - origin[0]; bvec[1] = py - origin[1]; bvec[2] = pz - origin[2]; - px = alo; - py = blo; - pz = chi; - domain->lattice->lattice2box(px, py, pz); + px = alo; py = blo; pz = chi; + domain->lattice->lattice2box(px,py,pz); cvec[0] = px - origin[0]; cvec[1] = py - origin[1]; cvec[2] = pz - origin[2]; // define general triclinic box within Domain class - domain->define_general_triclinic(avec, bvec, cvec, origin); + domain->define_general_triclinic(avec,bvec,cvec,origin); } // if molecular, zero out topology info From 0f1b7b5bd6b725740410511acae5c478e4c8bd43 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 00:09:19 -0400 Subject: [PATCH 52/93] simplify even more --- .github/workflows/full-regression.yml | 9 ++++----- .github/workflows/quick-regression.yml | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index d208538a7d..d1302836d3 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -30,8 +30,8 @@ jobs: - name: Install extra packages run: | - sudo apt-get install -y ccache ninja-build - sudo apt-get install -y libeigen3-dev libgsl-dev libcurl4-openssl-dev python3-dev + sudo apt-get install -y ccache ninja-build libeigen3-dev \ + libgsl-dev libcurl4-openssl-dev python3-dev - name: Create Build Environment run: mkdir build @@ -49,9 +49,8 @@ jobs: ccache -z python3 -m venv linuxenv source linuxenv/bin/activate - python3 -m pip install numpy - python3 -m pip install pyyaml - python3 -m pip install junit_xml + python3 -m pip install --upgrade pip + python3 -m pip install numpy pyyaml junit_xml cmake -S cmake -B build \ -C cmake/presets/gcc.cmake \ -C cmake/presets/most.cmake \ diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 297b45c5ec..e3feb637d7 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -34,8 +34,8 @@ jobs: - name: Install extra packages run: | - sudo apt-get install -y ccache ninja-build - sudo apt-get install -y libeigen3-dev libgsl-dev libcurl4-openssl-dev python3-dev + sudo apt-get install -y ccache ninja-build libeigen3-dev \ + libgsl-dev libcurl4-openssl-dev python3-dev - name: Create Build Environment run: mkdir build @@ -53,9 +53,8 @@ jobs: ccache -z python3 -m venv linuxenv source linuxenv/bin/activate - python3 -m pip install numpy - python3 -m pip install pyyaml - python3 -m pip install junit_xml + python3 -m pip install --upgrade pip + python3 -m pip install numpy pyyaml junit_xml cmake -S cmake -B build \ -C cmake/presets/gcc.cmake \ -C cmake/presets/most.cmake \ From af747ac6c00795114d02f10368e49deff800a0fe Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 00:17:25 -0400 Subject: [PATCH 53/93] restore old code structure so we can test subsets again --- tools/regression-tests/run_tests.py | 192 ++++++++++++++-------------- 1 file changed, 96 insertions(+), 96 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index d369eec9c8..e53fcc6126 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -899,8 +899,7 @@ if __name__ == "__main__": parser = ArgumentParser() parser.add_argument("--lmp-bin", dest="lmp_binary", default="", help="LAMMPS binary") parser.add_argument("--config-file", dest="config_file", default=configFileName, help="Configuration YAML file") - parser.add_argument("--examples-top-level", dest="example_toplevel", default=os.path.join(LAMMPS_DIR, 'examples'), - help="Examples top-level") + parser.add_argument("--examples-top-level", dest="example_toplevel", default="", help="Examples top-level") parser.add_argument("--example-folders", dest="example_folders", default="", help="Example subfolders") parser.add_argument("--list-input", dest="list_input", default="", help="File that lists the input scripts") parser.add_argument("--list-subfolders", dest="list_subfolders", default="", help="File that lists the subfolders") @@ -974,6 +973,7 @@ if __name__ == "__main__": regex = get_quick_list.make_regex(styles) print("regex ", regex) if regex: + if not example_toplevel: example_toplevel = os.path.join(LAMMPS_DIR, 'examples') input_list = get_quick_list.get_examples_using_styles(regex, example_toplevel) msg = f"\nThere are {len(input_list)} input scripts with changed styles relative to branch {quick_branch}." print(msg) @@ -1005,111 +1005,111 @@ if __name__ == "__main__": except: pass quit() - else: - # if the example folders are not specified from the command-line argument --example-folders - # then use the path from --example-top-folder, or from the input-list read from a text file - if len(example_subfolders) == 0: - # if the top level is specified - if len(example_toplevel) != 0: - # getting the list of all the input files because there are subfolders (e.g. PACKAGES) under the top level - cmd_str = f"find {example_toplevel} -name \"in.*\" " - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - input_list = p.stdout.split('\n') - input_list.remove("") - msg = f"\nThere are {len(input_list)} input scripts in total under the {example_toplevel} folder." - print(msg) - logger.info(msg) + # if the example folders are not specified from the command-line argument --example-folders + # then use the path from --example-top-folder, or from the input-list read from a text file + elif len(example_subfolders) == 0: - # get the input file list - # TODO: generate a list of tuples, each tuple contains a folder list for a worker, - # then use multiprocessing.Pool starmap() - folder_list = [] - for input in input_list: - folder = input.rsplit('/', 1)[0] - # unique folders in the list - if folder not in folder_list: - folder_list.append(folder) + # if the top level is specified + if len(example_toplevel) != 0: + # getting the list of all the input files because there are subfolders (e.g. PACKAGES) under the top level + cmd_str = f"find {example_toplevel} -name \"in.*\" " + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + input_list = p.stdout.split('\n') + input_list.remove("") + msg = f"\nThere are {len(input_list)} input scripts in total under the {example_toplevel} folder." + print(msg) + logger.info(msg) - # divide the list of folders into num_workers chunks - sublists = divide_into_N(folder_list, num_workers) + # get the input file list + # TODO: generate a list of tuples, each tuple contains a folder list for a worker, + # then use multiprocessing.Pool starmap() + folder_list = [] + for input in input_list: + folder = input.rsplit('/', 1)[0] + # unique folders in the list + if folder not in folder_list: + folder_list.append(folder) - # write each chunk to a file - idx = 0 - for list_input in sublists: - filename = f"folder-list-{idx}.txt" - with open(filename, "w") as f: - for folder in list_input: - # count the number of input scripts in each folder - cmd_str = f"ls {folder}/in.* | wc -l" - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) - num_input = p.stdout.split('\n')[0] - f.write(folder + ' ' + num_input + '\n') - f.close() - idx = idx + 1 + # divide the list of folders into num_workers chunks + sublists = divide_into_N(folder_list, num_workers) - # working on all the folders for now - example_subfolders = folder_list - - # divide the list of input scripts into num_workers chunks - sublists = divide_into_N(input_list, num_workers) - - # write each chunk to a file - idx = 0 - for list_input in sublists: - filename = f"input-list-{idx}.txt" - with open(filename, "w") as f: - for inp in list_input: - f.write(inp + '\n') - f.close() - idx = idx + 1 - - # if a list of subfolders is provided from a text file (list_subfolders from the command-line argument) - elif len(list_subfolders) != 0: - num_inputscripts = 0 - with open(list_subfolders, "r") as f: - all_subfolders = f.read().splitlines() + # write each chunk to a file + idx = 0 + for list_input in sublists: + filename = f"folder-list-{idx}.txt" + with open(filename, "w") as f: + for folder in list_input: + # count the number of input scripts in each folder + cmd_str = f"ls {folder}/in.* | wc -l" + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + num_input = p.stdout.split('\n')[0] + f.write(folder + ' ' + num_input + '\n') f.close() - for line in all_subfolders: - if len(line) > 0: - # skip subfolders - if line[0] == '#': - continue - folder = line.split()[0] - example_subfolders.append(folder) - num_inputscripts += int(line.split()[1]) - msg = f"\nThere are {len(example_subfolders)} folders with {num_inputscripts} input scripts in total listed in {list_input}." - print(msg) - logger.info(msg) + idx = idx + 1 - # if a list of input scripts is provided from a text file (list_input from the command-line argument) - elif len(list_input) != 0: - num_inputscripts = 0 - folder_list = [] - with open(list_input, "r") as f: - all_inputs = f.read().splitlines() + # working on all the folders for now + example_subfolders = folder_list + + # divide the list of input scripts into num_workers chunks + sublists = divide_into_N(input_list, num_workers) + + # write each chunk to a file + idx = 0 + for list_input in sublists: + filename = f"input-list-{idx}.txt" + with open(filename, "w") as f: + for inp in list_input: + f.write(inp + '\n') f.close() + idx = idx + 1 - for line in all_inputs: - if len(line) > 0: - # skip input scripts - if line[0] == '#': - continue - input = line.split()[0] - folder = input.rsplit('/', 1)[0] - # unique folders in the list - if folder not in folder_list: - folder_list.append(folder) - example_inputs.append(input) - num_inputscripts += 1 + # if a list of subfolders is provided from a text file (list_subfolders from the command-line argument) + elif len(list_subfolders) != 0: + num_inputscripts = 0 + with open(list_subfolders, "r") as f: + all_subfolders = f.read().splitlines() + f.close() + for line in all_subfolders: + if len(line) > 0: + # skip subfolders + if line[0] == '#': + continue + folder = line.split()[0] + example_subfolders.append(folder) + num_inputscripts += int(line.split()[1]) + msg = f"\nThere are {len(example_subfolders)} folders with {num_inputscripts} input scripts in total listed in {list_input}." + print(msg) + logger.info(msg) - example_subfolders = folder_list - msg = f"\nThere are {num_inputscripts} input scripts listed in {list_input}." - print(msg) - logger.info(msg) + # if a list of input scripts is provided from a text file (list_input from the command-line argument) + elif len(list_input) != 0: + num_inputscripts = 0 + folder_list = [] + with open(list_input, "r") as f: + all_inputs = f.read().splitlines() + f.close() - else: - inplace_input = False + for line in all_inputs: + if len(line) > 0: + # skip input scripts + if line[0] == '#': + continue + input = line.split()[0] + folder = input.rsplit('/', 1)[0] + # unique folders in the list + if folder not in folder_list: + folder_list.append(folder) + example_inputs.append(input) + num_inputscripts += 1 + + example_subfolders = folder_list + msg = f"\nThere are {num_inputscripts} input scripts listed in {list_input}." + print(msg) + logger.info(msg) + + else: + inplace_input = False # if analyze the example folders (and split into separate lists for top-level examples), not running any test if analyze == True: From 3ea061279597bb352aed0946746ebaba72cff01b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 00:37:59 -0400 Subject: [PATCH 54/93] small cleanups --- .github/workflows/full-regression.yml | 1 + tools/regression-tests/get_quick_list.py | 1 + tools/regression-tests/run_tests.py | 4 +--- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index d1302836d3..821481567d 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -27,6 +27,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 2 + show-progress: false - name: Install extra packages run: | diff --git a/tools/regression-tests/get_quick_list.py b/tools/regression-tests/get_quick_list.py index 457137a7b9..9ebcce0aa2 100644 --- a/tools/regression-tests/get_quick_list.py +++ b/tools/regression-tests/get_quick_list.py @@ -278,3 +278,4 @@ if __name__ == "__main__": print("Minimize styles: ", styles['minimize']) print("Example input files affected: ", len(inputs)) + print("inputs: ", inputs.sort()) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index e53fcc6126..21f79b66de 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -967,15 +967,13 @@ if __name__ == "__main__": # generate list of input scripts with commands that have been changed if quick: headers = get_quick_list.changed_files_from_git(quick_branch) - print("headers ", headers) styles = get_quick_list.get_command_from_header(headers, LAMMPS_DIR) - print("styles ", styles) regex = get_quick_list.make_regex(styles) - print("regex ", regex) if regex: if not example_toplevel: example_toplevel = os.path.join(LAMMPS_DIR, 'examples') input_list = get_quick_list.get_examples_using_styles(regex, example_toplevel) msg = f"\nThere are {len(input_list)} input scripts with changed styles relative to branch {quick_branch}." + msg += "\nChanged styles: " + str(styles) print(msg) logger.info(msg) From d3d9094ad06abfe918b955155747eacc106f0b8a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 00:44:23 -0400 Subject: [PATCH 55/93] update settings when the actions will be triggered automatically --- .github/workflows/full-regression.yml | 1 - .github/workflows/quick-regression.yml | 4 ---- 2 files changed, 5 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 821481567d..d13e8eb385 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -5,7 +5,6 @@ on: push: branches: - develop - - quick-regression workflow_dispatch: diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index e3feb637d7..b6ca7c5618 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -2,10 +2,6 @@ name: "Quick Regression Test" on: - push: - branches: - - develop - - quick-regression pull_request: branches: - develop From aa901b205defba9889dd89120ab6fbc8c2fd074d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 00:59:15 -0400 Subject: [PATCH 56/93] only run quick regression if there are actual input files to process --- .github/workflows/quick-regression.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index b6ca7c5618..7fc684be5d 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -79,13 +79,16 @@ jobs: --config-file=tools/regression-tests/config_serial.yaml \ --examples-top-level=examples --quick --quick-branch=origin/develop --num-workers=4 - python3 tools/regression-tests/run_tests.py \ + if [ -f input-list-${{ matrix.idx }}.txt ] + then \ + python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ --list-input=input-list-${{ matrix.idx }}.txt \ --output-file=output-${{ matrix.idx }}.xml \ --progress-file=progress-${{ matrix.idx }}.yaml \ --log-file=run-${{ matrix.idx }}.log + fi tar -cvf quick-regression-test-${{ matrix.idx }}.tar run-${{ matrix.idx }}.log progress-${{ matrix.idx }}.yaml output-${{ matrix.idx }}.xml From da98d30cf791ec94887ec95ee193e7e8fd265271 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:31:52 -0400 Subject: [PATCH 57/93] update README --- tools/regression-tests/README | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tools/regression-tests/README b/tools/regression-tests/README index 810b96e87c..eec11c19ff 100644 --- a/tools/regression-tests/README +++ b/tools/regression-tests/README @@ -34,13 +34,13 @@ Limitations: TODO: + keep track of the testing progress to resume the testing from the last checkpoint - + distribute the input list across multiple processes via multiprocessing, or + + distribute the input list across multiple processes via multiprocessing, or split the list of input scripts into separate runs (there are 800+ input script under the top-level examples) + be able to be invoked from run_tests in the lammps-testing infrastruture The following Python packages need to be installed into an activated environment: - + python3 -m venv testing-env source testing-env/bin/activate pip install numpy pyyaml junit_xml @@ -62,18 +62,24 @@ Example uses: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ --list-input=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ --log-file=run1.log - + 4) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples - 5) Analyze (dry run) the LAMMPS binary annd whole top-level /examples folder in a LAMMPS source tree + 5) Analyze (dry run) the LAMMPS binary and whole top-level /examples folder in a LAMMPS source tree and generate separate input lists for 8 workers: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples \ - --dry-run --num-workers=8 + --analyze --num-workers=8 This is used for splitting the subfolders into separate input lists and launching different instances of run_tests.py simultaneously. + 6) Prepare (dry run) for a quick regression test run that only runs inputs with commands and styles that + have changes in the current branch versus the selected upstream branch. Curb at 40 runs and split and + write out separate lists for 4 workers: + python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples \ + --quick --quick-branch=origin/develop --quick-max= 40 --num-workers=4 + An example of the test configuration `config.yaml` is given as below. --- From 6aa6ed86be223c8122b0dc207b42d9e516e57a97 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:33:12 -0400 Subject: [PATCH 58/93] Curb number of (randomly) selected tests for quick regression run --- tools/regression-tests/run_tests.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 21f79b66de..2cc1be0618 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -74,6 +74,7 @@ import datetime import fnmatch import logging import os +import random import re import subprocess import sys @@ -891,6 +892,7 @@ if __name__ == "__main__": analyze = False quick = False quick_branch = "origin/develop" + quick_max = 50 # distribute the total number of input scripts over the workers num_workers = 1 @@ -920,6 +922,8 @@ if __name__ == "__main__": help="Determine which test inputs have commands changed between a branch and the head") parser.add_argument("--quick-branch", dest="quick_branch", default=quick_branch, help="Branch to which compare the current head to for changed styles") + parser.add_argument("--quick-max", dest="quick_max", default=50, + help="Maximum number of inputs to randomly select") parser.add_argument("--skip-numerical-check",dest="skip_numerical_check", action='store_true', default=False, help="Generating reference data") @@ -945,6 +949,7 @@ if __name__ == "__main__": analyze = args.analyze quick = args.quick quick_branch = args.quick_branch + quick_max = args.quick_max skip_numerical_check = args.skip_numerical_check resume = args.resume progress_file = args.progress_file @@ -974,6 +979,11 @@ if __name__ == "__main__": input_list = get_quick_list.get_examples_using_styles(regex, example_toplevel) msg = f"\nThere are {len(input_list)} input scripts with changed styles relative to branch {quick_branch}." msg += "\nChanged styles: " + str(styles) + + if len(input_list) > quick_max: + input_list = random.sample(input_list, quick_max) + msq += "\nTesting " + str(quick_max) + " randomly selected inputs" + print(msg) logger.info(msg) From 14dc3261604954cdd38a424434e689dc60feeaed Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:36:50 -0400 Subject: [PATCH 59/93] fix typo --- tools/regression-tests/run_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 2cc1be0618..07e3aca049 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -982,7 +982,7 @@ if __name__ == "__main__": if len(input_list) > quick_max: input_list = random.sample(input_list, quick_max) - msq += "\nTesting " + str(quick_max) + " randomly selected inputs" + msg += "\nTesting " + str(quick_max) + " randomly selected inputs" print(msg) logger.info(msg) From a9573551a74c11c1a868b56853b55d95f87eb689 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:43:16 -0400 Subject: [PATCH 60/93] run 100 quick test inputs at the most --- .github/workflows/quick-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 7fc684be5d..618a3f87ae 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -77,7 +77,7 @@ jobs: python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ - --examples-top-level=examples --quick --quick-branch=origin/develop --num-workers=4 + --examples-top-level=examples --quick --quick-branch=origin/develop --quick-max=100 --num-workers=4 if [ -f input-list-${{ matrix.idx }}.txt ] then \ From 27d5ad1714ed98166c08a22012026c3f64e93836 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:49:13 -0400 Subject: [PATCH 61/93] convert string to int --- tools/regression-tests/run_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 07e3aca049..0b9d5c2a37 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -949,7 +949,7 @@ if __name__ == "__main__": analyze = args.analyze quick = args.quick quick_branch = args.quick_branch - quick_max = args.quick_max + quick_max = int(args.quick_max) skip_numerical_check = args.skip_numerical_check resume = args.resume progress_file = args.progress_file From 4ed5dfe88d891f1c8034550c55576484a45356ee Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 4 Sep 2024 15:32:20 -0500 Subject: [PATCH 62/93] reported the total wall time of each run in the progress.yaml file --- tools/regression-tests/run_tests.py | 80 ++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 24 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 0b9d5c2a37..ce03f63188 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 ''' -UPDATE: August 28, 2024: +UPDATE: September 4, 2024: Launching the LAMMPS binary under testing using a configuration defined in a yaml file (e.g. config.yaml). Comparing the output thermo with that in the existing log file (with the same nprocs) + data in the log files are extracted and converted into yaml data structure @@ -20,6 +20,20 @@ With the current features, users can: + distribute the input list across multiple processes via multiprocessing, or split the list of input scripts into separate runs (there are 800+ input script under the top-level examples) + +Input arguments: + + the path to a LAMMPS binary (can be relative to the working directory) + + a test configuration file (see tools/regression-tests/config.yaml for an example) + + a text file that lists of folders where the input scripts reside and how many of them line by line, or + a text file that list of input scripts, or + the path to the top-level examples + +Output: + + progress.yaml: testing results of individual input scripts that were tested + with the status (completed or failed) with error messages (for failed runs), and walltime + + output.xml: testing results in the JUnit XML format + + run.log: screen output and error of individual runs + Limitations: - input scripts use thermo style multi (e.g., examples/peptide) do not work with the expected thermo output format - input scripts that require partition runs (e.g. examples/neb) need a separate config file, e.g. args: "--partition 3x1" @@ -34,17 +48,17 @@ The following Python packages need to be installed into an activated environment source testing-env/bin/activate pip install numpy pyyaml junit_xml -Example usage: +Example usage (aka, tests for this script): 1) Simple use (using the provided tools/regression-tests/config.yaml and the examples/ folder at the top level) - python3 run_tests.py --lmp-bin=/path/to/lmp_binary + python3 run_tests.py --lmp-bin=build/lmp --config-file=tools/regression-tests/config.yaml 2) Use a custom testing configuration python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml 3) Specify a list of example folders python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ - --example-folders="/path/to/examples/folder1;/path/to/examples/folder2" + --example-folders="/path/to/examples/melt;/path/to/examples/rigid" The example subfolders can also be loaded from a text file list_subfolders1.txt: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ @@ -57,6 +71,7 @@ Example usage: 5) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples + --config-file=tools/regression-tests/config_serial.yaml 6) Analyze the LAMMPS binary and whole top-level /examples folder in a LAMMPS source tree and generate separate input lists for 8 workers: @@ -153,13 +168,18 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file else: progress = open(progress_file, "w") + # walltime = -2: skipped tests + # -1: failed tests + # >= 0: walltime in seconds (e.g. in.melt walltime = 0.2 seconds) + walltime = -2 + # skip the input file if listed in the config file or matched with a pattern if 'skip' in config: if input in config['skip']: msg = " + " + input + f" ({test_id+1}/{num_tests}): skipped as specified in {configFileName}" print(msg) logger.info(msg) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"skipped\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"skipped\", walltime: {walltime} }}\n") progress.close() num_skipped = num_skipped + 1 test_id = test_id + 1 @@ -177,7 +197,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg = " + " + input + f" ({test_id+1}/{num_tests}): skipped as specified in {configFileName}" print(msg) logger.info(msg) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"skipped\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"skipped\", walltime: {walltime} }}\n") progress.close() num_skipped = num_skipped + 1 test_id = test_id + 1 @@ -288,6 +308,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file config['mpiexec_numproc_flag'] = "" nprocs = 1 + # default walltime value of failed tests + walltime = -1 + result = TestResult(name=input, output="", time="", status="passed") # run the LAMMPS binary with the input script @@ -307,11 +330,11 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" The run terminated with {input_test} gives the following output:") logger.info(f" {error_line}") if "Unrecognized" in output: - result.status = f"error, unrecognized command, package not installed, {error_line}" + result.status = f"failed, unrecognized command, package not installed, {error_line}" elif "Unknown" in output: - result.status = f"error, unknown command, package not installed, {error_line}" + result.status = f"failed, unknown command, package not installed, {error_line}" else: - result.status = f"error, {error_line}." + result.status = f"failed, {error_line}." logger.info(f" Output:") logger.info(f" {output}") @@ -319,7 +342,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_error = num_error + 1 results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") progress.close() test_id = test_id + 1 @@ -331,7 +354,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" Output:") logger.info(f" {output}") logger.info(f" Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"error, no log.lammps\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"failed, no log.lammps\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -352,7 +375,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_memleak = num_memleak + 1 result.status = msg results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") progress.close() # count the number of completed runs @@ -366,19 +389,28 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"error, no Total wall time in the output.\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"failed, no Total wall time in the output.\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 continue + for line in output.split('\n'): + if "Total wall time" in line: + walltime_str = line.split('time:')[1] + hours = int(walltime_str.split(':')[0]) + minutes = int(walltime_str.split(':')[1]) + seconds = int(walltime_str.split(':')[2]) + walltime = int(hours * 3600.0 + minutes * 60.0 + seconds) + break + # if there is no Step or no Loop printed out if "Step" not in output or "Loop" not in output: logger.info(f" ERROR: no Step nor Loop in the output.\n") logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"error, no Step nor Loop in the output.\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"failed, no Step nor Loop in the output.\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -403,7 +435,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file result.status = msg + ", error parsing log.lammps into YAML" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") progress.close() num_completed = num_completed + 1 @@ -422,7 +454,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" ERROR: Error parsing the reference log file {thermo_ref_file}.") result.status = "skipped numerical checks due to parsing the reference log file" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, unsupported log file format\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, unsupported log file format\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -442,7 +474,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" {thermo_ref_file} also does not exist in the working directory.") result.status = "skipped due to missing the reference log file" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, missing the reference log file\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, missing the reference log file\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -455,9 +487,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file if num_runs != num_runs_ref: logger.info(f" ERROR: Number of runs in log.lammps ({num_runs}) is different from that in the reference log ({num_runs_ref})." " Check README in the folder, possibly due to using mpirun with partitions or parsing the wrong reference log file.") - result.status = "error, incomplete runs" + result.status = "failed, incomplete runs" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -471,9 +503,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file if num_fields != num_fields_ref: logger.info(f" ERROR: Number of thermo colums in log.lammps ({num_fields}) is different from that in the reference log ({num_fields_ref}) in the first run.") logger.info(f" Check both log files for more details.") - result.status = "error, mismatched columns in the log files" + result.status = "failed, mismatched columns in the log files" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -603,7 +635,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg += ", memory leaks detected" num_memleak = num_memleak + 1 - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\" }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") progress.close() # count the number of completed runs @@ -1263,9 +1295,9 @@ if __name__ == "__main__": if passed_tests <= completed_tests: msg += f" - numerical tests passed: {passed_tests}\n" msg += "\nOutput:\n" + msg += f" - Status of the tested inputs : {progress_file}\n" msg += f" - Running log with screen output: {log_file}\n" - msg += f" - Progress with the input list : {progress_file}\n" - msg += f" - Regression test results : {output_file}\n" + msg += f" - Testing result in JUnit XML : {output_file}\n" print(msg) From dfd0772affd377f3d6eef33449edf93eeab46415 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 5 Sep 2024 10:38:32 -0500 Subject: [PATCH 63/93] list the failed tests (including crashed, with error, or numerical checks) into a separate file --- tools/regression-tests/run_tests.py | 90 +++++++++++++++++++++-------- 1 file changed, 67 insertions(+), 23 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index ce03f63188..791e5739fe 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -29,10 +29,11 @@ Input arguments: the path to the top-level examples Output: - + progress.yaml: testing results of individual input scripts that were tested - with the status (completed or failed) with error messages (for failed runs), and walltime - + output.xml: testing results in the JUnit XML format - + run.log: screen output and error of individual runs + + failure.yaml : list of the failed runs and reasons + + progress.yaml: full testing results of the tested input scripts with the status (completed, failed or skipped) + with error messages (for failed runs), and walltime (in seconds) + + output.xml : testing results in the JUnit XML format + + run.log : screen output and error of individual runs Limitations: - input scripts use thermo style multi (e.g., examples/peptide) do not work with the expected thermo output format @@ -139,9 +140,10 @@ class TestResult: results : a list of TestResult objects stat : a dictionary that lists the number of passed, skipped, failed tests progress_file: yaml file that stores the tested input script and status + failure_file : file that reports the failed runs (a subset of progress_file) last_progress: the dictionary that shows the status of the last tests ''' -def iterate(lmp_binary, input_folder, input_list, config, results, progress_file, last_progress=None, output_buf=None): +def iterate(lmp_binary, input_folder, input_list, config, results, progress_file, failure_file, last_progress=None, output_buf=None): num_tests = len(input_list) num_completed = 0 @@ -159,6 +161,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file if 'valgrind' in config['mpiexec']: use_valgrind = True + # record all the failed runs + failure = open(failure_file, "a") + # iterate over the input scripts for input in input_list: @@ -342,8 +347,10 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_error = num_error + 1 results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") + msg = f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n" + progress.write(msg) progress.close() + failure.write(msg) test_id = test_id + 1 continue @@ -354,8 +361,12 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" Output:") logger.info(f" {output}") logger.info(f" Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"failed, no log.lammps\", walltime: {walltime} }}\n") + + msg = f"{input}: {{ folder: {input_folder}, status: \"failed, no log.lammps\", walltime: {walltime} }}\n" + progress.write(msg) progress.close() + failure.write(msg) + num_error = num_error + 1 test_id = test_id + 1 continue @@ -375,8 +386,11 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_memleak = num_memleak + 1 result.status = msg results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") + + msg = f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n" + progress.write(msg) progress.close() + failure.write(msg) # count the number of completed runs num_completed = num_completed + 1 @@ -389,29 +403,39 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"failed, no Total wall time in the output.\", walltime: {walltime} }}\n") + + msg = f"{input}: {{ folder: {input_folder}, status: \"failed, no Total wall time in the output.\", walltime: {walltime} }}\n" + progress.write(msg) progress.close() + failure.write(msg) + num_error = num_error + 1 test_id = test_id + 1 continue + # NOTE: Total wall time could be 00:00:00 whereas Loop time is non-zero seonds for line in output.split('\n'): if "Total wall time" in line: walltime_str = line.split('time:')[1] - hours = int(walltime_str.split(':')[0]) - minutes = int(walltime_str.split(':')[1]) - seconds = int(walltime_str.split(':')[2]) - walltime = int(hours * 3600.0 + minutes * 60.0 + seconds) + hms = walltime_str.split(':') + hours = float(hms[0]) + minutes = float(hms[1]) + seconds = float(hms[2]) + walltime = hours * 3600.0 + minutes * 60.0 + seconds break # if there is no Step or no Loop printed out if "Step" not in output or "Loop" not in output: - logger.info(f" ERROR: no Step nor Loop in the output.\n") + logger.info(f" completed, but no Step nor Loop in the output.\n") logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") - progress.write(f"{input}: {{ folder: {input_folder}, status: \"failed, no Step nor Loop in the output.\", walltime: {walltime} }}\n") + + msg = f"{input}: {{ folder: {input_folder}, status: \"completed, but no Step nor Loop in the output.\", walltime: {walltime} }}\n" + progress.write(msg) progress.close() + failure.write(msg) + num_error = num_error + 1 test_id = test_id + 1 continue @@ -442,7 +466,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue - # At this point, the run completed without trivial errors, proceed with numerical checks + # At this point, the run completed without trivial errors, proceed with numerical checks for thermo output # check if there is a reference log file for this input if ref_logfile_exist: # parse the thermo output in reference log file @@ -474,8 +498,11 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" {thermo_ref_file} also does not exist in the working directory.") result.status = "skipped due to missing the reference log file" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, missing the reference log file\", walltime: {walltime} }}\n") + + msg = f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped due to missing the reference log file\", walltime: {walltime} }}\n" + progress.write(msg) progress.close() + failure.write(msg) num_error = num_error + 1 test_id = test_id + 1 continue @@ -595,17 +622,18 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file "{abs_diff_check.rjust(20)} {rel_diff_check.rjust(20)}") # after all runs completed, or are interrupted in one of the runs (mismatched_columns = True) + if mismatched_columns == True: msg = f" mismatched log files after the first run. Check both log files for more details." print(msg) logger.info(msg) - result.status = "failed" + result.status = "thermo checks failed" if num_abs_failed > 0: msg = f" {num_abs_failed} abs diff thermo checks failed." print(msg) logger.info(msg) - result.status = "failed" + result.status = f"{num_abs_failed} abs thermo checks failed" if verbose == True: for i in failed_abs_output: print(f"- {i}") @@ -613,7 +641,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg = f" {num_rel_failed} rel diff thermo checks failed." print(msg) logger.info(msg) - result.status = "failed" + result.status = f"{num_rel_failed} rel thermo checks failed" if verbose == True: for i in failed_rel_output: print(f"- {i}") @@ -621,13 +649,13 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg = f" all {num_checks} thermo checks passed." print(msg) logger.info(msg) - result.status = "passed" + result.status = "thermo checks passed" num_passed = num_passed + 1 results.append(result) # check if memleak detects from valgrind run (need to replace "mpirun" -> valgrind --leak-check=yes mpirun") - msg = "completed" + msg = "completed, " + result.status if use_valgrind == True: if "All heap blocks were freed" in error: msg += ", no memory leak" @@ -638,10 +666,17 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") progress.close() + # write to failure if there is any numerical failed check + if num_abs_failed > 0 or num_rel_failed > 0: + failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") + # count the number of completed runs num_completed = num_completed + 1 test_id = test_id + 1 + # close the failure file + failure.close() + stat = { 'num_completed': num_completed, 'num_passed': num_passed, 'num_skipped': num_skipped, @@ -918,6 +953,7 @@ if __name__ == "__main__": verbose = False output_file = "output.xml" progress_file = "progress.yaml" + failure_file = "failure.yaml" log_file = "run.log" list_input = "" list_subfolders = "" @@ -947,6 +983,7 @@ if __name__ == "__main__": parser.add_argument("--output-file",dest="output", default=output_file, help="Output file") parser.add_argument("--log-file",dest="logfile", default=log_file, help="Log file") parser.add_argument("--progress-file",dest="progress_file", default=progress_file, help="Progress file") + parser.add_argument("--failure-file",dest="failure_file", default=failure_file, help="Failure file") analyze = parser.add_mutually_exclusive_group() analyze.add_argument("--analyze",dest="analyze", action='store_true', default=False, help="Analyze the testing folders and report statistics, not running the tests") @@ -985,6 +1022,7 @@ if __name__ == "__main__": skip_numerical_check = args.skip_numerical_check resume = args.resume progress_file = args.progress_file + failure_file = args.failure_file # logging logger = logging.getLogger(__name__) @@ -1203,6 +1241,11 @@ if __name__ == "__main__": except Exception: print(f" Cannot open progress file {progress_file_abs} to resume, rerun all the tests") + # record all the failure cases (overwrite if the file exists) + failure_file_abs = pwd + "/" + failure_file + failure = open(failure_file_abs, "w") + failure.close() + # initialize all the counters total_tests = 0 completed_tests = 0 @@ -1255,7 +1298,7 @@ if __name__ == "__main__": # iterate through the input scripts results = [] - stat = iterate(lmp_binary, directory, input_list, config, results, progress_file_abs, last_progress) + stat = iterate(lmp_binary, directory, input_list, config, results, progress_file_abs, failure_file_abs, last_progress) completed_tests += stat['num_completed'] skipped_tests += stat['num_skipped'] @@ -1295,6 +1338,7 @@ if __name__ == "__main__": if passed_tests <= completed_tests: msg += f" - numerical tests passed: {passed_tests}\n" msg += "\nOutput:\n" + msg += f" - Failed inputs and reasons : {failure_file}\n" msg += f" - Status of the tested inputs : {progress_file}\n" msg += f" - Running log with screen output: {log_file}\n" msg += f" - Testing result in JUnit XML : {output_file}\n" From 688cff71e65eef7759f74bded2b60ff360061e11 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 5 Sep 2024 11:22:00 -0500 Subject: [PATCH 64/93] print out more info for failed tests if verbose is True, indent output --- tools/regression-tests/run_tests.py | 57 +++++++++++++++++------------ 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 791e5739fe..eb2cf02816 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -143,7 +143,7 @@ class TestResult: failure_file : file that reports the failed runs (a subset of progress_file) last_progress: the dictionary that shows the status of the last tests ''' -def iterate(lmp_binary, input_folder, input_list, config, results, progress_file, failure_file, last_progress=None, output_buf=None): +def iterate(lmp_binary, input_folder, input_list, config, results, progress_file, failure_file, verbose=False, last_progress=None, output_buf=None): num_tests = len(input_list) num_completed = 0 @@ -347,6 +347,8 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_error = num_error + 1 results.append(result) + print(f"{result.status}") + msg = f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n" progress.write(msg) progress.close() @@ -357,7 +359,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # check if a log.lammps file exists in the current folder if os.path.isfile("log.lammps") == False: - logger.info(f" ERROR: No log.lammps generated with {input_test} with return code {returncode}.\n") + msg = f" failed, no log.lammps generated with {input_test} with return code {returncode}.\n" + print(msg) + logger.info(msg) logger.info(f" Output:") logger.info(f" {output}") logger.info(f" Error:\n{error}") @@ -377,7 +381,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if skip numerical checks, then skip the rest if skip_numerical_check == True: - msg = "completed, skipping numerical checks" + msg = "completed, skipping numerical checks" if use_valgrind == True: if "All heap blocks were freed" in error: msg += ", no memory leak" @@ -399,7 +403,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if there is no ERROR in the output, but there is no Total wall time printed out if "Total wall time" not in output: - logger.info(f" ERROR: no Total wall time in the output.\n") + msg = f" failed, no Total wall time in the output.\n" + print(msg) + logger.info(msg) logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") @@ -413,7 +419,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue - # NOTE: Total wall time could be 00:00:00 whereas Loop time is non-zero seonds + # NOTE: Total wall time could be 00:00:00 whereas Loop time is non-zero seconds for line in output.split('\n'): if "Total wall time" in line: walltime_str = line.split('time:')[1] @@ -426,7 +432,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if there is no Step or no Loop printed out if "Step" not in output or "Loop" not in output: - logger.info(f" completed, but no Step nor Loop in the output.\n") + msg = f" completed, but no Step nor Loop in the output.\n" + print(msg) + logger.info(msg) logger.info(f"\n{input_test}:") logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") @@ -462,6 +470,9 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") progress.close() + if verbose == True: + print(result.status) + num_completed = num_completed + 1 test_id = test_id + 1 continue @@ -474,8 +485,8 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file if thermo_ref: num_runs_ref = len(thermo_ref) else: - # dictionary is empty - logger.info(f" ERROR: Error parsing the reference log file {thermo_ref_file}.") + # thhe thermo_ref dictionary is empty + logger.info(f" failed, error parsing the reference log file {thermo_ref_file}.") result.status = "skipped numerical checks due to parsing the reference log file" results.append(result) progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, unsupported log file format\", walltime: {walltime} }}\n") @@ -484,7 +495,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue else: - msg = f" Cannot find the reference log file for {input_test} with the expected format log.[date].{basename}.*.[nprocs]" + msg = f" failed, cannot find the reference log file for {input_test} with the expected format log.[date].{basename}.*.[nprocs]" logger.info(msg) print(msg) # attempt to read in the thermo yaml output from the working directory (the following section will be deprecated) @@ -528,7 +539,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_fields = len(thermo[0]['keywords']) num_fields_ref = len(thermo_ref[0]['keywords']) if num_fields != num_fields_ref: - logger.info(f" ERROR: Number of thermo colums in log.lammps ({num_fields}) is different from that in the reference log ({num_fields_ref}) in the first run.") + logger.info(f" failed, number of thermo colums in log.lammps ({num_fields}) is different from that in the reference log ({num_fields_ref}) in the first run.") logger.info(f" Check both log files for more details.") result.status = "failed, mismatched columns in the log files" results.append(result) @@ -541,7 +552,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # comparing output vs reference values width = 20 if verbose == True: - print("Quantities".ljust(width) + "Output".center(width) + "Reference".center(width) + + print(" Quantities".ljust(width) + "Output".center(width) + "Reference".center(width) + "Abs Diff Check".center(width) + "Rel Diff Check".center(width)) # check if overrides for this input scipt is specified @@ -563,7 +574,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_fields = len(thermo[irun]['keywords']) num_fields_ref = len(thermo_ref[irun]['keywords']) if num_fields != num_fields_ref: - logger.info(f" ERROR: Number of thermo columns in log.lammps ({num_fields})") + logger.info(f" failed: Number of thermo columns in log.lammps ({num_fields})") logger.info(f" is different from that in the reference log ({num_fields_ref}) in run {irun}.") mismatched_columns = True continue @@ -618,35 +629,34 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file rel_diff_check = "N/A" if verbose == True and abs_diff_check != "N/A" and rel_diff_check != "N/A": - print(f"{thermo[irun]['keywords'][i].ljust(width)} {str(val).rjust(20)} {str(ref).rjust(20)} " - "{abs_diff_check.rjust(20)} {rel_diff_check.rjust(20)}") + print(f" {thermo[irun]['keywords'][i].ljust(width)} {str(val).rjust(20)} {str(ref).rjust(20)} {abs_diff_check.rjust(20)} {rel_diff_check.rjust(20)}") # after all runs completed, or are interrupted in one of the runs (mismatched_columns = True) if mismatched_columns == True: - msg = f" mismatched log files after the first run. Check both log files for more details." + msg = f" mismatched log files after the first run. Check both log files for more details." print(msg) logger.info(msg) result.status = "thermo checks failed" if num_abs_failed > 0: - msg = f" {num_abs_failed} abs diff thermo checks failed." + msg = f" {num_abs_failed} abs diff thermo checks failed." print(msg) logger.info(msg) result.status = f"{num_abs_failed} abs thermo checks failed" if verbose == True: - for i in failed_abs_output: - print(f"- {i}") + for out in failed_abs_output: + print(f" - {out}") if num_rel_failed > 0: - msg = f" {num_rel_failed} rel diff thermo checks failed." + msg = f" {num_rel_failed} rel diff thermo checks failed." print(msg) logger.info(msg) result.status = f"{num_rel_failed} rel thermo checks failed" if verbose == True: - for i in failed_rel_output: - print(f"- {i}") + for out in failed_rel_output: + print(f" - {out}") if num_abs_failed == 0 and num_rel_failed == 0: - msg = f" all {num_checks} thermo checks passed." + msg = f" all {num_checks} thermo checks passed." print(msg) logger.info(msg) result.status = "thermo checks passed" @@ -1298,7 +1308,8 @@ if __name__ == "__main__": # iterate through the input scripts results = [] - stat = iterate(lmp_binary, directory, input_list, config, results, progress_file_abs, failure_file_abs, last_progress) + stat = iterate(lmp_binary, directory, input_list, config, + results, progress_file_abs, failure_file_abs, verbose, last_progress) completed_tests += stat['num_completed'] skipped_tests += stat['num_skipped'] From 3357889d57da53651819baf4190c43d62fa7195e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 17:21:42 -0400 Subject: [PATCH 65/93] install MPI --- .github/workflows/full-regression.yml | 3 ++- .github/workflows/quick-regression.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index d13e8eb385..106bda9d2e 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -31,7 +31,8 @@ jobs: - name: Install extra packages run: | sudo apt-get install -y ccache ninja-build libeigen3-dev \ - libgsl-dev libcurl4-openssl-dev python3-dev + libgsl-dev libcurl4-openssl-dev python3-dev \ + mpi-default-bin mpi-default-dev - name: Create Build Environment run: mkdir build diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 618a3f87ae..0d432044b0 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -31,7 +31,8 @@ jobs: - name: Install extra packages run: | sudo apt-get install -y ccache ninja-build libeigen3-dev \ - libgsl-dev libcurl4-openssl-dev python3-dev + libgsl-dev libcurl4-openssl-dev python3-dev \ + mpi-default-bin mpi-default-dev - name: Create Build Environment run: mkdir build From bafe7c91fa723665d2a3c0b07d4c32a56b1a8c51 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 08:29:55 -0500 Subject: [PATCH 66/93] switch to using config.yaml with 4 procs for testing --- .github/workflows/full-regression.yml | 2 +- .github/workflows/quick-regression.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 106bda9d2e..c565ab8d88 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -77,7 +77,7 @@ jobs: source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config_serial.yaml \ + --config-file=tools/regression-tests/config.yaml \ --examples-top-level=examples --analyze --num-workers=4 python3 tools/regression-tests/run_tests.py \ diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 0d432044b0..d20bf8b364 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -77,7 +77,7 @@ jobs: source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config_serial.yaml \ + --config-file=tools/regression-tests/config.yaml \ --examples-top-level=examples --quick --quick-branch=origin/develop --quick-max=100 --num-workers=4 if [ -f input-list-${{ matrix.idx }}.txt ] From e1d6bb91a843d5cb1b601ca9e95054853541a0e3 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 09:06:45 -0500 Subject: [PATCH 67/93] get reference walltime from running bench/in.lj, guess the default config file if not specified from the command line args --- tools/regression-tests/run_tests.py | 77 ++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index eb2cf02816..51a0a60f7c 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -851,6 +851,69 @@ def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): return cmd_str, "", "", -1 +''' + get the reference walltime by running the lmp_binary with config with an input script in the bench/ folder + in.lj is suitable as it doesn't need any potential file, nor any extra packages +''' +def get_reference_walltime(lmp_binary, config): + cmd_str = "" + # check if mpiexec/mpirun is used + if config['mpiexec']: + cmd_str += config['mpiexec'] + " " + config['mpiexec_numproc_flag'] + " " + config['nprocs'] + " " + + # guess the build folder path + lmp_build_folder = lmp_binary.rsplit('/', 1)[0] + + # guess the bench folder + lmp_bench_folder = lmp_build_folder + "/../bench/" + + # run with replicate for a copple of seconds long run + cmd_str += lmp_binary + " -in " + lmp_bench_folder + "in.lj -v x 2 -v y 2 -v z 1 " + config['args'] + + logger.info(f" Executing for reference walltime: {cmd_str}") + + # walltime = -1 indicates some timeout (issues) + walltime = -1 + + # set a timeout for this reference run + timeout = 60 + output = "" + try: + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True, timeout=timeout) + output = p.stdout + + except subprocess.TimeoutExpired: + msg = f" Timeout for: {cmd_str} ({timeout}s expired)" + logger.info(msg) + print(msg) + + for line in output.split('\n'): + if "Total wall time" in line: + walltime_str = line.split('time:')[1] + hms = walltime_str.split(':') + hours = float(hms[0]) + minutes = float(hms[1]) + seconds = float(hms[2]) + walltime = hours * 3600.0 + minutes * 60.0 + seconds + + logger.info(f" Reference walltime = {walltime}") + + return walltime + +''' + infer the tools/regression-tests folder from the absolute path to lmp_binary + return the default config file path tools/regression-tests/config.yaml +''' +def get_default_config(lmp_binary): + # guess the build folder path + lmp_build_folder = lmp_binary.rsplit('/', 1)[0] + + # guess the tools/regression-tests folder + regression_tests_folder = lmp_build_folder + "/../tools/regression-tests/" + + defaultConfigFile = regression_tests_folder + "config.yaml" + return defaultConfigFile + ''' split a list into a list of N sublists @@ -978,7 +1041,7 @@ if __name__ == "__main__": # parse the arguments parser = ArgumentParser() parser.add_argument("--lmp-bin", dest="lmp_binary", default="", help="LAMMPS binary") - parser.add_argument("--config-file", dest="config_file", default=configFileName, help="Configuration YAML file") + parser.add_argument("--config-file", dest="config_file", default="", help="Configuration YAML file") parser.add_argument("--examples-top-level", dest="example_toplevel", default="", help="Examples top-level") parser.add_argument("--example-folders", dest="example_folders", default="", help="Example subfolders") parser.add_argument("--list-input", dest="list_input", default="", help="File that lists the input scripts") @@ -1009,7 +1072,11 @@ if __name__ == "__main__": args = parser.parse_args() lmp_binary = os.path.abspath(args.lmp_binary) - configFileName = args.config_file + if len(args.config_file) > 0: + configFileName = args.config_file + else: + configFileName = get_default_config(lmp_binary) + output_file = args.output if int(args.num_workers) > 0: num_workers = int(args.num_workers) @@ -1044,6 +1111,9 @@ if __name__ == "__main__": if example_toplevel != "": print("\nTop-level example folder:") print(f" {example_toplevel}") + if list_input != "": + print("\nInput scripts to test as listed in the file:") + print(f" {list_input}") # Using in place input scripts inplace_input = True @@ -1251,6 +1321,9 @@ if __name__ == "__main__": except Exception: print(f" Cannot open progress file {progress_file_abs} to resume, rerun all the tests") + # get a reference walltime + walltime_ref = get_reference_walltime(lmp_binary, config) + # record all the failure cases (overwrite if the file exists) failure_file_abs = pwd + "/" + failure_file failure = open(failure_file_abs, "w") From de8dc828017e3fc00e984f42e1081a6ae99e1076 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 09:19:00 -0500 Subject: [PATCH 68/93] report walltime normalized by the reference walltime for completed runs in the progress.yaml file --- tools/regression-tests/run_tests.py | 30 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 51a0a60f7c..767828795f 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -133,8 +133,7 @@ class TestResult: input_folder : the absolute path to the input files input_list : list of the input scripts under the input_folder config : the dict that contains the test configuration - - output_buf: placeholder for storing the output of a given worker + walltime_ref : reference walltime return results : a list of TestResult objects @@ -142,8 +141,9 @@ class TestResult: progress_file: yaml file that stores the tested input script and status failure_file : file that reports the failed runs (a subset of progress_file) last_progress: the dictionary that shows the status of the last tests + output_buf: placeholder for storing the output of a given worker ''' -def iterate(lmp_binary, input_folder, input_list, config, results, progress_file, failure_file, verbose=False, last_progress=None, output_buf=None): +def iterate(lmp_binary, input_folder, input_list, config, results, progress_file, failure_file, walltime_ref=1, verbose=False, last_progress=None, output_buf=None): num_tests = len(input_list) num_completed = 0 @@ -420,6 +420,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file continue # NOTE: Total wall time could be 00:00:00 whereas Loop time is non-zero seconds + walltime_norm = 1.0 for line in output.split('\n'): if "Total wall time" in line: walltime_str = line.split('time:')[1] @@ -428,6 +429,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file minutes = float(hms[1]) seconds = float(hms[2]) walltime = hours * 3600.0 + minutes * 60.0 + seconds + walltime_norm = float(walltime) / float(walltime_ref) break # if there is no Step or no Loop printed out @@ -439,7 +441,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") - msg = f"{input}: {{ folder: {input_folder}, status: \"completed, but no Step nor Loop in the output.\", walltime: {walltime} }}\n" + msg = f"{input}: {{ folder: {input_folder}, status: \"completed, but no Step nor Loop in the output.\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n" progress.write(msg) progress.close() failure.write(msg) @@ -467,7 +469,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file result.status = msg + ", error parsing log.lammps into YAML" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() if verbose == True: @@ -489,7 +491,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" failed, error parsing the reference log file {thermo_ref_file}.") result.status = "skipped numerical checks due to parsing the reference log file" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, unsupported log file format\", walltime: {walltime} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, unsupported log file format\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -505,12 +507,12 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file thermo_ref = extract_thermo(thermo_ref_file) num_runs_ref = len(thermo_ref) else: - # mostly will come to here if the reference log file does not exist + # most likely to reach here if the reference log file does not exist logger.info(f" {thermo_ref_file} also does not exist in the working directory.") result.status = "skipped due to missing the reference log file" results.append(result) - msg = f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped due to missing the reference log file\", walltime: {walltime} }}\n" + msg = f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped due to missing the reference log file\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n" progress.write(msg) progress.close() failure.write(msg) @@ -527,7 +529,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file " Check README in the folder, possibly due to using mpirun with partitions or parsing the wrong reference log file.") result.status = "failed, incomplete runs" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -543,7 +545,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f" Check both log files for more details.") result.status = "failed, mismatched columns in the log files" results.append(result) - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() num_error = num_error + 1 test_id = test_id + 1 @@ -673,12 +675,12 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg += ", memory leaks detected" num_memleak = num_memleak + 1 - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() # write to failure if there is any numerical failed check if num_abs_failed > 0 or num_rel_failed > 0: - failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime} }}\n") + failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") # count the number of completed runs num_completed = num_completed + 1 @@ -896,7 +898,7 @@ def get_reference_walltime(lmp_binary, config): seconds = float(hms[2]) walltime = hours * 3600.0 + minutes * 60.0 + seconds - logger.info(f" Reference walltime = {walltime}") + logger.info(f" Reference walltime, sec = {walltime}") return walltime @@ -1382,7 +1384,7 @@ if __name__ == "__main__": # iterate through the input scripts results = [] stat = iterate(lmp_binary, directory, input_list, config, - results, progress_file_abs, failure_file_abs, verbose, last_progress) + results, progress_file_abs, failure_file_abs, walltime_ref, verbose, last_progress) completed_tests += stat['num_completed'] skipped_tests += stat['num_skipped'] From b2cc2582e11f70cef2c87e38c86bc60400b14d90 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 09:33:23 -0500 Subject: [PATCH 69/93] switch to config.yaml in actual runs in quick and full tests --- .github/workflows/full-regression.yml | 2 +- .github/workflows/quick-regression.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index c565ab8d88..6060f2cef5 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -82,7 +82,7 @@ jobs: python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config_serial.yaml \ + --config-file=tools/regression-tests/config.yaml \ --list-input=input-list-${{ matrix.idx }}.txt \ --output-file=output-${{ matrix.idx }}.xml \ --progress-file=progress-${{ matrix.idx }}.yaml \ diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index d20bf8b364..fe7640004f 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -84,7 +84,7 @@ jobs: then \ python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config_serial.yaml \ + --config-file=tools/regression-tests/config.yaml \ --list-input=input-list-${{ matrix.idx }}.txt \ --output-file=output-${{ matrix.idx }}.xml \ --progress-file=progress-${{ matrix.idx }}.yaml \ From 932f10e3b6f6c65034a1af974216fb1bbb187840 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 12:46:42 -0500 Subject: [PATCH 70/93] update README for syntax and added arguments in run_tests.py --- tools/regression-tests/README | 118 ++++++++++++++++++---------- tools/regression-tests/run_tests.py | 30 +++---- 2 files changed, 92 insertions(+), 56 deletions(-) diff --git a/tools/regression-tests/README b/tools/regression-tests/README index eec11c19ff..1342e50310 100644 --- a/tools/regression-tests/README +++ b/tools/regression-tests/README @@ -1,5 +1,5 @@ The script `run_tests.py` in this folder is used to perform regression tests -using in-place example scripts. +using in-place example scripts and provided log files as reference. What this single script does is to launch the selected LAMMPS binary using a testing configuration defined in a `.yaml` file (e.g., `config.yaml`) @@ -19,25 +19,43 @@ within the specified tolerances in the test configuration `config.yaml` file. With the current features, users can: + specify which LAMMPS binary version to test (e.g., the version from a commit, or those from `lammps-testing`) - + specify the examples subfolders (thus the reference log files) seperately (e.g. from other LAMMPS versions or commits) - + specify tolerances for individual quantities for any input script to override the global values - + launch tests with `mpirun` with all supported command line features (multiple procs, multiple paritions, and suffices) - + skip certain input files if not interested, or no reference log file exists - + simplify the main LAMMPS builds, as long as a LAMMPS binary is available + + specify the examples subfolders (thus the reference log files) seperately (e.g. from other LAMMPS versions or commits), or + + specify a file that lists of the examples input scripts to test + + specify tolerances for individual quantities for any input script to override the global values in the config file + + launch tests with `mpirun` with all supported command line features (multiple procs, multiple paritions, and suffixes) + + skip certain input files (whose names match specified patterns) if not interested, or packaged not installed, or no reference log file exists + + set a timeout for every input script run if they may take too long + + skip numerical checks if the goal is just to check if the runs do not fail + +Some benefits include: + + + separating regression testing from building LAMMPS + + performing quick and full regression tests + + keeping track of the testing progress to resume the testing from the last checkpoint (skipping completed runs) + + distributing the input list across multiple processes by + splitting the list of input scripts into separate runs (there are ~800 input scripts under the top-level examples) + +Input arguments: + + + the path to a LAMMPS binary (can be relative to the working directory) + + a test configuration file (see tools/regression-tests/config.yaml for an example) + + a text file that lists of folders where the input scripts reside and how many of them line by line, or + a text file that list of input scripts, or + the path to the top-level examples + +Output: + + + failure.yaml : a dictionary of the failed runs and reasons + + progress.yaml: full testing results of the tested input scripts with the status (completed, failed or skipped) + with error messages (for failed runs), and walltime (in seconds) + + output.xml : testing results in the JUnit XML format + + run.log : screen output and error of individual runs Limitations: - - input scripts use thermo style multi (e.g., examples/peptide) do not work with the expected thermo output format - - input scripts that require partition runs (e.g. examples/neb) need a separate config file, e.g. "args: --partition 2x1" - - testing accelerator packages (GPU, INTEL, KOKKOS, OPENMP) need separate config files, "args: -sf omp -pk omp 4" - -TODO: - - + keep track of the testing progress to resume the testing from the last checkpoint - + distribute the input list across multiple processes via multiprocessing, or - split the list of input scripts into separate runs (there are 800+ input script under the top-level examples) - + be able to be invoked from run_tests in the lammps-testing infrastruture - + + input scripts use thermo style multi (e.g., examples/peptide) do not work with the expected thermo output format + + input scripts that require partition runs (e.g. examples/neb) need a separate config file, e.g., args: "--partition 3x1" + + testing with accelerator packages (GPU, INTEL, KOKKOS, OPENMP) need separate config files, e.g., args: "-sf omp -pk omp 4" The following Python packages need to be installed into an activated environment: @@ -45,40 +63,44 @@ The following Python packages need to be installed into an activated environment source testing-env/bin/activate pip install numpy pyyaml junit_xml +For all the supported arguments, run: -Example uses: + python3 tools/regression-tests/run_tests.py -h + +Example uses (aka, tests for this script): 1) Simple use (using the provided tools/regression-tests/config.yaml and the examples/ folder at the top level) - python3 run_tests.py --lmp-bin=/path/to/lmp_binary + python3 run_tests.py --lmp-bin=build/lmp --config-file=tools/regression-tests/config.yaml 2) Use a custom testing configuration python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml 3) Specify a list of example folders python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ - --example-folders="/path/to/examples/folder1;/path/to/examples/folder2" + --example-folders="/path/to/examples/melt;/path/to/examples/rigid" - The example folders can also be loaded from a text file list_subfolders1.txt: + The example subfolders can also be loaded from a text file list_subfolders1.txt: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ - --list-input=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ + --list-subfolders=list_subfolders1.txt --output-file=output1.txt --progress-file=progress1.yaml \ --log-file=run1.log - 4) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree - python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples + 4) Specify a list of example input scripts (e.g. obtained from running tools/regression-tests/get-quick-list.py) + python3 run_tests.py --lmp-bin=/path/to/lmp_binary --config-file=/path/to/config/file/config.yaml \ + --list-input=input_list.txt - 5) Analyze (dry run) the LAMMPS binary and whole top-level /examples folder in a LAMMPS source tree + 5) Test a LAMMPS binary with the whole top-level /examples folder in a LAMMPS source tree + python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples + --config-file=tools/regression-tests/config.yaml + + 6) Analyze the LAMMPS binary and whole top-level /examples folder in a LAMMPS source tree and generate separate input lists for 8 workers: python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples \ --analyze --num-workers=8 - This is used for splitting the subfolders into separate input lists and launching different instances - of run_tests.py simultaneously. - - 6) Prepare (dry run) for a quick regression test run that only runs inputs with commands and styles that - have changes in the current branch versus the selected upstream branch. Curb at 40 runs and split and - write out separate lists for 4 workers: - python3 run_tests.py --lmp-bin=/path/to/lmp_binary --examples-top-level=/path/to/lammps/examples \ - --quick --quick-branch=origin/develop --quick-max= 40 --num-workers=4 + The output of this run is 8 files folder-list-[0-7].txt that lists the subfolders + and 8 files input-list-[0-7].txt that lists the input scripts under the top-level example folders. + With these lists, one can launch multiple instances of run_tests.py simultaneously + each with a list of example subfolders (Case 3), or with a list of input scripts (Case 4). An example of the test configuration `config.yaml` is given as below. @@ -113,17 +135,31 @@ An example of the test configuration `config.yaml` is given as below. abs: 1e-2 rel: 1e-4 skip: - [ in.rigid.poems3, - in.rigid.poems4, - in.rigid.poems5, + [ in.displ, + in.displ2, + in.*_imd*, ] nugget: 1.0 epsilon: 1e-16 + timeout: 180 -An example of the list of input scripts in a text file `list_subfolders1.txt` +An example of the list of example subfolders in a text file `list_subfolders1.txt` + + /home/codes/lammps/examples/melt 1 + /home/codes/lammps/examples/body 5 + /home/codes/lammps/examples/PACKAGES/dielectric 2 + /home/codes/lammps/examples/PACKAGES/tally 3 + +where the numbers are the number of input scripts (in.*) in the folders. + + +An example of the list of input scripts in a text file `input_list.txt` + + /home/codes/lammps/examples/melt/in.melt + /home/codes/lammps/examples/body/in.body + /home/codes/lammps/examples/body/in.cubes + /home/codes/lammps/examples/PACKAGES/dielectric/in.confined + /home/codes/lammps/examples/PACKAGES/tally/in.pe + /home/codes/lammps/examples/PACKAGES/tally/in.force -/home/codes/lammps/examples/melt -/home/codes/lammps/examples/body -/home/codes/lammps/examples/PACKAGES/dielectric -/home/codes/lammps/examples/PACKAGES/tally diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 767828795f..1bb40b17df 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -11,16 +11,19 @@ With the current features, users can: + specify the examples subfolders (thus the reference log files) seperately (e.g. from other LAMMPS versions or commits) + specify the list of examples input scripts to test + specify tolerances for individual quantities for any input script to override the global values - + launch tests with `mpirun` with all supported command line features (multiple procs, multiple paritions, and suffices) + + launch tests with `mpirun` with all supported command line features (multiple procs, multiple paritions, and suffixes) + skip certain input files (whose names match specified patterns) if not interested, or packaged not installed, or no reference log file exists + set a timeout for every input script run if they may take too long + skip numerical checks if the goal is just to check if the runs do not fail - + simplify the main LAMMPS builds, as long as a LAMMPS binary is available - + keep track of the testing progress to resume the testing from the last checkpoint (skipping completed runs) - + distribute the input list across multiple processes via multiprocessing, or - split the list of input scripts into separate runs (there are 800+ input script under the top-level examples) +Some benefits include: + + separating regression testing from building LAMMPS + + performing quick and full regression tests + + keeping track of the testing progress to resume the testing from the last checkpoint (skipping completed runs) + + distributing the input list across multiple processes by + splitting the list of input scripts into separate runs (there are ~800 input scripts under the top-level examples) + Input arguments: + the path to a LAMMPS binary (can be relative to the working directory) + a test configuration file (see tools/regression-tests/config.yaml for an example) @@ -40,9 +43,6 @@ Limitations: - input scripts that require partition runs (e.g. examples/neb) need a separate config file, e.g. args: "--partition 3x1" - testing accelerator packages (GPU, INTEL, KOKKOS, OPENMP) need separate config files, "args: -sf omp -pk omp 4" -TODO: - + be able to be invoked from run_tests in the lammps-testing infrastruture - The following Python packages need to be installed into an activated environment: python3 -m venv testing-env @@ -1049,12 +1049,6 @@ if __name__ == "__main__": parser.add_argument("--list-input", dest="list_input", default="", help="File that lists the input scripts") parser.add_argument("--list-subfolders", dest="list_subfolders", default="", help="File that lists the subfolders") parser.add_argument("--num-workers", dest="num_workers", default=1, help="Number of workers") - parser.add_argument("--gen-ref",dest="genref", action='store_true', default=False, - help="Generating reference data") - parser.add_argument("--verbose",dest="verbose", action='store_true', default=False, - help="Verbose output") - parser.add_argument("--resume",dest="resume", action='store_true', default=False, - help="Resume the test run") parser.add_argument("--output-file",dest="output", default=output_file, help="Output file") parser.add_argument("--log-file",dest="logfile", default=log_file, help="Log file") parser.add_argument("--progress-file",dest="progress_file", default=progress_file, help="Progress file") @@ -1069,7 +1063,13 @@ if __name__ == "__main__": parser.add_argument("--quick-max", dest="quick_max", default=50, help="Maximum number of inputs to randomly select") parser.add_argument("--skip-numerical-check",dest="skip_numerical_check", action='store_true', default=False, - help="Generating reference data") + help="Skip numerical checks") + parser.add_argument("--gen-ref",dest="genref", action='store_true', default=False, + help="Generating reference log files") + parser.add_argument("--verbose",dest="verbose", action='store_true', default=False, + help="Verbose screen output") + parser.add_argument("--resume",dest="resume", action='store_true', default=False, + help="Resume the test run from the list of inputs given the progress in progress.yaml") args = parser.parse_args() From bca271a2867d0cda2d8b46ac7d7c46b2a1ad5db5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 17:34:35 -0500 Subject: [PATCH 71/93] mention regression tester in Build_development --- doc/src/Build_development.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index f315569b24..55a1b97ea5 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -145,6 +145,10 @@ of the LAMMPS project on GitHub. A few tests are also run as GitHub Actions and their configuration files are in the ``.github/workflows/`` folder of the LAMMPS git tree. +Regression tests can also be performed locally with the :doc:`regression tester tool `. +The tool checks if a given LAMMPS binary run with selected input examples +produces consistent thermo output with the provided log files. + The unit testing facility is integrated into the CMake build process of the LAMMPS source code distribution itself. It can be enabled by setting ``-D ENABLE_TESTING=on`` during the CMake configuration step. From 93b4e918014c4a97230051b4b5f4dbce9527cbe2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 20:51:56 -0400 Subject: [PATCH 72/93] update docs and add ref --- doc/src/Build_development.rst | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index 55a1b97ea5..3adec76abb 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -138,16 +138,27 @@ during development: The status of this automated testing can be viewed on `https://ci.lammps.org `_. -The scripts and inputs for integration, run, and regression testing -are maintained in a -`separate repository `_ -of the LAMMPS project on GitHub. A few tests are also run as GitHub -Actions and their configuration files are in the ``.github/workflows/`` -folder of the LAMMPS git tree. +The scripts and inputs for integration, run, and legacy regression +testing are maintained in a `separate repository +`_ of the LAMMPS project on +GitHub. A few tests are also run as GitHub Actions and their +configuration files are in the ``.github/workflows/`` folder of the +LAMMPS git tree. -Regression tests can also be performed locally with the :doc:`regression tester tool `. -The tool checks if a given LAMMPS binary run with selected input examples -produces consistent thermo output with the provided log files. +Regression tests can also be performed locally with the :ref:`regression +tester tool `. The tool checks if a given LAMMPS binary run +with selected input examples produces thermo output that is consistent +with the provided log files. The script can be run in one pass over all +available input files, but it can also first create multiple lists of +inputs or folders that can then be run with multiple workers +concurrently to speed things up. Another mode allows to do a quick +check of inputs that contain commands that have changes in the current +checkout branch relative to a git branch. This works similar to the two +pass mode, but will select only shorter runs and no more than 100 inputs +that are chosen randomly. This ensures that this test runs +significantly faster compared to the full test run. These test runs can +also be performed with instrumented LAMMPS binaries (see previous +section). The unit testing facility is integrated into the CMake build process of the LAMMPS source code distribution itself. It can be enabled by From afc9f72887a693e24291375f15270910fdbc4003 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 21:18:31 -0400 Subject: [PATCH 73/93] whitespace --- tools/regression-tests/run_tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 1bb40b17df..068f960752 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -23,7 +23,7 @@ Some benefits include: + keeping track of the testing progress to resume the testing from the last checkpoint (skipping completed runs) + distributing the input list across multiple processes by splitting the list of input scripts into separate runs (there are ~800 input scripts under the top-level examples) - + Input arguments: + the path to a LAMMPS binary (can be relative to the working directory) + a test configuration file (see tools/regression-tests/config.yaml for an example) @@ -174,7 +174,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file progress = open(progress_file, "w") # walltime = -2: skipped tests - # -1: failed tests + # -1: failed tests # >= 0: walltime in seconds (e.g. in.melt walltime = 0.2 seconds) walltime = -2 @@ -348,7 +348,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file results.append(result) print(f"{result.status}") - + msg = f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime} }}\n" progress.write(msg) progress.close() @@ -381,7 +381,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file # if skip numerical checks, then skip the rest if skip_numerical_check == True: - msg = "completed, skipping numerical checks" + msg = "completed, skipping numerical checks" if use_valgrind == True: if "All heap blocks were freed" in error: msg += ", no memory leak" From 6e0c44a25ce0052ae0d1c7a76f293dee5062efab Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 21:18:58 -0400 Subject: [PATCH 74/93] temporarily run the full test with the pull request --- .github/workflows/full-regression.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 6060f2cef5..161c480793 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -3,8 +3,10 @@ name: "Full Regression Test" on: push: - branches: - - develop +# branches: +# - develop + pull_request: + - develop workflow_dispatch: From 6cd710444de56ce9cbe85647ad143091f0688572 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 21:34:10 -0400 Subject: [PATCH 75/93] add dedicated config for quick regression test. allow oversubscription. --- .github/workflows/quick-regression.yml | 2 +- tools/regression-tests/config_quick.yaml | 44 +++++++++++++++++++++++ tools/regression-tests/config_serial.yaml | 1 - 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 tools/regression-tests/config_quick.yaml diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index fe7640004f..e79a8e9737 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -77,7 +77,7 @@ jobs: source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config.yaml \ + --config-file=tools/regression-tests/config_quick.yaml \ --examples-top-level=examples --quick --quick-branch=origin/develop --quick-max=100 --num-workers=4 if [ -f input-list-${{ matrix.idx }}.txt ] diff --git a/tools/regression-tests/config_quick.yaml b/tools/regression-tests/config_quick.yaml new file mode 100644 index 0000000000..8f2ba9aaa6 --- /dev/null +++ b/tools/regression-tests/config_quick.yaml @@ -0,0 +1,44 @@ +--- + lmp_binary: "" + nprocs: "4" + args: "-cite none" + mpiexec: "mpirun" + mpiexec_numproc_flag: "--host localhost:4 -np" + tolerance: + PotEng: + abs: 1e-4 + rel: 1e-7 + TotEng: + abs: 1e-4 + rel: 1e-7 + Press: + abs: 1e-4 + rel: 1e-7 + Temp: + abs: 1e-4 + rel: 1e-7 + E_vdwl: + abs: 1e-3 + rel: 1e-7 + overrides: + in.rigid.tnr: + Temp: + abs: 1e-3 + rel: 1e-5 + Press: + abs: 1e-2 + rel: 1e-4 + skip: + [ + in.displ, + in.displ2, + in.dos, + in.*_imd*, + in.bucky-plus-cnt*, + ] + + timeout: 30 + nugget: 1.0 + epsilon: 1e-16 + + diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index fb79c301f1..1fe3f48353 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -36,7 +36,6 @@ in.bucky-plus-cnt*, ] - timeout: 30 nugget: 1.0 epsilon: 1e-16 From b6e78c1f205ad1cebafe4d99f8f20f5e804f18c7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 21:46:18 -0400 Subject: [PATCH 76/93] another attempt to avoid oversubscription error --- .github/workflows/quick-regression.yml | 2 +- tools/regression-tests/config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index e79a8e9737..3cea960987 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -84,7 +84,7 @@ jobs: then \ python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config.yaml \ + --config-file=tools/regression-tests/config_quick.yaml \ --list-input=input-list-${{ matrix.idx }}.txt \ --output-file=output-${{ matrix.idx }}.xml \ --progress-file=progress-${{ matrix.idx }}.yaml \ diff --git a/tools/regression-tests/config.yaml b/tools/regression-tests/config.yaml index 372d0db10b..6b793d0ce8 100644 --- a/tools/regression-tests/config.yaml +++ b/tools/regression-tests/config.yaml @@ -3,7 +3,7 @@ nprocs: "4" args: "-cite none" mpiexec: "mpirun" - mpiexec_numproc_flag: "-np" + mpiexec_numproc_flag: "--host localhost:4 -np" tolerance: PotEng: abs: 1e-4 From c853b8d81ae96f10f4dddb74722cff4622adca47 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 23:14:09 -0400 Subject: [PATCH 77/93] switch quick run back to serial --- tools/regression-tests/config_quick.yaml | 6 +++--- tools/regression-tests/config_serial.yaml | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/regression-tests/config_quick.yaml b/tools/regression-tests/config_quick.yaml index 8f2ba9aaa6..3c8cc4e51b 100644 --- a/tools/regression-tests/config_quick.yaml +++ b/tools/regression-tests/config_quick.yaml @@ -1,9 +1,9 @@ --- lmp_binary: "" - nprocs: "4" + nprocs: "1" args: "-cite none" - mpiexec: "mpirun" - mpiexec_numproc_flag: "--host localhost:4 -np" + mpiexec: "" + mpiexec_numproc_flag: "" tolerance: PotEng: abs: 1e-4 diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index 1fe3f48353..b55cc1547d 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -29,7 +29,8 @@ abs: 1e-2 rel: 1e-4 skip: - [ in.displ, + [ + in.displ, in.displ2, in.dos, in.*_imd*, From e5c870fcd25e2945f67033bd550b33c35e9d4b1e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 23:15:32 -0400 Subject: [PATCH 78/93] switch full regression back to serial execution --- .github/workflows/full-regression.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 161c480793..5eb8e4f28b 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -79,12 +79,12 @@ jobs: source linuxenv/bin/activate python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config.yaml \ + --config-file=tools/regression-tests/config_serial.yaml \ --examples-top-level=examples --analyze --num-workers=4 python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ - --config-file=tools/regression-tests/config.yaml \ + --config-file=tools/regression-tests/config_serial.yaml \ --list-input=input-list-${{ matrix.idx }}.txt \ --output-file=output-${{ matrix.idx }}.xml \ --progress-file=progress-${{ matrix.idx }}.yaml \ From 5aea0a061ffea8f55c36137ade98f7b4aa8dd368 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 7 Sep 2024 00:22:56 -0400 Subject: [PATCH 79/93] provide updated reference and update command line --- .github/workflows/full-regression.yml | 6 ++--- .github/workflows/quick-regression.yml | 4 +++- tools/regression-tests/run_tests.py | 31 +++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 5eb8e4f28b..106bda9d2e 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -3,10 +3,8 @@ name: "Full Regression Test" on: push: -# branches: -# - develop - pull_request: - - develop + branches: + - develop workflow_dispatch: diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 3cea960987..985177b2c1 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -78,7 +78,9 @@ jobs: python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_quick.yaml \ - --examples-top-level=examples --quick --quick-branch=origin/develop --quick-max=100 --num-workers=4 + --examples-top-level=examples \ + --quick-reference=tools/regression-tests/reference.yaml \ + --quick --quick-branch=origin/develop --quick-max=100 --num-workers=4 if [ -f input-list-${{ matrix.idx }}.txt ] then \ diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 068f960752..ea3d43e254 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1036,6 +1036,7 @@ if __name__ == "__main__": quick = False quick_branch = "origin/develop" quick_max = 50 + quick_reference = os.path.join(LAMMPS_DIR, 'tools', 'regression-tests', 'reference.yaml') # distribute the total number of input scripts over the workers num_workers = 1 @@ -1062,6 +1063,8 @@ if __name__ == "__main__": help="Branch to which compare the current head to for changed styles") parser.add_argument("--quick-max", dest="quick_max", default=50, help="Maximum number of inputs to randomly select") + parser.add_argument("--quick-reference", dest="quick_reference", default=quick_reference, + help="Reference YAML file with progress data from full regression test run") parser.add_argument("--skip-numerical-check",dest="skip_numerical_check", action='store_true', default=False, help="Skip numerical checks") parser.add_argument("--gen-ref",dest="genref", action='store_true', default=False, @@ -1098,6 +1101,7 @@ if __name__ == "__main__": quick = args.quick quick_branch = args.quick_branch quick_max = int(args.quick_max) + quick_reference = args.quick_reference skip_numerical_check = args.skip_numerical_check resume = args.resume progress_file = args.progress_file @@ -1132,13 +1136,38 @@ if __name__ == "__main__": msg = f"\nThere are {len(input_list)} input scripts with changed styles relative to branch {quick_branch}." msg += "\nChanged styles: " + str(styles) + # read in refrence data from a previous test run + with open(quick_reference, 'r') as f: + reference = yaml.load(f, Loader=Loader) + f.close() + + # trim previously failing run and runs that would take too long + new_list = [] + keys = reference.keys() + msg += "\nTrimming inputs using reference data from " + str(len(keys)) + " previous runs: " + for infile in input_list: + input = os.path.split(infile)[1] + if input in keys: + if (reference[input]['walltime'] < 0.0): + # print("Skipping ", input, " for previous failure") + pass + elif (reference[input]['walltime'] > 29.0): + # print("Skipping ", input, " for wall time limit") + pass + else: + new_list.append(infile) + else: + new_list.append(infile) + input_list = new_list + msg += "trimmed list has " + str(len(input_list)) + " entries" + if len(input_list) > quick_max: input_list = random.sample(input_list, quick_max) msg += "\nTesting " + str(quick_max) + " randomly selected inputs" print(msg) logger.info(msg) - + quit() # divide the list of input scripts into num_workers chunks sublists = divide_into_N(input_list, num_workers) From fa5a3446c0c0475a8b1e38a5a149ebc483ac7041 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 7 Sep 2024 00:28:59 -0400 Subject: [PATCH 80/93] add forgotten file --- tools/regression-tests/reference.yaml | 809 ++++++++++++++++++++++++++ 1 file changed, 809 insertions(+) create mode 100644 tools/regression-tests/reference.yaml diff --git a/tools/regression-tests/reference.yaml b/tools/regression-tests/reference.yaml new file mode 100644 index 0000000000..2daf17cf13 --- /dev/null +++ b/tools/regression-tests/reference.yaml @@ -0,0 +1,809 @@ +in.granregion.box: { folder: examples/granregion, status: "completed, 8 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.granregion.funnel: { folder: examples/granregion, status: "failed, no Total wall time in the output.", walltime: -1 } +in.granregion.mixer: { folder: examples/granregion, status: "failed, no Total wall time in the output.", walltime: -1 } +in.melt: { folder: examples/melt, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.airebo: { folder: examples/airebo, status: "failed, no Total wall time in the output.", walltime: -1 } +in.airebo-0-0: { folder: examples/airebo, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.airebo-m: { folder: examples/airebo, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rebo2: { folder: examples/airebo, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.hybrid: { folder: examples/template, status: "completed, 3 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.mol-data-mix: { folder: examples/template, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } +in.mol-restart-mix: { folder: examples/template, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } +in.molecular-mix: { folder: examples/template, status: "completed, 5 rel thermo checks failed", walltime: 26.0, walltime_norm: 4.333333333333333 } +in.template-mix: { folder: examples/template, status: "completed, 5 rel thermo checks failed", walltime: 26.0, walltime_norm: 4.333333333333333 } +in.tmpl-data-mix: { folder: examples/template, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } +in.tmpl-restart-mix: { folder: examples/template, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } +in.first: { folder: examples/rerun, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.rdf.first: { folder: examples/rerun, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.rdf.rerun: { folder: examples/rerun, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.read_dump: { folder: examples/rerun, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rerun: { folder: examples/rerun, status: "failed, no Total wall time in the output.", walltime: -1 } +in.lj.ehex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } +in.lj.hex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spce.ehex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spce.hex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } +in.vashishta.inp: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.vashishta.sio2: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.vashishta.table.inp: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.vashishta.table.sio2: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.atomfile: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.atomvar: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.early: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.gravity: { folder: examples/rigid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.infile: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.molecule: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.nve: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.nve.early: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.poems: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems2: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems3: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems4: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems5: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.rigid.property: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.small: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.small.infile: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.rigid.tnr: { folder: examples/rigid, status: "completed, 22 rel thermo checks failed", walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.voronoi: { folder: examples/voronoi, status: "completed, but no Step nor Loop in the output.", walltime: 6.0, walltime_norm: 1.0 } +in.voronoi.2d: { folder: examples/voronoi, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.voronoi.data: { folder: examples/voronoi, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.ehex: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } +in.heat: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } +in.heatflux: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } +in.langevin: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } +in.mp: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } +in.pour: { folder: examples/pour, status: "completed, thermo checks passed", walltime: 42.0, walltime_norm: 7.0 } +in.pour.2d: { folder: examples/pour, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.pour.2d.molecule: { folder: examples/pour, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.deposit.atom: { folder: examples/deposit, status: "completed, 3 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.deposit.molecule: { folder: examples/deposit, status: "completed, 3 rel thermo checks failed", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.deposit.molecule.rigid-nve-small: { folder: examples/deposit, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.deposit.molecule.rigid-nvt-small: { folder: examples/deposit, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.deposit.molecule.rigid-small: { folder: examples/deposit, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.deposit.molecule.shake: { folder: examples/deposit, status: "completed, 3 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.charmmfsw: { folder: examples/charmmfsw, status: "completed, thermo checks passed", walltime: 27.0, walltime_norm: 4.5 } +in.indent: { folder: examples/indent, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.indent.min: { folder: examples/indent, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.qeq.buck: { folder: examples/qeq, status: "completed, thermo checks passed", walltime: 29.0, walltime_norm: 4.833333333333333 } +in.qeq.reaxff: { folder: examples/qeq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.dreiding: { folder: examples/dreiding, status: "completed, error parsing log.lammps into YAML", walltime: 0.0, walltime_norm: 0.0 } +in.22DMH.real: { folder: examples/relres, status: "failed, no Total wall time in the output.", walltime: -1 } +in.22DMH.relres: { folder: examples/relres, status: "failed, incomplete runs", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.22DMH.respa: { folder: examples/relres, status: "completed, thermo checks passed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.track: { folder: examples/tracker, status: "failed, ERROR: Illegal pair_style command (src/MISC/pair_tracker.cpp:221).", walltime: -1 } +in.pour.drum: { folder: examples/granular, status: "completed, thermo checks passed", walltime: 15.0, walltime_norm: 2.5 } +in.pour.flatwall: { folder: examples/granular, status: "completed, thermo checks passed", walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.pour.heat: { folder: examples/granular, status: "failed, no Total wall time in the output.", walltime: -1 } +in.restitution: { folder: examples/granular, status: "completed, thermo checks passed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.micelle: { folder: examples/micelle, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.micelle-rigid: { folder: examples/micelle, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.x: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.x.noloop: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.x.y: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.xy: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.replicate.cnt: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.srd.mixture: { folder: examples/srd, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.srd.pure: { folder: examples/srd, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.ttm: { folder: examples/ttm, status: "completed, thermo checks passed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.ttm.grid: { folder: examples/ttm, status: "completed, thermo checks passed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.ttm.mod: { folder: examples/ttm, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.colloid: { folder: examples/multi, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.granular: { folder: examples/multi, status: "completed, 3 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.powerlaw: { folder: examples/multi, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.msst: { folder: examples/msst, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.gjf.vfull: { folder: examples/gjf, status: "completed, 3 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.gjf.vhalf: { folder: examples/gjf, status: "completed, 3 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.spin.cobalt_fcc: { folder: examples/SPIN/cobalt_fcc, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.spin.nickel: { folder: examples/SPIN/nickel, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.spin.nickel_cubic: { folder: examples/SPIN/nickel, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.spin.cobalt_hcp: { folder: examples/SPIN/cobalt_hcp, status: "completed, 4 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.spin.iron: { folder: examples/SPIN/iron, status: "completed, 4 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.spin.iron_cubic: { folder: examples/SPIN/iron, status: "completed, 2 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.gneb.skyrmion: { folder: examples/SPIN/gneb/skyrmion, status: "failed, ERROR: Did not assign all atoms correctly (src/read_data.cpp:1562).", walltime: -1 } +in.gneb.iron: { folder: examples/SPIN/gneb/iron, status: "failed, ERROR: Cannot use NEBSpin with a single replica (src/SPIN/neb_spin.cpp:133).", walltime: -1 } +in.spin.read_data: { folder: examples/SPIN/read_restart, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spin.restart: { folder: examples/SPIN/read_restart, status: "failed, ERROR: Invalid flag in force field section of restart file (src/read_restart.cpp:948).", walltime: -1 } +in.spin.write_restart: { folder: examples/SPIN/read_restart, status: "completed, 2 rel thermo checks failed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.spin.bfo_min: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.spin.bfo_min_cg: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.spin.bfo_min_lbfgs: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.spin.iron_min: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.spin.setforce: { folder: examples/SPIN/setforce_spin, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spin.bfo: { folder: examples/SPIN/bfo, status: "completed, 2 rel thermo checks failed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.spin.iron_dipole_cut: { folder: examples/SPIN/dipole_spin, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.spin.iron_dipole_ewald: { folder: examples/SPIN/dipole_spin, status: "completed, 1 abs thermo checks failed", walltime: 30.0, walltime_norm: 5.0 } +in.spin.iron_dipole_pppm: { folder: examples/SPIN/dipole_spin, status: "completed, thermo checks passed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.spin.iron-nve: { folder: examples/SPIN/test_problems/validation_nve, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 32.0, walltime_norm: 5.333333333333333 } +in.spin.nvt_lattice: { folder: examples/SPIN/test_problems/validation_nvt, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spin.nvt_spin: { folder: examples/SPIN/test_problems/validation_nvt, status: "failed, ERROR: Fix langevin period must be > 0.0 (src/fix_langevin.cpp:80).", walltime: -1 } +in.mliap.ace.compute: { folder: examples/mliap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.mliap.nn.Cu: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.mliap.nn.Ta06A: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.mliap.pytorch.Ta06A: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } +in.mliap.pytorch.ace: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } +in.mliap.pytorch.ace.NN: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } +in.mliap.pytorch.relu1hidden: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } +in.mliap.quadratic.compute: { folder: examples/mliap, status: "failed, no Total wall time in the output.", walltime: -1 } +in.mliap.snap.Ta06A: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.mliap.snap.WBe.PRB2019: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.mliap.snap.chem: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 26.0, walltime_norm: 4.333333333333333 } +in.mliap.snap.compute: { folder: examples/mliap, status: "failed, no Total wall time in the output.", walltime: -1 } +in.mliap.snap.quadratic: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.mliap.so3.Ni_Mo: { folder: examples/mliap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.mliap.so3.nn.Si: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.mliap.unified.lj.Ar: { folder: examples/mliap, status: "failed, ERROR: Could not process Python string: .", walltime: -1 } +in.run: { folder: examples/mliap/jax, status: "failed, ERROR: Using pair_style mliap unified requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:213).", walltime: -1 } +in.eim: { folder: examples/eim, status: "completed, 2 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.shear: { folder: examples/shear, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.shear.void: { folder: examples/shear, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.aimd.alone: { folder: examples/mdi, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.aimd.driver: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.aimd.driver.plugin: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.aimd.engine: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } +in.aimdpy.mm: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } +in.aimdpy.qm: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } +in.sequence.python: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } +in.series.alone: { folder: examples/mdi, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.series.driver: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi connect (src/input.cpp:314)", walltime: -1 } +in.series.driver.plugin: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.series.engine: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } +in.snapshot.alone: { folder: examples/mdi, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.snapshot.driver: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.snapshot.driver.plugin: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.snapshot.engine: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } +in.lammps: { folder: examples/PACKAGES/dpd-smooth/2d-diffusion, status: "failed, no Total wall time in the output.", walltime: -1 } +in.lammps: { folder: examples/PACKAGES/dpd-smooth/2d-diffusion-in-shear-flow, status: "failed, no Total wall time in the output.", walltime: -1 } +in.lammps: { folder: examples/PACKAGES/dpd-smooth/equipartition-verification, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 49.0, walltime_norm: 8.166666666666666 } +in.fitpod: { folder: examples/PACKAGES/pod/InP, status: "failed, ERROR: Cannot fit potential without data files. The data paths may not be valid. Please check the data paths in the POD data file. (src/ML-POD/fitpod_command.cpp:718).", walltime: -1 } +in.pod: { folder: examples/PACKAGES/pod/InP, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.fitpod: { folder: examples/PACKAGES/pod/Ta, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.pod: { folder: examples/PACKAGES/pod/Ta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.pod.compute: { folder: examples/PACKAGES/pod/Ta, status: "failed, ERROR: Per-atom data too large (src/ML-POD/compute_podd_atom.cpp:62).", walltime: -1 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxRNA2/duplex2, status: "completed, 1 rel thermo checks failed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxRNA2/potential_file, status: "completed, 1 rel thermo checks failed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/duplex2, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/duplex1, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/potential_file, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex2, status: "completed, thermo checks passed", walltime: 24.0, walltime_norm: 4.0 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex1, status: "completed, thermo checks passed", walltime: 12.0, walltime_norm: 2.0 } +in.dsring: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/dsring, status: "completed, thermo checks passed", walltime: 46.0, walltime_norm: 7.666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/potential_file, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex4.4type: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex4.8type: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex3: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex3, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxRNA2/duplex2, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxRNA2/potential_file, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/duplex2, status: "completed, thermo checks passed", walltime: 22.0, walltime_norm: 3.6666666666666665 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/duplex1, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/potential_file, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex2, status: "completed, thermo checks passed", walltime: 24.0, walltime_norm: 4.0 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex1, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.dsring: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/dsring, status: "completed, thermo checks passed", walltime: 46.0, walltime_norm: 7.666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/potential_file, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex4.4type: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex4.8type: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex3: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex3, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.temper_npt: { folder: examples/PACKAGES/temper_npt, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } +in.peptide-plumed: { folder: examples/PACKAGES/plumed, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'plumed' is part of the PLUMED package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.methanol: { folder: examples/PACKAGES/bocs, status: "completed, 4 rel thermo checks failed", walltime: 23.0, walltime_norm: 3.8333333333333335 } +in.pedone.melt: { folder: examples/PACKAGES/pedone, status: "completed, 2 rel thermo checks failed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.pedone.relax: { folder: examples/PACKAGES/pedone, status: "completed, 2 rel thermo checks failed", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.methanol_implicit_water: { folder: examples/PACKAGES/local_density/methanol_implicit_water, status: "failed, no Total wall time in the output.", walltime: -1 } +in.benzene_water: { folder: examples/PACKAGES/local_density/benzene_water, status: "completed, but no Step nor Loop in the output.", walltime: 24.0, walltime_norm: 4.0 } +in.gauss-diel: { folder: examples/PACKAGES/gauss_diel, status: "completed, error parsing log.lammps into YAML", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.gauss-diel-cg: { folder: examples/PACKAGES/gauss_diel, status: "completed, error parsing log.lammps into YAML", walltime: 3.0, walltime_norm: 0.5 } +in.gauss-diel-split: { folder: examples/PACKAGES/gauss_diel, status: "completed, error parsing log.lammps into YAML", walltime: 3.0, walltime_norm: 0.5 } +in.alloy: { folder: examples/PACKAGES/alchemy, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } +in.twowater: { folder: examples/PACKAGES/alchemy, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } +in.sds-hybrid: { folder: examples/PACKAGES/cgspica/sds-monolayer, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.sds-regular: { folder: examples/PACKAGES/cgspica/sds-monolayer, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.pegc12e8: { folder: examples/PACKAGES/cgspica/peg-verlet, status: "failed, no Total wall time in the output.", walltime: -1 } +in.pegc12e8-angle: { folder: examples/PACKAGES/cgspica/peg-verlet, status: "failed, no Total wall time in the output.", walltime: -1 } +in.hkust1: { folder: examples/PACKAGES/mofff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.hkust1_long: { folder: examples/PACKAGES/mofff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.e3b-tip4p2005: { folder: examples/PACKAGES/e3b, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.uf3.Nb: { folder: examples/PACKAGES/uf3, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.fep01.lmp: { folder: examples/PACKAGES/fep/CC-CO/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fep10.lmp: { folder: examples/PACKAGES/fep/CC-CO/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } +in.insertion: { folder: examples/PACKAGES/fep/C7inEthanol/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } +in.deletion: { folder: examples/PACKAGES/fep/C7inEthanol/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fep01.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fep10.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } +in.bar10.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/bar10, status: "failed, no Total wall time in the output.", walltime: -1 } +in.bar01.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/bar01, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fep01.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fdti01.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fdti01, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fep10.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fdti10.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fdti10, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spce.lmp: { folder: examples/PACKAGES/fep/ta, status: "failed, no Total wall time in the output.", walltime: -1 } +in.gap: { folder: examples/PACKAGES/quip, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'quip' is part of the ML-QUIP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.molecular: { folder: examples/PACKAGES/quip, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'quip' is part of the ML-QUIP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.sw: { folder: examples/PACKAGES/quip, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'quip' is part of the ML-QUIP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.srp_react: { folder: examples/PACKAGES/srp_react, status: "failed, ERROR: Invalid bond type 0 for pair style srp (src/MISC/pair_srp.cpp:403).", walltime: -1 } +in.spce: { folder: examples/PACKAGES/manybody_table, status: "completed, 3 rel thermo checks failed", walltime: 9.0, walltime_norm: 1.5 } +in.spce2: { folder: examples/PACKAGES/manybody_table, status: "completed, 3 rel thermo checks failed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.spce_sw: { folder: examples/PACKAGES/manybody_table, status: "completed, 1 rel thermo checks failed", walltime: 9.0, walltime_norm: 1.5 } +in.confined: { folder: examples/PACKAGES/dielectric, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.nopbc: { folder: examples/PACKAGES/dielectric, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.methane_qtb: { folder: examples/PACKAGES/qtb/methane_qtb, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.alpha_quartz_qtb: { folder: examples/PACKAGES/qtb/alpha_quartz_qtb, status: "completed, 2 rel thermo checks failed", walltime: 27.0, walltime_norm: 4.5 } +in.alpha_quartz_qbmsst: { folder: examples/PACKAGES/qtb/alpha_quartz_qbmsst, status: "failed, no Total wall time in the output.", walltime: -1 } +in.methane_qbmsst: { folder: examples/PACKAGES/qtb/methane_qbmsst, status: "failed, no Total wall time in the output.", walltime: -1 } +in.tmd: { folder: examples/PACKAGES/tmd, status: "completed, error parsing log.lammps into YAML", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.meam-spline.Si: { folder: examples/PACKAGES/meam_spline, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.meam-spline.TiO2: { folder: examples/PACKAGES/meam_spline, status: "failed, no Total wall time in the output.", walltime: -1 } +in.silicon: { folder: examples/PACKAGES/phonon/dynamical_matrix_command/Silicon, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.EAM3D: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, no Total wall time in the output.", walltime: -1 } +in.disp: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, unknown command, package not installed, ERROR: Unknown command: 1 (src/input.cpp:314)", walltime: -1 } +in.disp2: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, unknown command, package not installed, ERROR: Unknown command: 1 (src/input.cpp:314)", walltime: -1 } +in.dos: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "skipped", walltime: -2 } +in.Ana: { folder: examples/PACKAGES/phonon/1-1D-mono, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 9.0, walltime_norm: 1.5 } +in.disp: { folder: examples/PACKAGES/phonon/1-1D-mono, status: "failed, unknown command, package not installed, ERROR: Unknown command: 1 (src/input.cpp:314)", walltime: -1 } +in.Ana: { folder: examples/PACKAGES/phonon/2-1D-diatomic, status: "completed, thermo checks passed", walltime: 24.0, walltime_norm: 4.0 } +in.disp: { folder: examples/PACKAGES/phonon/2-1D-diatomic, status: "failed, unknown command, package not installed, ERROR: Unknown command: 10 (src/input.cpp:314)", walltime: -1 } +in.disp: { folder: examples/PACKAGES/phonon/4-Graphene, status: "failed, unknown command, package not installed, ERROR: Unknown command: 100 (src/input.cpp:314)", walltime: -1 } +in.graphene: { folder: examples/PACKAGES/phonon/4-Graphene, status: "failed, no Total wall time in the output.", walltime: -1 } +in.dpde-shardlow: { folder: examples/PACKAGES/dpd-react/dpde-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.dpde-vv: { folder: examples/PACKAGES/dpd-react/dpde-vv, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 18.0, walltime_norm: 3.0 } +in.dpd-shardlow: { folder: examples/PACKAGES/dpd-react/dpd-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.dpd-vv: { folder: examples/PACKAGES/dpd-react/dpd-vv, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.dpdp-shardlow: { folder: examples/PACKAGES/dpd-react/dpdp-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.multi-lucy: { folder: examples/PACKAGES/dpd-react/multi-lucy, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.dpdh-shardlow: { folder: examples/PACKAGES/dpd-react/dpdh-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.dpdrx-shardlow: { folder: examples/PACKAGES/dpd-react/dpdrx-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.GD: { folder: examples/PACKAGES/flow_gauss, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.basal: { folder: examples/PACKAGES/basal, status: "failed, no Total wall time in the output.", walltime: -1 } +in.cascade_AlCu: { folder: examples/PACKAGES/electron_stopping, status: "failed, ERROR: Must set 'extscalar' when setting 'scalar_flag' for fix electron/stopping/fit. Contact the developer. (src/fix.cpp:135).", walltime: -1 } +in.cascade_SiSi: { folder: examples/PACKAGES/electron_stopping, status: "failed, ERROR: Must set 'extscalar' when setting 'scalar_flag' for fix electron/stopping/fit. Contact the developer. (src/fix.cpp:135).", walltime: -1 } +in.elstop: { folder: examples/PACKAGES/electron_stopping, status: "completed, thermo checks passed", walltime: 33.0, walltime_norm: 5.5 } +in.elstop.only: { folder: examples/PACKAGES/electron_stopping, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.chreg-acid: { folder: examples/PACKAGES/charge_regulation, status: "completed, 1 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.chreg-acid-real: { folder: examples/PACKAGES/charge_regulation, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.chreg-polymer: { folder: examples/PACKAGES/charge_regulation, status: "completed, 1 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.adatom: { folder: examples/PACKAGES/agni, status: "completed, thermo checks passed", walltime: 27.0, walltime_norm: 4.5 } +in.vacancy: { folder: examples/PACKAGES/agni, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.bucky-plus-cnt: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.bucky-plus-cnt-gpu: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.deca-ala-solv-filter_imd: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.deca-ala-solv_imd: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.deca-ala_imd: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.deca-ala_imd-gpu: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.melt_imd: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.melt_imd-gpu: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } +in.first: { folder: examples/PACKAGES/adios/rerun, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'custom/adios' is part of the ADIOS package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } +in.read_dump: { folder: examples/PACKAGES/adios/rerun, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized reader style 'adios' is part of the ADIOS package which is not enabled in this LAMMPS binary. (src/read_dump.cpp:236)", walltime: -1 } +in.rerun: { folder: examples/PACKAGES/adios/rerun, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized reader style 'adios' is part of the ADIOS package which is not enabled in this LAMMPS binary. (src/read_dump.cpp:236)", walltime: -1 } +in.adios_balance: { folder: examples/PACKAGES/adios/balance, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'custom/adios' is part of the ADIOS package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } +in.adios_balance2: { folder: examples/PACKAGES/adios/balance, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized reader style 'adios' is part of the ADIOS package which is not enabled in this LAMMPS binary. (src/read_dump.cpp:236)", walltime: -1 } +in.bcc0: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.vac0-bcc: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.vacmin-bcc: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.vtk: { folder: examples/PACKAGES/vtk, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'vtk' is part of the VTK package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } +in.vtp: { folder: examples/PACKAGES/vtk, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'vtk' is part of the VTK package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } +in.dpdext: { folder: examples/PACKAGES/dpd-basic/dpdext, status: "completed, 2 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.dpd: { folder: examples/PACKAGES/dpd-basic/dpd, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.dpdext_tstat: { folder: examples/PACKAGES/dpd-basic/dpdext_tstat, status: "completed, thermo checks passed", walltime: 30.0, walltime_norm: 5.0 } +in.dpd_tstat: { folder: examples/PACKAGES/dpd-basic/dpd_tstat, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.dpd_coul_slater_long: { folder: examples/PACKAGES/dpd-basic/dpd_coul_slater_long, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.piston: { folder: examples/PACKAGES/electrode/piston, status: "failed, no Total wall time in the output.", walltime: -1 } +in.cg: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.eta: { folder: examples/PACKAGES/electrode/madelung, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.eta_cg: { folder: examples/PACKAGES/electrode/madelung, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.eta_mix: { folder: examples/PACKAGES/electrode/madelung, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.ewald-ew2d: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.ewald-ew3dc: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.ewald-ffield: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.pppm-ew3dc: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.pppm-ffield: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.ffield: { folder: examples/PACKAGES/electrode/au-aq, status: "failed, no Total wall time in the output.", walltime: -1 } +in.tf: { folder: examples/PACKAGES/electrode/au-aq, status: "failed, no Total wall time in the output.", walltime: -1 } +in.conp: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.conq: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.conq2: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.etypes: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.ffield: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.ramp: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.thermo: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } +in.planar-ewald-ew2d: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.planar-ewald-ew3dc: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.planar-ewald-ffield: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.planar-pppm-ew3dc: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.planar-pppm-ffield: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.convective_pulse: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.ddm_schrodinger: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.finite_well: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.no_atoms_ddm: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.null_material_ddm: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.poisson1d_noatoms: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.poisson2d_noatoms: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.schrodinger-poisson2d_Jconstraint: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.schrodinger-poisson2d_convective: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.schrodinger-poisson2d_noatoms: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_biaxial: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_shear: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_unistrain: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_unistrain_eam: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_unistrain_eam_linear: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_unistrain_linear: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cb_volumetric: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.flying_cube: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.ftcb_constV: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.read_xref: { folder: examples/PACKAGES/atc/cauchy_born, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.consistency: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_kernel_convergence: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_unistrain_cell: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_unistrain_mesh: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_unistrain_qcylinder: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_unistrain_qsphere: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_unistrain_step: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_volume_stretch: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eshelby_static: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.nvt: { folder: examples/PACKAGES/atc/hardy, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_fluids: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.concentration: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.conducting_interface: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.dielectric_interface: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.double_layer: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.liquid_electrostatic: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.opp_force: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.poisson: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.shear_flow: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.shear_no_atoms: { folder: examples/PACKAGES/atc/fluids, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.harmonic_bonds: { folder: examples/PACKAGES/atc/molecule, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.polarize: { folder: examples/PACKAGES/atc/molecule, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.quartic_bonds: { folder: examples/PACKAGES/atc/molecule, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water: { folder: examples/PACKAGES/atc/molecule, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_all_atoms: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_combined: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_flux: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_frac_step: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_hoover: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_interpolate: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_lumped: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.no_atoms: { folder: examples/PACKAGES/atc/thermal, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.gaussianIC1d_hex: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.gaussianIC2d_hex: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.gaussianIC2d_hex20_uniform: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.gaussianIC2d_hex27_uniform: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.gaussianIC2d_tet: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.kernel2d_hex: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.kernel2d_tet: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.mesh2d_tet: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.semicircle: { folder: examples/PACKAGES/atc/mesh, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_damped: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_flux: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_frac_step: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_ghost_flux: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_thermo_elastic: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.eam_energy: { folder: examples/PACKAGES/atc/elastic, status: "failed, no Total wall time in the output.", walltime: -1 } +in.electron_density: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.no_atoms: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.no_atoms_cb: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.no_atoms_cb_linear: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.bar1d_ttm: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.cutout: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.gaussianIC_ttm: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.no_atoms: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.restart: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.uniform_exchange: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.uniform_heating: { folder: examples/PACKAGES/atc/two_temperature, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.pits: { folder: examples/PACKAGES/latboltz/pit_geometry, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.polymer: { folder: examples/PACKAGES/latboltz/polymer, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.confined_colloids: { folder: examples/PACKAGES/latboltz/confined_colloid, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.trapnewsphere: { folder: examples/PACKAGES/latboltz/diffusingsphere, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.translocation: { folder: examples/PACKAGES/latboltz/translocation, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.toycar: { folder: examples/PACKAGES/latboltz/toycar, status: "failed, no Total wall time in the output.", walltime: -1 } +in.microrheology: { folder: examples/PACKAGES/latboltz/microrheology, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.dragtest: { folder: examples/PACKAGES/latboltz/dragforce, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.planewall: { folder: examples/PACKAGES/latboltz/planewall, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.compute: { folder: examples/PACKAGES/pace/compute, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.pace.product: { folder: examples/PACKAGES/pace, status: "completed, thermo checks passed", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.pace.recursive: { folder: examples/PACKAGES/pace, status: "completed, thermo checks passed", walltime: 12.0, walltime_norm: 2.0 } +in.addtorque: { folder: examples/PACKAGES/addtorque, status: "failed, no Total wall time in the output.", walltime: -1 } +in.cnp: { folder: examples/PACKAGES/cnp, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 29.0, walltime_norm: 4.833333333333333 } +in.CH4fc.ang: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.CH4fc.bohr: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.CH4fc.spe.ang: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.CH4fc.spe.bohr: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.C2H6fc.ang: { folder: examples/PACKAGES/eff/fixed-core/C2H6, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.C2H6fc.bohr: { folder: examples/PACKAGES/eff/fixed-core/C2H6, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.ch4.dynamics: { folder: examples/PACKAGES/eff/CH4, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.ch4.min: { folder: examples/PACKAGES/eff/CH4, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.ch4_ionized.dynamics: { folder: examples/PACKAGES/eff/CH4, status: "completed, thermo checks passed", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.Be-solid.spe: { folder: examples/PACKAGES/eff/Be-solid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.adamantane_ionized.nve: { folder: examples/PACKAGES/eff/Auger-Adamantane, status: "failed, ERROR: Lost atoms: original 101 current 100 (src/thermo.cpp:494).", walltime: -1 } +in.SiH4: { folder: examples/PACKAGES/eff/ECP/SiH4, status: "completed, error parsing log.lammps into YAML", walltime: 0.0, walltime_norm: 0.0 } +in.SiH4.ang: { folder: examples/PACKAGES/eff/ECP/SiH4, status: "completed, error parsing log.lammps into YAML", walltime: 0.0, walltime_norm: 0.0 } +in.Si2H6: { folder: examples/PACKAGES/eff/ECP/Si2H6, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.Si2H6.ang: { folder: examples/PACKAGES/eff/ECP/Si2H6, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.SiC: { folder: examples/PACKAGES/eff/ECP/SiC/bulk, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 31.0, walltime_norm: 5.166666666666667 } +in.h2bulk.npt: { folder: examples/PACKAGES/eff/H_plasma, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 47.0, walltime_norm: 7.833333333333333 } +in.h2bulk.nve: { folder: examples/PACKAGES/eff/H_plasma, status: "failed, no Total wall time in the output.", walltime: -1 } +in.h2bulk.nve.ang: { folder: examples/PACKAGES/eff/H_plasma, status: "failed, no Total wall time in the output.", walltime: -1 } +in.Li-dendritic.min: { folder: examples/PACKAGES/eff/Li-dendritic, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 35.0, walltime_norm: 5.833333333333333 } +in.Li-dendritic.nvt: { folder: examples/PACKAGES/eff/Li-dendritic, status: "failed, no Total wall time in the output.", walltime: -1 } +in.Li.ang: { folder: examples/PACKAGES/eff/Li-solid, status: "failed, no Total wall time in the output.", walltime: -1 } +in.Li.bohr: { folder: examples/PACKAGES/eff/Li-solid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 53.0, walltime_norm: 8.833333333333334 } +in.h2: { folder: examples/PACKAGES/eff/H2, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.h_atom.spe.ang: { folder: examples/PACKAGES/eff/H, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.h_atom.spe.bohr: { folder: examples/PACKAGES/eff/H, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.npt_biaxial: { folder: examples/PACKAGES/uef/npt_biaxial, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.nvt_uniaxial: { folder: examples/PACKAGES/uef/nvt_uniaxial, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.crystal: { folder: examples/PACKAGES/rhok, status: "completed, 2 rel thermo checks failed", walltime: 24.0, walltime_norm: 4.0 } +in.pinning: { folder: examples/PACKAGES/rhok, status: "failed, ERROR: Cannot open file data.halfhalf: No such file or directory (src/read_data.cpp:367).", walltime: -1 } +in.setup: { folder: examples/PACKAGES/rhok, status: "completed, 2 rel thermo checks failed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.peptide-colvars: { folder: examples/PACKAGES/colvars, status: "completed, error parsing log.lammps into YAML", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.peptide-colvars2: { folder: examples/PACKAGES/colvars, status: "completed, error parsing log.lammps into YAML", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.peptide-spring: { folder: examples/PACKAGES/colvars, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.peptide-spring2: { folder: examples/PACKAGES/colvars, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.hdnnp: { folder: examples/PACKAGES/hdnnp, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'hdnnp' is part of the ML-HDNNP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.hybrid: { folder: examples/PACKAGES/hdnnp, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'hdnnp' is part of the ML-HDNNP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } +in.edip-Si: { folder: examples/PACKAGES/edip, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.edip-Si-multi: { folder: examples/PACKAGES/edip, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.edip-SiC: { folder: examples/PACKAGES/edip, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.large_nylon_melt: { folder: examples/PACKAGES/reaction/nylon,6-6_melt, status: "failed, no Total wall time in the output.", walltime: -1 } +in.tiny_polystyrene.stabilized: { folder: examples/PACKAGES/reaction/tiny_polystyrene, status: "completed, 2 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } +in.tiny_epoxy.stabilized: { folder: examples/PACKAGES/reaction/tiny_epoxy, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.grow_styrene: { folder: examples/PACKAGES/reaction/create_atoms_polystyrene, status: "completed, 2 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.tiny_nylon.stabilized: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "failed, unknown command, package not installed, ERROR: Unknown command: react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map rescale_charges yes (src/input.cpp:314)", walltime: -1 } +in.tiny_nylon.stabilized_variable_probability: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.tiny_nylon.unstabilized: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.BulkNi: { folder: examples/PACKAGES/diffraction, status: "failed, no Total wall time in the output.", walltime: -1 } +in.tdpd: { folder: examples/PACKAGES/dpd-meso/tdpd, status: "failed, no Total wall time in the output.", walltime: -1 } +in.tdpd-region: { folder: examples/PACKAGES/dpd-meso/tdpd, status: "failed, no Total wall time in the output.", walltime: -1 } +in.mdpd: { folder: examples/PACKAGES/dpd-meso/mdpd, status: "failed, no Total wall time in the output.", walltime: -1 } +in.edpd: { folder: examples/PACKAGES/dpd-meso/edpd, status: "failed, no Total wall time in the output.", walltime: -1 } +in.edpd-region: { folder: examples/PACKAGES/dpd-meso/edpd, status: "failed, no Total wall time in the output.", walltime: -1 } +in.cylinder: { folder: examples/PACKAGES/stressprofile, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.flat: { folder: examples/PACKAGES/stressprofile, status: "failed, ERROR: Illegal compute stress/cartesian command: missing argument(s) (src/EXTRA-COMPUTE/compute_stress_cartesian.cpp:65).", walltime: -1 } +in.sphere: { folder: examples/PACKAGES/stressprofile, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.srp: { folder: examples/PACKAGES/srp, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.scafacos: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.cw.ewald: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.cw.fmm: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.cw.p2nfft: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.cw.p3m: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.ewald: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.fmm: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.hsph.direct: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.hsph.fmm: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.hsph.p2nfft: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.p2nfft: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.scafacos.p3m: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } +in.h_atom: { folder: examples/PACKAGES/awpmd, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized atom style 'wavepacket' is part of the AWPMD package which is not enabled in this LAMMPS binary. (src/atom.cpp:745)", walltime: -1 } +in.h_molecule: { folder: examples/PACKAGES/awpmd, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized atom style 'wavepacket' is part of the AWPMD package which is not enabled in this LAMMPS binary. (src/atom.cpp:745)", walltime: -1 } +in.gold_gr: { folder: examples/PACKAGES/interlayer/saip_metal, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.atom-diffusion: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_z, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_z, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.gr_water: { folder: examples/PACKAGES/interlayer/aip_water_2dm, status: "completed, 2 rel thermo checks failed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.gr_water.opt: { folder: examples/PACKAGES/interlayer/aip_water_2dm, status: "completed, 2 rel thermo checks failed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_full, status: "failed, no Total wall time in the output.", walltime: -1 } +in.CH_drip: { folder: examples/PACKAGES/interlayer/drip, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.C_drip: { folder: examples/PACKAGES/interlayer/drip, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.mos2: { folder: examples/PACKAGES/interlayer/ilp_tmds, status: "completed, 1 rel thermo checks failed", walltime: 56.0, walltime_norm: 9.333333333333334 } +in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } +in.bilayer-hBN: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } +in.grhBN: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } +in.ilp_graphene_hbn: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } +in.smatbAgCuPancake: { folder: examples/PACKAGES/smtbq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.smatbBulkFCC: { folder: examples/PACKAGES/smtbq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.smtbq.Al: { folder: examples/PACKAGES/smtbq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } +in.smtbq.Al2O3: { folder: examples/PACKAGES/smtbq, status: "failed, no Total wall time in the output.", walltime: -1 } +in.smtbq.TiO2: { folder: examples/PACKAGES/smtbq, status: "failed, no Total wall time in the output.", walltime: -1 } +in.slater: { folder: examples/PACKAGES/slater, status: "failed, no Total wall time in the output.", walltime: -1 } +in.slcsa: { folder: examples/PACKAGES/sna_nnn_slcsa, status: "completed, error parsing log.lammps into YAML", walltime: 42.0, walltime_norm: 7.0 } +in.orient_eco: { folder: examples/PACKAGES/orient_eco, status: "failed, no Total wall time in the output.", walltime: -1 } +in.entropy: { folder: examples/PACKAGES/entropy, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.bpti: { folder: examples/PACKAGES/filter_corotate, status: "completed, error parsing log.lammps into YAML", walltime: 24.0, walltime_norm: 4.0 } +in.peptide: { folder: examples/PACKAGES/filter_corotate, status: "failed, no Total wall time in the output.", walltime: -1 } +in.graphene: { folder: examples/PACKAGES/ipi, status: "failed, no Total wall time in the output.", walltime: -1 } +in.gREM-npt: { folder: examples/PACKAGES/grem/lj-single, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.gREM-nvt: { folder: examples/PACKAGES/grem/lj-single, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.gREM: { folder: examples/PACKAGES/grem/lj-6rep, status: "failed, ERROR: Cannot open file restart_file: No such file or directory (src/read_data.cpp:367).", walltime: -1 } +in.gREM-temper: { folder: examples/PACKAGES/grem/lj-temper, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } +in.compute_stress_mop: { folder: examples/PACKAGES/mop, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fix_wall: { folder: examples/PACKAGES/ees, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fix_wall_region: { folder: examples/PACKAGES/ees, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.ti_spring: { folder: examples/PACKAGES/ti, status: "failed, no Total wall time in the output.", walltime: -1 } +in.extep-bn: { folder: examples/PACKAGES/extep, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.toluene.lang: { folder: examples/PACKAGES/drude/toluene, status: "failed, no Total wall time in the output.", walltime: -1 } +in.toluene.nh: { folder: examples/PACKAGES/drude/toluene, status: "failed, no Total wall time in the output.", walltime: -1 } +in.butane.lang: { folder: examples/PACKAGES/drude/butane, status: "completed, 3 rel thermo checks failed", walltime: 50.0, walltime_norm: 8.333333333333334 } +in.butane.nh: { folder: examples/PACKAGES/drude/butane, status: "completed, 5 rel thermo checks failed", walltime: 49.0, walltime_norm: 8.166666666666666 } +in.butane.tgnh: { folder: examples/PACKAGES/drude/butane, status: "completed, 4 rel thermo checks failed", walltime: 49.0, walltime_norm: 8.166666666666666 } +in.swm4-ndp.lang: { folder: examples/PACKAGES/drude/swm4-ndp, status: "failed, no Total wall time in the output.", walltime: -1 } +in.swm4-ndp.nh: { folder: examples/PACKAGES/drude/swm4-ndp, status: "completed, 5 rel thermo checks failed", walltime: 55.0, walltime_norm: 9.166666666666666 } +in.ethylene_glycol: { folder: examples/PACKAGES/drude/ethylene_glycol, status: "completed, 4 rel thermo checks failed", walltime: 25.0, walltime_norm: 4.166666666666667 } +in.ethanol.lang: { folder: examples/PACKAGES/drude/ethanol, status: "completed, 5 rel thermo checks failed", walltime: 43.0, walltime_norm: 7.166666666666667 } +in.ethanol.nh: { folder: examples/PACKAGES/drude/ethanol, status: "completed, 5 rel thermo checks failed", walltime: 42.0, walltime_norm: 7.0 } +in.ethanol.tgnh: { folder: examples/PACKAGES/drude/ethanol, status: "completed, 5 rel thermo checks failed", walltime: 44.0, walltime_norm: 7.333333333333333 } +in.force: { folder: examples/PACKAGES/tally, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.pe: { folder: examples/PACKAGES/tally, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.stress: { folder: examples/PACKAGES/tally, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.system: { folder: examples/PACKAGES/momb, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.momentum: { folder: examples/PACKAGES/momentum, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 41.0, walltime_norm: 6.833333333333333 } +in.alpha: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.alpha_relaxation: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.beta: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.energy_conservation.meam.sw: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fcc: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.hexagonal: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.omega: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.single_atom: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.bcc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.bcc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.dc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.dc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.energy_conservation.meam.sw: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.fcc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fcc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.hcp_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.sc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.sc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.single_atom: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.film_mesocnt: { folder: examples/PACKAGES/mesont, status: "failed, no Total wall time in the output.", walltime: -1 } +in.cauchystat: { folder: examples/PACKAGES/cauchy, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.rubber_strip_pull: { folder: examples/PACKAGES/machdyn/rubber_strip_pull, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.aluminum_strip_pull: { folder: examples/PACKAGES/machdyn/aluminum_strip_pull, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.funnel_flow: { folder: examples/PACKAGES/machdyn/funnel_flow, status: "completed, thermo checks passed", walltime: 29.0, walltime_norm: 4.833333333333333 } +in.fluid_structure_interaction: { folder: examples/PACKAGES/machdyn/fluid_structure_interaction, status: "completed, thermo checks passed", walltime: 32.0, walltime_norm: 5.333333333333333 } +in.rubber_rings_3d: { folder: examples/PACKAGES/machdyn/rubber_rings_3d, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } +in.h2o-quantum: { folder: examples/PACKAGES/gle, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.h2o-smart: { folder: examples/PACKAGES/gle, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.pafi: { folder: examples/PACKAGES/pafi, status: "failed, no Total wall time in the output.", walltime: -1 } +in.scp: { folder: examples/PACKAGES/pimd/prot-hairpin, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 15.0, walltime_norm: 2.5 } +in.scp: { folder: examples/PACKAGES/pimd/para-h2, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } +in.lmp: { folder: examples/PACKAGES/pimd/langevin_reduced_units, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.langevin.metal: { folder: examples/PACKAGES/pimd/langevin_metal_units, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.pimd-langevin.metal: { folder: examples/PACKAGES/pimd/langevin_metal_units, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.rann: { folder: examples/PACKAGES/rann, status: "failed, no Total wall time in the output.", walltime: -1 } +in.msd.2d: { folder: examples/DIFFUSE, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 36.0, walltime_norm: 6.0 } +in.vacf.2d: { folder: examples/DIFFUSE, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 38.0, walltime_norm: 6.333333333333333 } +in.numdiff: { folder: examples/numdiff, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.bpm.pour: { folder: examples/bpm/pour, status: "failed, no Total wall time in the output.", walltime: -1 } +in.bpm.impact.rotational: { folder: examples/bpm/impact, status: "failed, no Total wall time in the output.", walltime: -1 } +in.bpm.impact.spring: { folder: examples/bpm/impact, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 12.0, walltime_norm: 2.0 } +in.rheo.balloon: { folder: examples/rheo/balloon, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rheo.oxidation: { folder: examples/rheo/oxidation, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rheo.taylor.green: { folder: examples/rheo/taylor-green, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rheo.ice.cubes: { folder: examples/rheo/ice-cubes, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rheo.poiseuille: { folder: examples/rheo/poiseuille, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 29.0, walltime_norm: 4.833333333333333 } +in.rheo.dam.break: { folder: examples/rheo/dam-break, status: "failed, no Total wall time in the output.", walltime: -1 } +in.peptide: { folder: examples/peptide, status: "completed, error parsing log.lammps into YAML", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.coreshell: { folder: examples/coreshell, status: "completed, 9 rel thermo checks failed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.coreshell.dsf: { folder: examples/coreshell, status: "completed, 8 rel thermo checks failed", walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.coreshell.thermostats: { folder: examples/coreshell, status: "completed, 14 rel thermo checks failed", walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.coreshell.wolf: { folder: examples/coreshell, status: "completed, 5 rel thermo checks failed", walltime: 22.0, walltime_norm: 3.6666666666666665 } +in.marble_race: { folder: examples/mesh, status: "failed, no Total wall time in the output.", walltime: -1 } +in.mesh_box: { folder: examples/mesh, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.abcfire: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.abcfire_mod: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.cg: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fire: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fire_mod: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.meam.abcfire: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 44.0, walltime_norm: 7.333333333333333 } +in.meam.fire: { folder: examples/fire, status: "failed, no Total wall time in the output.", walltime: -1 } +in.neb.sivac.abcfire: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.sivac.abcfire_mod: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.sivac.fire: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.sivac.fire_mod: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.sivac.qm: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.bcc.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.bcc.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.data.general: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fcc.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fcc.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.hex.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.hex.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.sq2.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.sq2.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.tri.srd: { folder: examples/ASPHERE/tri, status: "failed, no Total wall time in the output.", walltime: -1 } +in.star: { folder: examples/ASPHERE/star, status: "completed, 3 rel thermo checks failed", walltime: 12.0, walltime_norm: 2.0 } +in.star.mp: { folder: examples/ASPHERE/star, status: "completed, 3 rel thermo checks failed", walltime: 12.0, walltime_norm: 2.0 } +in.box: { folder: examples/ASPHERE/box, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } +in.box.mp: { folder: examples/ASPHERE/box, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } +in.dimer: { folder: examples/ASPHERE/dimer, status: "completed, 3 rel thermo checks failed", walltime: 6.0, walltime_norm: 1.0 } +in.dimer.mp: { folder: examples/ASPHERE/dimer, status: "completed, 3 rel thermo checks failed", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.vesicle: { folder: examples/ASPHERE/vesicle, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.line: { folder: examples/ASPHERE/line, status: "failed, no Total wall time in the output.", walltime: -1 } +in.line.srd: { folder: examples/ASPHERE/line, status: "failed, no Total wall time in the output.", walltime: -1 } +in.poly: { folder: examples/ASPHERE/poly, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.poly.mp: { folder: examples/ASPHERE/poly, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.flat_membrane: { folder: examples/ASPHERE/flat_membrane, status: "completed, 2 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.ellipsoid: { folder: examples/ASPHERE/ellipsoid, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.ellipsoid.mp: { folder: examples/ASPHERE/ellipsoid, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.ubiquitin: { folder: examples/amoeba, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.water_box.amoeba: { folder: examples/amoeba, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.water_box.hippo: { folder: examples/amoeba, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.water_dimer.amoeba: { folder: examples/amoeba, status: "completed, 1 abs thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.water_dimer.hippo: { folder: examples/amoeba, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.water_hexamer.amoeba: { folder: examples/amoeba, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.water_hexamer.hippo: { folder: examples/amoeba, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.nb3b: { folder: examples/nb3b, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.nb3b.screened: { folder: examples/nb3b, status: "completed, thermo checks passed", walltime: 30.0, walltime_norm: 5.0 } +in.min: { folder: examples/min, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.min.box: { folder: examples/min, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.balance: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.balance.bond.fast: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.balance.bond.slow: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.balance.clock.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.balance.clock.static: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } +in.balance.group.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.balance.group.static: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.balance.kspace: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } +in.balance.neigh.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.balance.neigh.rcb: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.balance.neigh.static: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.balance.var.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.ch4: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.ch4.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.graphene: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.graphene.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.series: { folder: examples/QUANTUM/LATTE, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi connect (src/input.cpp:314)", walltime: -1 } +in.series.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.sucrose: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.sucrose.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.uo2: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.uo2.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.min: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.min.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.plugin: { folder: examples/QUANTUM/LATTE, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.mixture.mm: { folder: examples/QUANTUM/PySCF, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.mixture.qmmm: { folder: examples/QUANTUM/PySCF, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.mixture.qmmm.plugin: { folder: examples/QUANTUM/PySCF, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.qmmm: { folder: examples/QUANTUM/PySCF, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.qmmm.plugin: { folder: examples/QUANTUM/PySCF, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.series: { folder: examples/QUANTUM/NWChem, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi connect (src/input.cpp:314)", walltime: -1 } +in.series.plugin: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.mm: { folder: examples/QUANTUM/NWChem, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.water.qmmm: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.water.qmmm.plugin: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.zeolite.mm: { folder: examples/QUANTUM/NWChem, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.zeolite.qmmm: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.zeolite.qmmm.plugin: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } +in.wall.ccl: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.wall.diffusive: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.wall.flow: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.wall.lepton: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.wall.maxwell: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.wall.specular: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.wall.table: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.meam: { folder: examples/meam, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.meam.shear: { folder: examples/meam, status: "completed, 3 rel thermo checks failed", walltime: 31.0, walltime_norm: 5.166666666666667 } +in.msmeam: { folder: examples/meam/msmeam, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.hugoniostat: { folder: examples/hugoniostat, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.comb.Cu: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.comb.Cu2O.elastic: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } +in.comb.HfO2: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.comb.Si: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.comb.Si.elastic: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.comb3: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.tad: { folder: examples/tad, status: "failed, ERROR: Cannot use TAD with a single replica for NEB (src/REPLICA/tad.cpp:79).", walltime: -1 } +in.controller.temp: { folder: examples/controller, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.controller.wall: { folder: examples/controller, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.reaxff.rdx: { folder: examples/reaxff, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.reaxff.rdx-shielded: { folder: examples/reaxff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.reaxff.tatb: { folder: examples/reaxff, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.reaxff.tatb-shielded: { folder: examples/reaxff, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.ci-reax.CH: { folder: examples/reaxff/ci-reaxFF, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.reaxff.hns: { folder: examples/reaxff/HNS, status: "completed, thermo checks passed", walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.VOH: { folder: examples/reaxff/VOH, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.water.acks2: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.water.acks2.field: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.water.qeq: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } +in.water.qeq.field: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.ZnOH2: { folder: examples/reaxff/ZnOH2, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.FC: { folder: examples/reaxff/FC, status: "completed, thermo checks passed", walltime: 15.0, walltime_norm: 2.5 } +in.RDX: { folder: examples/reaxff/RDX, status: "completed, 3 rel thermo checks failed", walltime: 6.0, walltime_norm: 1.0 } +in.AuO: { folder: examples/reaxff/AuO, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.CHO: { folder: examples/reaxff/CHO, status: "completed, 2 rel thermo checks failed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.FeOH3: { folder: examples/reaxff/FeOH3, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.AB: { folder: examples/reaxff/AB, status: "completed, 3 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.grid.2d: { folder: examples/grid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.grid.3d: { folder: examples/grid, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.sph: { folder: examples/grid, status: "completed, thermo checks passed", walltime: 36.0, walltime_norm: 6.0 } +in.yaml: { folder: examples/yaml, status: "completed, error parsing log.lammps into YAML", walltime: 3.0, walltime_norm: 0.5 } +in.hBN_shift: { folder: examples/tersoff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.tersoff: { folder: examples/tersoff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.friction: { folder: examples/friction, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.cmap: { folder: examples/cmap, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.dipole: { folder: examples/dipole, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.colloid: { folder: examples/colloid, status: "completed, 3 rel thermo checks failed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.streitz.ewald: { folder: examples/streitz, status: "completed, 2 rel thermo checks failed", walltime: 54.0, walltime_norm: 9.0 } +in.streitz.wolf: { folder: examples/streitz, status: "failed, mismatched columns in the log files", walltime: 57.0, walltime_norm: 9.5 } +in.neb.hop1: { folder: examples/neb, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.hop1.end: { folder: examples/neb, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.hop2: { folder: examples/neb, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.neb.sivac: { folder: examples/neb, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } +in.fix_python_invoke: { folder: examples/python, status: "failed, ERROR: Could not process Python string: .", walltime: -1 } +in.fix_python_invoke_neighlist: { folder: examples/python, status: "failed, ERROR: Could not process Python string: .", walltime: -1 } +in.fix_python_move_nve_melt: { folder: examples/python, status: "failed, ERROR: Loading python integrator module failure (src/PYTHON/fix_python_move.cpp:64).", walltime: -1 } +in.fix_python_move_nve_melt_opt: { folder: examples/python, status: "failed, ERROR: Loading python integrator module failure (src/PYTHON/fix_python_move.cpp:64).", walltime: -1 } +in.pair_python_coulomb: { folder: examples/python, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.pair_python_harmonic: { folder: examples/python, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } +in.pair_python_hybrid: { folder: examples/python, status: "completed, 3 rel thermo checks failed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.pair_python_long: { folder: examples/python, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.pair_python_melt: { folder: examples/python, status: "completed, 3 rel thermo checks failed", walltime: 28.0, walltime_norm: 4.666666666666667 } +in.pair_python_spce: { folder: examples/python, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.pair_python_table: { folder: examples/python, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.python: { folder: examples/python, status: "failed, ERROR on proc 0: Python evaluation of function loop failed (src/PYTHON/python_impl.cpp:384).", walltime: -1 } +in.bcc: { folder: examples/steinhardt, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.fcc: { folder: examples/steinhardt, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.icos: { folder: examples/steinhardt, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.kim-ex.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init LennardJones_Ar real (src/input.cpp:314)", walltime: -1 } +in.kim-pm-property: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init LJ_Shifted_Bernardes_1958MedCutoff_Ar__MO_126566794224_004 metal (src/input.cpp:314)", walltime: -1 } +in.kim-pm-query.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init SW_StillingerWeber_1985_Si__MO_405512056662_005 real (src/input.cpp:314)", walltime: -1 } +in.kim-pm.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init SW_StillingerWeber_1985_Si__MO_405512056662_005 real (src/input.cpp:314)", walltime: -1 } +in.kim-query: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal (src/input.cpp:314)", walltime: -1 } +in.kim-sm.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real (src/input.cpp:314)", walltime: -1 } +in.lammps.melt: { folder: examples/kim, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.ellipse.gayberne: { folder: examples/ellipse, status: "completed, 2 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.ellipse.resquared: { folder: examples/ellipse, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.cos.1000SPCE: { folder: examples/VISCOSITY, status: "completed, 3 rel thermo checks failed", walltime: 36.0, walltime_norm: 6.0 } +in.einstein.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 38.0, walltime_norm: 6.333333333333333 } +in.gk.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 38.0, walltime_norm: 6.333333333333333 } +in.mp.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.nemd.2d: { folder: examples/VISCOSITY, status: "completed, 8 rel thermo checks failed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.wall.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.gcmc.co2: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.gcmc.h2o: { folder: examples/mc, status: "failed, no Total wall time in the output.", walltime: -1 } +in.gcmc.lj: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 18.0, walltime_norm: 3.0 } +in.mixed: { folder: examples/mc, status: "failed, no Total wall time in the output.", walltime: -1 } +in.pure: { folder: examples/mc, status: "failed, no Total wall time in the output.", walltime: -1 } +in.sgcmc.eam: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 46.0, walltime_norm: 7.666666666666667 } +in.widom.lj: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.widom.spce: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } +in.mc: { folder: examples/MC-LOOP, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.flow.couette: { folder: examples/flow, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.flow.pois: { folder: examples/flow, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.prd: { folder: examples/prd, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } +in.C_SNAP: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 34.0, walltime_norm: 5.666666666666667 } +in.grid.snap: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.grid.tri: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.snap.InP.JCPA2020: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 15.0, walltime_norm: 2.5 } +in.snap.Mo_Chen: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.snap.Ta06A: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.snap.W.2940: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.snap.WBe.PRB2019: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.snap.compute: { folder: examples/snap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.snap.compute.quadratic: { folder: examples/snap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.snap.hybrid.WSNAP.HePair: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.snap.scale.Ni_Zuo_JCPA2020: { folder: examples/snap, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } +in.lammps: { folder: examples/COUPLE/lammps_spparks, status: "failed, ERROR: Cannot open file data.lammps: No such file or directory (src/read_data.cpp:367).", walltime: -1 } +in.spparks: { folder: examples/COUPLE/lammps_spparks, status: "failed, unknown command, package not installed, ERROR: Unknown command: seed 56789 (src/input.cpp:314)", walltime: -1 } +in.lj: { folder: examples/COUPLE/plugin, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.fix_external: { folder: examples/COUPLE/python, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } +in.chain: { folder: examples/COUPLE/multiple, status: "failed, no Total wall time in the output.", walltime: -1 } +in.lj: { folder: examples/COUPLE/simple, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.body: { folder: examples/body, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.cubes: { folder: examples/body, status: "completed, 2 rel thermo checks failed", walltime: 36.0, walltime_norm: 6.0 } +in.pour3d: { folder: examples/body, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.squares: { folder: examples/body, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } +in.wall2d: { folder: examples/body, status: "completed, 3 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.atm: { folder: examples/atm, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.ar.lj: { folder: examples/UNITS, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.ar.metal: { folder: examples/UNITS, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.ar.real: { folder: examples/UNITS, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.mos2-bulk: { folder: examples/threebody, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.mos2.rebomos: { folder: examples/threebody, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } +in.mos2.sw.mod: { folder: examples/threebody, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.threebody: { folder: examples/threebody, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.nemd: { folder: examples/nemd, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } +in.obstacle: { folder: examples/obstacle, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.crack: { folder: examples/crack, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.elastic: { folder: examples/ELASTIC, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } +in.peri-pmb: { folder: examples/peri, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 9.0, walltime_norm: 1.5 } +in.peri.eps: { folder: examples/peri, status: "completed, 3 rel thermo checks failed", walltime: 21.0, walltime_norm: 3.5 } +in.peri.lps: { folder: examples/peri, status: "completed, 3 rel thermo checks failed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.peri.pmb: { folder: examples/peri, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } +in.peri.ves: { folder: examples/peri, status: "completed, 3 rel thermo checks failed", walltime: 21.0, walltime_norm: 3.5 } +in.hyper.global: { folder: examples/hyper, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 53.0, walltime_norm: 8.833333333333334 } +in.hyper.local: { folder: examples/hyper, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.spce: { folder: examples/rdf-adf, status: "failed, no Total wall time in the output.", walltime: -1 } +in.elastic: { folder: examples/ELASTIC_T/BORN_MATRIX/Silicon, status: "failed, no Total wall time in the output.", walltime: -1 } +in.ljcov: { folder: examples/ELASTIC_T/BORN_MATRIX/Argon/Analytical, status: "failed, no Total wall time in the output.", walltime: -1 } +in.ljcov: { folder: examples/ELASTIC_T/BORN_MATRIX/Argon/Numdiff, status: "failed, no Total wall time in the output.", walltime: -1 } +in.elastic: { folder: examples/ELASTIC_T/DEFORMATION/Silicon, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 9.0, walltime_norm: 1.5 } From 57353566d666265c8ce507f62df08e556c3ab423 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 7 Sep 2024 00:35:57 -0400 Subject: [PATCH 81/93] one more fix (it is getting late...) --- tools/regression-tests/run_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index ea3d43e254..ee56a75682 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1167,7 +1167,7 @@ if __name__ == "__main__": print(msg) logger.info(msg) - quit() + # divide the list of input scripts into num_workers chunks sublists = divide_into_N(input_list, num_workers) From 6b68656a743035dbf333583e2df3bdb599162468 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 7 Sep 2024 09:06:22 -0500 Subject: [PATCH 82/93] fix a typo --- doc/src/Tools.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index 9f9f63f46a..ba7cb2035a 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -1022,7 +1022,7 @@ regression tests with a given LAMMPS binary. The tool launches the LAMMPS binary with any given input script under one of the `examples` subdirectories, and compares the thermo output in the generated log file with those in the provided log file with the same number of processors -ub the same subdirectory. If the differences between the actual and +in the same subdirectory. If the differences between the actual and reference values are within specified tolerances, the test is considered passed. For each test batch, that is, a set of example input scripts, the mpirun command, the LAMMPS command line arguments, and the From 397ca4bd25f300bb12e84a4dc65261d5e2b100fd Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sat, 7 Sep 2024 09:10:25 -0500 Subject: [PATCH 83/93] correct the file names in examples phonon that are actually not LAMMPS input --- tools/regression-tests/config.yaml | 4 ++-- tools/regression-tests/config_quick.yaml | 4 ++-- tools/regression-tests/config_serial.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/regression-tests/config.yaml b/tools/regression-tests/config.yaml index 6b793d0ce8..dd7ffe0b03 100644 --- a/tools/regression-tests/config.yaml +++ b/tools/regression-tests/config.yaml @@ -30,8 +30,8 @@ rel: 1e-4 skip: [ - in.displ, - in.displ2, + in.disp, + in.disp2, in.dos, in.*_imd*, in.bucky-plus-cnt*, diff --git a/tools/regression-tests/config_quick.yaml b/tools/regression-tests/config_quick.yaml index 3c8cc4e51b..bc6e19b730 100644 --- a/tools/regression-tests/config_quick.yaml +++ b/tools/regression-tests/config_quick.yaml @@ -30,8 +30,8 @@ rel: 1e-4 skip: [ - in.displ, - in.displ2, + in.disp, + in.disp2, in.dos, in.*_imd*, in.bucky-plus-cnt*, diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index b55cc1547d..705fb7ec9b 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -30,8 +30,8 @@ rel: 1e-4 skip: [ - in.displ, - in.displ2, + in.disp, + in.disp2, in.dos, in.*_imd*, in.bucky-plus-cnt*, From 77bf224b3f439eef9e685bff4669fa8e0fbf9d71 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 8 Sep 2024 00:24:33 -0500 Subject: [PATCH 84/93] report if a run is timeout to progress.yaml --- tools/regression-tests/run_tests.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index ee56a75682..cb7c64308f 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -410,7 +410,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(f"\n Output:\n{output}") logger.info(f"\n Error:\n{error}") - msg = f"{input}: {{ folder: {input_folder}, status: \"failed, no Total wall time in the output.\", walltime: {walltime} }}\n" + msg = f"{input}: {{ folder: {input_folder}, status: \"failed, no Total wall time in the output, {error}\", walltime: {walltime} }}\n" progress.write(msg) progress.close() failure.write(msg) @@ -851,7 +851,8 @@ def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): logger.info(msg) print(msg) - return cmd_str, "", "", -1 + error_str = f"timeout ({timeout}s expired)" + return cmd_str, "", error_str, -1 ''' get the reference walltime by running the lmp_binary with config with an input script in the bench/ folder From 4d04d8492d4485bebcedd6eaf8c3016e3ea77533 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 8 Sep 2024 17:09:05 -0500 Subject: [PATCH 85/93] report the number of abs and rel diff checks failed --- tools/regression-tests/run_tests.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index cb7c64308f..68a81ac260 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -639,35 +639,39 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg = f" mismatched log files after the first run. Check both log files for more details." print(msg) logger.info(msg) - result.status = "thermo checks failed" + result.status = "thermo checks failed due to mismatched log files after the first run" + result.status = "" if num_abs_failed > 0: - msg = f" {num_abs_failed} abs diff thermo checks failed." + msg = f" {num_abs_failed} abs diff checks failed." print(msg) logger.info(msg) - result.status = f"{num_abs_failed} abs thermo checks failed" + #result.status = f"abs_diff_failed: {num_abs_failed}, " if verbose == True: for out in failed_abs_output: print(f" - {out}") + if num_rel_failed > 0: - msg = f" {num_rel_failed} rel diff thermo checks failed." + msg = f" {num_rel_failed} rel diff checks failed." print(msg) logger.info(msg) - result.status = f"{num_rel_failed} rel thermo checks failed" + #result.status += f"rel_diff_failed: {num_rel_failed}" if verbose == True: for out in failed_rel_output: print(f" - {out}") + if num_abs_failed == 0 and num_rel_failed == 0: - msg = f" all {num_checks} thermo checks passed." + msg = f" all {num_checks} checks passed." print(msg) logger.info(msg) - result.status = "thermo checks passed" + #result.status = f"all {num_checks} checks passed." num_passed = num_passed + 1 + result.status = f"abs_diff_failed: {num_abs_failed}, rel_diff_failed: {num_rel_failed}" results.append(result) # check if memleak detects from valgrind run (need to replace "mpirun" -> valgrind --leak-check=yes mpirun") - msg = "completed, " + result.status + msg = "completed" if use_valgrind == True: if "All heap blocks were freed" in error: msg += ", no memory leak" @@ -675,12 +679,12 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg += ", memory leaks detected" num_memleak = num_memleak + 1 - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", failed_checks: {{ \"{result.status}\" }}, walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() # write to failure if there is any numerical failed check if num_abs_failed > 0 or num_rel_failed > 0: - failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") + failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", failed_checks: {{ \"{result.status}\" }}, walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") # count the number of completed runs num_completed = num_completed + 1 From 274112834b3c5c492e7aaf31efcb554af2feaeb5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 8 Sep 2024 17:11:02 -0500 Subject: [PATCH 86/93] remove double quotes --- tools/regression-tests/run_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 68a81ac260..5f88f03f64 100644 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -679,12 +679,12 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg += ", memory leaks detected" num_memleak = num_memleak + 1 - progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", failed_checks: {{ \"{result.status}\" }}, walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") + progress.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", failed_checks: {{ {result.status} }}, walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() # write to failure if there is any numerical failed check if num_abs_failed > 0 or num_rel_failed > 0: - failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", failed_checks: {{ \"{result.status}\" }}, walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") + failure.write(f"{input}: {{ folder: {input_folder}, status: \"{msg}\", failed_checks: {{ {result.status} }}, walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") # count the number of completed runs num_completed = num_completed + 1 From c3162b4488a4779764dd54e0cbae138c4ce2125a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 9 Sep 2024 20:29:23 -0400 Subject: [PATCH 87/93] increase timeout for full regression to 180 seconds. use 8 runners. --- .github/workflows/full-regression.yml | 8 ++++++-- tools/regression-tests/config_serial.yaml | 1 + tools/regression-tests/run_tests.py | 0 3 files changed, 7 insertions(+), 2 deletions(-) mode change 100644 => 100755 tools/regression-tests/run_tests.py diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 106bda9d2e..814631154e 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -2,6 +2,10 @@ name: "Full Regression Test" on: + pull_request: + branches: + - develop + push: branches: - develop @@ -17,9 +21,9 @@ jobs: env: CCACHE_DIR: ${{ github.workspace }}/.ccache strategy: - max-parallel: 4 + max-parallel: 8 matrix: - idx: [ 0, 1, 2, 3 ] + idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ] steps: - name: Checkout repository diff --git a/tools/regression-tests/config_serial.yaml b/tools/regression-tests/config_serial.yaml index 705fb7ec9b..c685815ff0 100644 --- a/tools/regression-tests/config_serial.yaml +++ b/tools/regression-tests/config_serial.yaml @@ -37,6 +37,7 @@ in.bucky-plus-cnt*, ] + timeout: 180 nugget: 1.0 epsilon: 1e-16 diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py old mode 100644 new mode 100755 From a4a8f994719630b43055228a04e0c997101d5c9b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 9 Sep 2024 20:50:16 -0400 Subject: [PATCH 88/93] forgot to update the --analyze step to 8 runners --- .github/workflows/full-regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 814631154e..4d173173d0 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -82,7 +82,7 @@ jobs: python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ --config-file=tools/regression-tests/config_serial.yaml \ - --examples-top-level=examples --analyze --num-workers=4 + --examples-top-level=examples --analyze --num-workers=8 python3 tools/regression-tests/run_tests.py \ --lmp-bin=build/lmp \ From a6b9c170108363f90aeb22fa4834b88cc22a7df2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 9 Sep 2024 22:30:09 -0400 Subject: [PATCH 89/93] update reference.yaml --- .github/workflows/full-regression.yml | 4 - tools/regression-tests/reference.yaml | 1103 ++++++++++++++----------- 2 files changed, 613 insertions(+), 494 deletions(-) diff --git a/.github/workflows/full-regression.yml b/.github/workflows/full-regression.yml index 4d173173d0..73e1803bb6 100644 --- a/.github/workflows/full-regression.yml +++ b/.github/workflows/full-regression.yml @@ -2,10 +2,6 @@ name: "Full Regression Test" on: - pull_request: - branches: - - develop - push: branches: - develop diff --git a/tools/regression-tests/reference.yaml b/tools/regression-tests/reference.yaml index 2daf17cf13..c18883f375 100644 --- a/tools/regression-tests/reference.yaml +++ b/tools/regression-tests/reference.yaml @@ -1,141 +1,192 @@ -in.granregion.box: { folder: examples/granregion, status: "completed, 8 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.granregion.funnel: { folder: examples/granregion, status: "failed, no Total wall time in the output.", walltime: -1 } -in.granregion.mixer: { folder: examples/granregion, status: "failed, no Total wall time in the output.", walltime: -1 } -in.melt: { folder: examples/melt, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.airebo: { folder: examples/airebo, status: "failed, no Total wall time in the output.", walltime: -1 } -in.airebo-0-0: { folder: examples/airebo, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.airebo-m: { folder: examples/airebo, status: "failed, no Total wall time in the output.", walltime: -1 } -in.rebo2: { folder: examples/airebo, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.hybrid: { folder: examples/template, status: "completed, 3 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } -in.mol-data-mix: { folder: examples/template, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } -in.mol-restart-mix: { folder: examples/template, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } -in.molecular-mix: { folder: examples/template, status: "completed, 5 rel thermo checks failed", walltime: 26.0, walltime_norm: 4.333333333333333 } -in.template-mix: { folder: examples/template, status: "completed, 5 rel thermo checks failed", walltime: 26.0, walltime_norm: 4.333333333333333 } -in.tmpl-data-mix: { folder: examples/template, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } -in.tmpl-restart-mix: { folder: examples/template, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } +in.granregion.box: { folder: examples/granregion, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 8 }, walltime: 0.0, walltime_norm: 0.0 } +in.granregion.funnel: { folder: examples/granregion, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 106.0, walltime_norm: 17.666666666666668 } +in.granregion.mixer: { folder: examples/granregion, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 84.0, walltime_norm: 14.0 } +in.melt: { folder: examples/melt, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.airebo: { folder: examples/airebo, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 60.0, walltime_norm: 10.0 } +in.airebo-0-0: { folder: examples/airebo, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.airebo-m: { folder: examples/airebo, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 63.0, walltime_norm: 10.5 } +in.rebo2: { folder: examples/airebo, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.hybrid: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.mol-data-mix: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 18.0, walltime_norm: 3.0 } +in.mol-restart-mix: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 45.0, walltime_norm: 7.5 } +in.molecular-mix: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 26.0, walltime_norm: 4.333333333333333 } +in.template-mix: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 26.0, walltime_norm: 4.333333333333333 } +in.tmpl-data-mix: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 18.0, walltime_norm: 3.0 } +in.tmpl-restart-mix: { folder: examples/template, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 45.0, walltime_norm: 7.5 } in.first: { folder: examples/rerun, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } in.rdf.first: { folder: examples/rerun, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } in.rdf.rerun: { folder: examples/rerun, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.read_dump: { folder: examples/rerun, status: "failed, no Total wall time in the output.", walltime: -1 } -in.rerun: { folder: examples/rerun, status: "failed, no Total wall time in the output.", walltime: -1 } -in.lj.ehex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } -in.lj.hex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } -in.spce.ehex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } -in.spce.hex: { folder: examples/HEAT, status: "failed, no Total wall time in the output.", walltime: -1 } -in.vashishta.inp: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.vashishta.sio2: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.vashishta.table.inp: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.vashishta.table.sio2: { folder: examples/vashishta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.atomfile: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.atomvar: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.early: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.read_dump: { folder: examples/rerun, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } +in.rerun: { folder: examples/rerun, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } +in.lj.ehex: { folder: examples/HEAT, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.lj.hex: { folder: examples/HEAT, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.spce.ehex: { folder: examples/HEAT, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.spce.hex: { folder: examples/HEAT, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.vashishta.inp: { folder: examples/vashishta, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.vashishta.sio2: { folder: examples/vashishta, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.vashishta.table.inp: { folder: examples/vashishta, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.vashishta.table.sio2: { folder: examples/vashishta, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.atomfile: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.atomvar: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.early: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } in.rigid.gravity: { folder: examples/rigid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.infile: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.molecule: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.nve: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.nve.early: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.poems: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.rigid.poems2: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.rigid.poems3: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.rigid.poems4: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.rigid.poems5: { folder: examples/rigid, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.rigid.property: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.small: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.small.infile: { folder: examples/rigid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.rigid.tnr: { folder: examples/rigid, status: "completed, 22 rel thermo checks failed", walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.rigid.infile: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.molecule: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.nve: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.nve.early: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.poems: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems2: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems3: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.rigid.poems4: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 3.0, walltime_norm: 0.5 } +in.rigid.poems5: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 3.0, walltime_norm: 0.5 } +in.rigid.property: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.small: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.small.infile: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.rigid.tnr: { folder: examples/rigid, status: "completed", failed_checks: { abs_diff_failed: 18, rel_diff_failed: 22 }, walltime: 21.0, walltime_norm: 3.5 } in.voronoi: { folder: examples/voronoi, status: "completed, but no Step nor Loop in the output.", walltime: 6.0, walltime_norm: 1.0 } in.voronoi.2d: { folder: examples/voronoi, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } in.voronoi.data: { folder: examples/voronoi, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.ehex: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } -in.heat: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } -in.heatflux: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } -in.langevin: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } -in.mp: { folder: examples/KAPPA, status: "failed, no Total wall time in the output.", walltime: -1 } -in.pour: { folder: examples/pour, status: "completed, thermo checks passed", walltime: 42.0, walltime_norm: 7.0 } -in.pour.2d: { folder: examples/pour, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.pour.2d.molecule: { folder: examples/pour, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.deposit.atom: { folder: examples/deposit, status: "completed, 3 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } -in.deposit.molecule: { folder: examples/deposit, status: "completed, 3 rel thermo checks failed", walltime: 8.0, walltime_norm: 1.3333333333333333 } -in.deposit.molecule.rigid-nve-small: { folder: examples/deposit, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.deposit.molecule.rigid-nvt-small: { folder: examples/deposit, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.deposit.molecule.rigid-small: { folder: examples/deposit, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } -in.deposit.molecule.shake: { folder: examples/deposit, status: "completed, 3 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } -in.charmmfsw: { folder: examples/charmmfsw, status: "completed, thermo checks passed", walltime: 27.0, walltime_norm: 4.5 } -in.indent: { folder: examples/indent, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.indent.min: { folder: examples/indent, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.qeq.buck: { folder: examples/qeq, status: "completed, thermo checks passed", walltime: 29.0, walltime_norm: 4.833333333333333 } +in.ehex: { folder: examples/KAPPA, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.heat: { folder: examples/KAPPA, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.heatflux: { folder: examples/KAPPA, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.langevin: { folder: examples/KAPPA, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.mp: { folder: examples/KAPPA, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.pour: { folder: examples/pour, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.pour.2d: { folder: examples/pour, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.pour.2d.molecule: { folder: examples/pour, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.deposit.atom: { folder: examples/deposit, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 3.0, walltime_norm: 0.5 } +in.deposit.molecule: { folder: examples/deposit, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.deposit.molecule.rigid-nve-small: { folder: examples/deposit, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.deposit.molecule.rigid-nvt-small: { folder: examples/deposit, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.deposit.molecule.rigid-small: { folder: examples/deposit, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.deposit.molecule.shake: { folder: examples/deposit, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.charmmfsw: { folder: examples/charmmfsw, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.indent: { folder: examples/indent, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.indent.min: { folder: examples/indent, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.qeq.buck: { folder: examples/qeq, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 21.0, walltime_norm: 3.5 } in.qeq.reaxff: { folder: examples/qeq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.dreiding: { folder: examples/dreiding, status: "completed, error parsing log.lammps into YAML", walltime: 0.0, walltime_norm: 0.0 } -in.22DMH.real: { folder: examples/relres, status: "failed, no Total wall time in the output.", walltime: -1 } -in.22DMH.relres: { folder: examples/relres, status: "failed, incomplete runs", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.22DMH.respa: { folder: examples/relres, status: "completed, thermo checks passed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.22DMH.real: { folder: examples/relres, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 57.0, walltime_norm: 9.5 } +in.22DMH.relres: { folder: examples/relres, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.22DMH.respa: { folder: examples/relres, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } in.track: { folder: examples/tracker, status: "failed, ERROR: Illegal pair_style command (src/MISC/pair_tracker.cpp:221).", walltime: -1 } -in.pour.drum: { folder: examples/granular, status: "completed, thermo checks passed", walltime: 15.0, walltime_norm: 2.5 } -in.pour.flatwall: { folder: examples/granular, status: "completed, thermo checks passed", walltime: 14.0, walltime_norm: 2.3333333333333335 } -in.pour.heat: { folder: examples/granular, status: "failed, no Total wall time in the output.", walltime: -1 } -in.restitution: { folder: examples/granular, status: "completed, thermo checks passed", walltime: 7.0, walltime_norm: 1.1666666666666667 } -in.micelle: { folder: examples/micelle, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.micelle-rigid: { folder: examples/micelle, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.replicate.bond.x: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.replicate.bond.x.noloop: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.replicate.bond.x.y: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.replicate.bond.xy: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.replicate.cnt: { folder: examples/replicate, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } -in.srd.mixture: { folder: examples/srd, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.srd.pure: { folder: examples/srd, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.ttm: { folder: examples/ttm, status: "completed, thermo checks passed", walltime: 17.0, walltime_norm: 2.8333333333333335 } -in.ttm.grid: { folder: examples/ttm, status: "completed, thermo checks passed", walltime: 17.0, walltime_norm: 2.8333333333333335 } -in.ttm.mod: { folder: examples/ttm, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.colloid: { folder: examples/multi, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.granular: { folder: examples/multi, status: "completed, 3 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.powerlaw: { folder: examples/multi, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.msst: { folder: examples/msst, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } -in.gjf.vfull: { folder: examples/gjf, status: "completed, 3 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.gjf.vhalf: { folder: examples/gjf, status: "completed, 3 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.spin.cobalt_fcc: { folder: examples/SPIN/cobalt_fcc, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.spin.nickel: { folder: examples/SPIN/nickel, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.spin.nickel_cubic: { folder: examples/SPIN/nickel, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.spin.cobalt_hcp: { folder: examples/SPIN/cobalt_hcp, status: "completed, 4 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.spin.iron: { folder: examples/SPIN/iron, status: "completed, 4 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.spin.iron_cubic: { folder: examples/SPIN/iron, status: "completed, 2 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.pour.drum: { folder: examples/granular, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.pour.flatwall: { folder: examples/granular, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.pour.heat: { folder: examples/granular, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 83.0, walltime_norm: 13.833333333333334 } +in.restitution: { folder: examples/granular, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.micelle: { folder: examples/micelle, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 1 }, walltime: 0.0, walltime_norm: 0.0 } +in.micelle-rigid: { folder: examples/micelle, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.x: { folder: examples/replicate, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.x.noloop: { folder: examples/replicate, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.x.y: { folder: examples/replicate, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.replicate.bond.xy: { folder: examples/replicate, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.replicate.cnt: { folder: examples/replicate, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.srd.mixture: { folder: examples/srd, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.srd.pure: { folder: examples/srd, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.ttm: { folder: examples/ttm, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.ttm.grid: { folder: examples/ttm, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.ttm.mod: { folder: examples/ttm, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.colloid: { folder: examples/multi, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 0.0, walltime_norm: 0.0 } +in.granular: { folder: examples/multi, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.powerlaw: { folder: examples/multi, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.msst: { folder: examples/msst, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.gjf.vfull: { folder: examples/gjf, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.gjf.vhalf: { folder: examples/gjf, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.spin.cobalt_fcc: { folder: examples/SPIN/cobalt_fcc, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.spin.nickel: { folder: examples/SPIN/nickel, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.spin.nickel_cubic: { folder: examples/SPIN/nickel, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.spin.cobalt_hcp: { folder: examples/SPIN/cobalt_hcp, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 4 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.spin.iron: { folder: examples/SPIN/iron, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 4 }, walltime: 0.0, walltime_norm: 0.0 } +in.spin.iron_cubic: { folder: examples/SPIN/iron, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } in.gneb.skyrmion: { folder: examples/SPIN/gneb/skyrmion, status: "failed, ERROR: Did not assign all atoms correctly (src/read_data.cpp:1562).", walltime: -1 } in.gneb.iron: { folder: examples/SPIN/gneb/iron, status: "failed, ERROR: Cannot use NEBSpin with a single replica (src/SPIN/neb_spin.cpp:133).", walltime: -1 } -in.spin.read_data: { folder: examples/SPIN/read_restart, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spin.read_data: { folder: examples/SPIN/read_restart, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.spin.restart: { folder: examples/SPIN/read_restart, status: "failed, ERROR: Invalid flag in force field section of restart file (src/read_restart.cpp:948).", walltime: -1 } -in.spin.write_restart: { folder: examples/SPIN/read_restart, status: "completed, 2 rel thermo checks failed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.spin.bfo_min: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.spin.bfo_min_cg: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.spin.bfo_min_lbfgs: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.spin.iron_min: { folder: examples/SPIN/spinmin, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.spin.setforce: { folder: examples/SPIN/setforce_spin, status: "failed, no Total wall time in the output.", walltime: -1 } -in.spin.bfo: { folder: examples/SPIN/bfo, status: "completed, 2 rel thermo checks failed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.spin.iron_dipole_cut: { folder: examples/SPIN/dipole_spin, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.spin.iron_dipole_ewald: { folder: examples/SPIN/dipole_spin, status: "completed, 1 abs thermo checks failed", walltime: 30.0, walltime_norm: 5.0 } -in.spin.iron_dipole_pppm: { folder: examples/SPIN/dipole_spin, status: "completed, thermo checks passed", walltime: 17.0, walltime_norm: 2.8333333333333335 } -in.spin.iron-nve: { folder: examples/SPIN/test_problems/validation_nve, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 32.0, walltime_norm: 5.333333333333333 } -in.spin.nvt_lattice: { folder: examples/SPIN/test_problems/validation_nvt, status: "failed, no Total wall time in the output.", walltime: -1 } +in.spin.write_restart: { folder: examples/SPIN/read_restart, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.spin.bfo_min: { folder: examples/SPIN/spinmin, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.spin.bfo_min_cg: { folder: examples/SPIN/spinmin, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.spin.bfo_min_lbfgs: { folder: examples/SPIN/spinmin, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.spin.iron_min: { folder: examples/SPIN/spinmin, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.spin.setforce: { folder: examples/SPIN/setforce_spin, status: "failed, no Total wall time in the output, [fv-az1014-42:16323] *** Process received signal *** +[fv-az1014-42:16323] Signal: Segmentation fault (11) +[fv-az1014-42:16323] Signal code: Address not mapped (1) +[fv-az1014-42:16323] Failing at address: 0x390 +[fv-az1014-42:16323] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x42520)[0x7f09e7842520] +[fv-az1014-42:16323] [ 1] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS11ComputeSpin14compute_vectorEv+0x2d8)[0x5590ad415268] +[fv-az1014-42:16323] [ 2] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS8Variable8evaluateEPcPPNS0_4TreeEi+0x6e7f)[0x5590ad0078ef] +[fv-az1014-42:16323] [ 3] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS8Variable13compute_equalEi+0x22b)[0x5590ad00d2ab] +[fv-az1014-42:16323] [ 4] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS6Thermo16compute_variableEv+0x5b)[0x5590acfbfa6b] +[fv-az1014-42:16323] [ 5] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS6Thermo7computeEi+0x203)[0x5590acfc9dc3] +[fv-az1014-42:16323] [ 6] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS6Output5setupEi+0x64)[0x5590acf57f14] +[fv-az1014-42:16323] [ 7] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS3Min5setupEi+0x57d)[0x5590acee421d] +[fv-az1014-42:16323] [ 8] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS8Minimize7commandEiPPc+0x1d7)[0x5590acee5a67] +[fv-az1014-42:16323] [ 9] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS5Input15execute_commandEv+0xb1d)[0x5590ace91b9d] +[fv-az1014-42:16323] [10] /home/runner/work/lammps/lammps/build/lmp(_ZN9LAMMPS_NS5Input4fileEv+0x19e)[0x5590ace91f5e] +[fv-az1014-42:16323] [11] /home/runner/work/lammps/lammps/build/lmp(main+0x51)[0x5590ace7ed41] +[fv-az1014-42:16323] [12] /lib/x86_64-linux-gnu/libc.so.6(+0x29d90)[0x7f09e7829d90] +[fv-az1014-42:16323] [13] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80)[0x7f09e7829e40] +[fv-az1014-42:16323] [14] /home/runner/work/lammps/lammps/build/lmp(_start+0x25)[0x5590ace834e5] +[fv-az1014-42:16323] *** End of error message *** +Segmentation fault (core dumped) +", walltime: -1 } +in.spin.bfo: { folder: examples/SPIN/bfo, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.spin.iron_dipole_cut: { folder: examples/SPIN/dipole_spin, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.spin.iron_dipole_ewald: { folder: examples/SPIN/dipole_spin, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 0 }, walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.spin.iron_dipole_pppm: { folder: examples/SPIN/dipole_spin, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.spin.iron-nve: { folder: examples/SPIN/test_problems/validation_nve, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.spin.nvt_lattice: { folder: examples/SPIN/test_problems/validation_nvt, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 95.0, walltime_norm: 15.833333333333334 } in.spin.nvt_spin: { folder: examples/SPIN/test_problems/validation_nvt, status: "failed, ERROR: Fix langevin period must be > 0.0 (src/fix_langevin.cpp:80).", walltime: -1 } in.mliap.ace.compute: { folder: examples/mliap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.mliap.nn.Cu: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.mliap.nn.Ta06A: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.mliap.nn.Cu: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.mliap.nn.Ta06A: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } in.mliap.pytorch.Ta06A: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } in.mliap.pytorch.ace: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } in.mliap.pytorch.ace.NN: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } in.mliap.pytorch.relu1hidden: { folder: examples/mliap, status: "failed, ERROR: Using pair_style mliap model mliappy requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:173).", walltime: -1 } -in.mliap.quadratic.compute: { folder: examples/mliap, status: "failed, no Total wall time in the output.", walltime: -1 } -in.mliap.snap.Ta06A: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.mliap.snap.WBe.PRB2019: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.mliap.snap.chem: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 26.0, walltime_norm: 4.333333333333333 } -in.mliap.snap.compute: { folder: examples/mliap, status: "failed, no Total wall time in the output.", walltime: -1 } -in.mliap.snap.quadratic: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.mliap.quadratic.compute: { folder: examples/mliap, status: "failed, no Total wall time in the output, munmap_chunk(): invalid pointer +[fv-az1014-42:16535] *** Process received signal *** +[fv-az1014-42:16535] Signal: Aborted (6) +[fv-az1014-42:16535] Signal code: (-6) +corrupted double-linked list +Aborted (core dumped) +", walltime: -1 } +in.mliap.snap.Ta06A: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.mliap.snap.WBe.PRB2019: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.mliap.snap.chem: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 15.0, walltime_norm: 2.5 } +in.mliap.snap.compute: { folder: examples/mliap, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.mliap.snap.quadratic: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } in.mliap.so3.Ni_Mo: { folder: examples/mliap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.mliap.so3.nn.Si: { folder: examples/mliap, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.mliap.so3.nn.Si: { folder: examples/mliap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 3.0, walltime_norm: 0.5 } in.mliap.unified.lj.Ar: { folder: examples/mliap, status: "failed, ERROR: Could not process Python string: .", walltime: -1 } in.run: { folder: examples/mliap/jax, status: "failed, ERROR: Using pair_style mliap unified requires ML-IAP with python support (src/ML-IAP/pair_mliap.cpp:213).", walltime: -1 } -in.eim: { folder: examples/eim, status: "completed, 2 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.shear: { folder: examples/shear, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.shear.void: { folder: examples/shear, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.eim: { folder: examples/eim, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 3.0, walltime_norm: 0.5 } +in.shear: { folder: examples/shear, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.shear.void: { folder: examples/shear, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 3.0, walltime_norm: 0.5 } in.aimd.alone: { folder: examples/mdi, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.aimd.driver: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.aimd.driver.plugin: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } @@ -151,117 +202,117 @@ in.snapshot.alone: { folder: examples/mdi, status: "completed, numerical checks in.snapshot.driver: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.snapshot.driver.plugin: { folder: examples/mdi, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.snapshot.engine: { folder: examples/mdi, status: "failed, unknown command, package not installed, ERROR: Unknown command: mdi engine (src/input.cpp:314)", walltime: -1 } -in.lammps: { folder: examples/PACKAGES/dpd-smooth/2d-diffusion, status: "failed, no Total wall time in the output.", walltime: -1 } -in.lammps: { folder: examples/PACKAGES/dpd-smooth/2d-diffusion-in-shear-flow, status: "failed, no Total wall time in the output.", walltime: -1 } -in.lammps: { folder: examples/PACKAGES/dpd-smooth/equipartition-verification, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 49.0, walltime_norm: 8.166666666666666 } +in.lammps: { folder: examples/PACKAGES/dpd-smooth/2d-diffusion, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 57.0, walltime_norm: 9.5 } +in.lammps: { folder: examples/PACKAGES/dpd-smooth/2d-diffusion-in-shear-flow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 102.0, walltime_norm: 17.0 } +in.lammps: { folder: examples/PACKAGES/dpd-smooth/equipartition-verification, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 41.0, walltime_norm: 6.833333333333333 } in.fitpod: { folder: examples/PACKAGES/pod/InP, status: "failed, ERROR: Cannot fit potential without data files. The data paths may not be valid. Please check the data paths in the POD data file. (src/ML-POD/fitpod_command.cpp:718).", walltime: -1 } -in.pod: { folder: examples/PACKAGES/pod/InP, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.pod: { folder: examples/PACKAGES/pod/InP, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.fitpod: { folder: examples/PACKAGES/pod/Ta, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.pod: { folder: examples/PACKAGES/pod/Ta, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.pod: { folder: examples/PACKAGES/pod/Ta, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } in.pod.compute: { folder: examples/PACKAGES/pod/Ta, status: "failed, ERROR: Per-atom data too large (src/ML-POD/compute_podd_atom.cpp:62).", walltime: -1 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxRNA2/duplex2, status: "completed, 1 rel thermo checks failed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxRNA2/potential_file, status: "completed, 1 rel thermo checks failed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/duplex2, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/duplex1, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/potential_file, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex2, status: "completed, thermo checks passed", walltime: 24.0, walltime_norm: 4.0 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex1, status: "completed, thermo checks passed", walltime: 12.0, walltime_norm: 2.0 } -in.dsring: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/dsring, status: "completed, thermo checks passed", walltime: 46.0, walltime_norm: 7.666666666666667 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/potential_file, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.duplex4.4type: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } -in.duplex4.8type: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } -in.duplex3: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex3, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxRNA2/duplex2, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxRNA2/potential_file, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/duplex2, status: "completed, thermo checks passed", walltime: 22.0, walltime_norm: 3.6666666666666665 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/duplex1, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/potential_file, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex2, status: "completed, thermo checks passed", walltime: 24.0, walltime_norm: 4.0 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex1, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.dsring: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/dsring, status: "completed, thermo checks passed", walltime: 46.0, walltime_norm: 7.666666666666667 } -in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/potential_file, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.duplex4.4type: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } -in.duplex4.8type: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/unique_bp, status: "completed, thermo checks passed", walltime: 50.0, walltime_norm: 8.333333333333334 } -in.duplex3: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex3, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxRNA2/duplex2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 1 }, walltime: 22.0, walltime_norm: 3.6666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxRNA2/potential_file, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 1 }, walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/duplex2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 21.0, walltime_norm: 3.5 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/duplex1, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA/potential_file, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 24.0, walltime_norm: 4.0 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex1, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.dsring: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/dsring, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 46.0, walltime_norm: 7.666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/potential_file, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex4.4type: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/unique_bp, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 51.0, walltime_norm: 8.5 } +in.duplex4.8type: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/unique_bp, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex3: { folder: examples/PACKAGES/cgdna/examples/real_units/oxDNA2/duplex3, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxRNA2/duplex2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxRNA2/potential_file, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/duplex2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 22.0, walltime_norm: 3.6666666666666665 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/duplex1, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA/potential_file, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.duplex2: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 25.0, walltime_norm: 4.166666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex1, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.dsring: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/dsring, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 46.0, walltime_norm: 7.666666666666667 } +in.duplex1: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/potential_file, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.duplex4.4type: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/unique_bp, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex4.8type: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/unique_bp, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 50.0, walltime_norm: 8.333333333333334 } +in.duplex3: { folder: examples/PACKAGES/cgdna/examples/lj_units/oxDNA2/duplex3, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } in.temper_npt: { folder: examples/PACKAGES/temper_npt, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } in.peptide-plumed: { folder: examples/PACKAGES/plumed, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'plumed' is part of the PLUMED package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } -in.methanol: { folder: examples/PACKAGES/bocs, status: "completed, 4 rel thermo checks failed", walltime: 23.0, walltime_norm: 3.8333333333333335 } -in.pedone.melt: { folder: examples/PACKAGES/pedone, status: "completed, 2 rel thermo checks failed", walltime: 13.0, walltime_norm: 2.1666666666666665 } -in.pedone.relax: { folder: examples/PACKAGES/pedone, status: "completed, 2 rel thermo checks failed", walltime: 16.0, walltime_norm: 2.6666666666666665 } -in.methanol_implicit_water: { folder: examples/PACKAGES/local_density/methanol_implicit_water, status: "failed, no Total wall time in the output.", walltime: -1 } -in.benzene_water: { folder: examples/PACKAGES/local_density/benzene_water, status: "completed, but no Step nor Loop in the output.", walltime: 24.0, walltime_norm: 4.0 } +in.methanol: { folder: examples/PACKAGES/bocs, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 4 }, walltime: 23.0, walltime_norm: 3.8333333333333335 } +in.pedone.melt: { folder: examples/PACKAGES/pedone, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 2 }, walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.pedone.relax: { folder: examples/PACKAGES/pedone, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 15.0, walltime_norm: 2.5 } +in.methanol_implicit_water: { folder: examples/PACKAGES/local_density/methanol_implicit_water, status: "completed, but no Step nor Loop in the output.", walltime: 62.0, walltime_norm: 10.333333333333334 } +in.benzene_water: { folder: examples/PACKAGES/local_density/benzene_water, status: "completed, but no Step nor Loop in the output.", walltime: 25.0, walltime_norm: 4.166666666666667 } in.gauss-diel: { folder: examples/PACKAGES/gauss_diel, status: "completed, error parsing log.lammps into YAML", walltime: 8.0, walltime_norm: 1.3333333333333333 } in.gauss-diel-cg: { folder: examples/PACKAGES/gauss_diel, status: "completed, error parsing log.lammps into YAML", walltime: 3.0, walltime_norm: 0.5 } in.gauss-diel-split: { folder: examples/PACKAGES/gauss_diel, status: "completed, error parsing log.lammps into YAML", walltime: 3.0, walltime_norm: 0.5 } in.alloy: { folder: examples/PACKAGES/alchemy, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } in.twowater: { folder: examples/PACKAGES/alchemy, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } -in.sds-hybrid: { folder: examples/PACKAGES/cgspica/sds-monolayer, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.sds-regular: { folder: examples/PACKAGES/cgspica/sds-monolayer, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.pegc12e8: { folder: examples/PACKAGES/cgspica/peg-verlet, status: "failed, no Total wall time in the output.", walltime: -1 } -in.pegc12e8-angle: { folder: examples/PACKAGES/cgspica/peg-verlet, status: "failed, no Total wall time in the output.", walltime: -1 } -in.hkust1: { folder: examples/PACKAGES/mofff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.hkust1_long: { folder: examples/PACKAGES/mofff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.e3b-tip4p2005: { folder: examples/PACKAGES/e3b, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.sds-hybrid: { folder: examples/PACKAGES/cgspica/sds-monolayer, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.sds-regular: { folder: examples/PACKAGES/cgspica/sds-monolayer, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.pegc12e8: { folder: examples/PACKAGES/cgspica/peg-verlet, status: "completed, error parsing log.lammps into YAML", walltime: 69.0, walltime_norm: 11.5 } +in.pegc12e8-angle: { folder: examples/PACKAGES/cgspica/peg-verlet, status: "completed, error parsing log.lammps into YAML", walltime: 69.0, walltime_norm: 11.5 } +in.hkust1: { folder: examples/PACKAGES/mofff, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.hkust1_long: { folder: examples/PACKAGES/mofff, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.e3b-tip4p2005: { folder: examples/PACKAGES/e3b, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.uf3.Nb: { folder: examples/PACKAGES/uf3, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.fep01.lmp: { folder: examples/PACKAGES/fep/CC-CO/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fep10.lmp: { folder: examples/PACKAGES/fep/CC-CO/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } -in.insertion: { folder: examples/PACKAGES/fep/C7inEthanol/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } -in.deletion: { folder: examples/PACKAGES/fep/C7inEthanol/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fep01.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fep10.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } -in.bar10.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/bar10, status: "failed, no Total wall time in the output.", walltime: -1 } -in.bar01.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/bar01, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fep01.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fep01, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fdti01.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fdti01, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fep10.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fep10, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fdti10.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fdti10, status: "failed, no Total wall time in the output.", walltime: -1 } -in.spce.lmp: { folder: examples/PACKAGES/fep/ta, status: "failed, no Total wall time in the output.", walltime: -1 } +in.fep01.lmp: { folder: examples/PACKAGES/fep/CC-CO/fep01, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fep10.lmp: { folder: examples/PACKAGES/fep/CC-CO/fep10, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.insertion: { folder: examples/PACKAGES/fep/C7inEthanol/fep01, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.deletion: { folder: examples/PACKAGES/fep/C7inEthanol/fep10, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fep01.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/fep01, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fep10.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/fep10, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.bar10.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/bar10, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.bar01.lmp: { folder: examples/PACKAGES/fep/CH4-CF4/bar01, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fep01.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fep01, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fdti01.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fdti01, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fep10.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fep10, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.fdti10.lmp: { folder: examples/PACKAGES/fep/CH4hyd/fdti10, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.spce.lmp: { folder: examples/PACKAGES/fep/ta, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } in.gap: { folder: examples/PACKAGES/quip, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'quip' is part of the ML-QUIP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.molecular: { folder: examples/PACKAGES/quip, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'quip' is part of the ML-QUIP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.sw: { folder: examples/PACKAGES/quip, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'quip' is part of the ML-QUIP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.srp_react: { folder: examples/PACKAGES/srp_react, status: "failed, ERROR: Invalid bond type 0 for pair style srp (src/MISC/pair_srp.cpp:403).", walltime: -1 } -in.spce: { folder: examples/PACKAGES/manybody_table, status: "completed, 3 rel thermo checks failed", walltime: 9.0, walltime_norm: 1.5 } -in.spce2: { folder: examples/PACKAGES/manybody_table, status: "completed, 3 rel thermo checks failed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.spce_sw: { folder: examples/PACKAGES/manybody_table, status: "completed, 1 rel thermo checks failed", walltime: 9.0, walltime_norm: 1.5 } +in.spce: { folder: examples/PACKAGES/manybody_table, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.spce2: { folder: examples/PACKAGES/manybody_table, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 6.0, walltime_norm: 1.0 } +in.spce_sw: { folder: examples/PACKAGES/manybody_table, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } in.confined: { folder: examples/PACKAGES/dielectric, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.nopbc: { folder: examples/PACKAGES/dielectric, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.methane_qtb: { folder: examples/PACKAGES/qtb/methane_qtb, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.alpha_quartz_qtb: { folder: examples/PACKAGES/qtb/alpha_quartz_qtb, status: "completed, 2 rel thermo checks failed", walltime: 27.0, walltime_norm: 4.5 } -in.alpha_quartz_qbmsst: { folder: examples/PACKAGES/qtb/alpha_quartz_qbmsst, status: "failed, no Total wall time in the output.", walltime: -1 } -in.methane_qbmsst: { folder: examples/PACKAGES/qtb/methane_qbmsst, status: "failed, no Total wall time in the output.", walltime: -1 } -in.tmd: { folder: examples/PACKAGES/tmd, status: "completed, error parsing log.lammps into YAML", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.meam-spline.Si: { folder: examples/PACKAGES/meam_spline, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.meam-spline.TiO2: { folder: examples/PACKAGES/meam_spline, status: "failed, no Total wall time in the output.", walltime: -1 } +in.methane_qtb: { folder: examples/PACKAGES/qtb/methane_qtb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 9.0, walltime_norm: 1.5 } +in.alpha_quartz_qtb: { folder: examples/PACKAGES/qtb/alpha_quartz_qtb, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.alpha_quartz_qbmsst: { folder: examples/PACKAGES/qtb/alpha_quartz_qbmsst, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 42.0, walltime_norm: 7.0 } +in.methane_qbmsst: { folder: examples/PACKAGES/qtb/methane_qbmsst, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 97.0, walltime_norm: 16.166666666666668 } +in.tmd: { folder: examples/PACKAGES/tmd, status: "completed, error parsing log.lammps into YAML", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.meam-spline.Si: { folder: examples/PACKAGES/meam_spline, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.meam-spline.TiO2: { folder: examples/PACKAGES/meam_spline, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 79.0, walltime_norm: 13.166666666666666 } in.silicon: { folder: examples/PACKAGES/phonon/dynamical_matrix_command/Silicon, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.EAM3D: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, no Total wall time in the output.", walltime: -1 } -in.disp: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, unknown command, package not installed, ERROR: Unknown command: 1 (src/input.cpp:314)", walltime: -1 } -in.disp2: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, unknown command, package not installed, ERROR: Unknown command: 1 (src/input.cpp:314)", walltime: -1 } +in.EAM3D: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.disp: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "skipped", walltime: -2 } +in.disp2: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "skipped", walltime: -2 } in.dos: { folder: examples/PACKAGES/phonon/3-3D-FCC-Cu-EAM, status: "skipped", walltime: -2 } -in.Ana: { folder: examples/PACKAGES/phonon/1-1D-mono, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 9.0, walltime_norm: 1.5 } -in.disp: { folder: examples/PACKAGES/phonon/1-1D-mono, status: "failed, unknown command, package not installed, ERROR: Unknown command: 1 (src/input.cpp:314)", walltime: -1 } -in.Ana: { folder: examples/PACKAGES/phonon/2-1D-diatomic, status: "completed, thermo checks passed", walltime: 24.0, walltime_norm: 4.0 } -in.disp: { folder: examples/PACKAGES/phonon/2-1D-diatomic, status: "failed, unknown command, package not installed, ERROR: Unknown command: 10 (src/input.cpp:314)", walltime: -1 } -in.disp: { folder: examples/PACKAGES/phonon/4-Graphene, status: "failed, unknown command, package not installed, ERROR: Unknown command: 100 (src/input.cpp:314)", walltime: -1 } -in.graphene: { folder: examples/PACKAGES/phonon/4-Graphene, status: "failed, no Total wall time in the output.", walltime: -1 } +in.Ana: { folder: examples/PACKAGES/phonon/1-1D-mono, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } +in.disp: { folder: examples/PACKAGES/phonon/1-1D-mono, status: "skipped", walltime: -2 } +in.Ana: { folder: examples/PACKAGES/phonon/2-1D-diatomic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.disp: { folder: examples/PACKAGES/phonon/2-1D-diatomic, status: "skipped", walltime: -2 } +in.disp: { folder: examples/PACKAGES/phonon/4-Graphene, status: "skipped", walltime: -2 } +in.graphene: { folder: examples/PACKAGES/phonon/4-Graphene, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } in.dpde-shardlow: { folder: examples/PACKAGES/dpd-react/dpde-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.dpde-vv: { folder: examples/PACKAGES/dpd-react/dpde-vv, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 18.0, walltime_norm: 3.0 } +in.dpde-vv: { folder: examples/PACKAGES/dpd-react/dpde-vv, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } in.dpd-shardlow: { folder: examples/PACKAGES/dpd-react/dpd-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.dpd-vv: { folder: examples/PACKAGES/dpd-react/dpd-vv, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.dpd-vv: { folder: examples/PACKAGES/dpd-react/dpd-vv, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 11.0, walltime_norm: 1.8333333333333333 } in.dpdp-shardlow: { folder: examples/PACKAGES/dpd-react/dpdp-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.multi-lucy: { folder: examples/PACKAGES/dpd-react/multi-lucy, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.dpdh-shardlow: { folder: examples/PACKAGES/dpd-react/dpdh-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.multi-lucy: { folder: examples/PACKAGES/dpd-react/multi-lucy, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.dpdh-shardlow: { folder: examples/PACKAGES/dpd-react/dpdh-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } in.dpdrx-shardlow: { folder: examples/PACKAGES/dpd-react/dpdrx-shardlow, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.GD: { folder: examples/PACKAGES/flow_gauss, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.basal: { folder: examples/PACKAGES/basal, status: "failed, no Total wall time in the output.", walltime: -1 } +in.GD: { folder: examples/PACKAGES/flow_gauss, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.basal: { folder: examples/PACKAGES/basal, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } in.cascade_AlCu: { folder: examples/PACKAGES/electron_stopping, status: "failed, ERROR: Must set 'extscalar' when setting 'scalar_flag' for fix electron/stopping/fit. Contact the developer. (src/fix.cpp:135).", walltime: -1 } in.cascade_SiSi: { folder: examples/PACKAGES/electron_stopping, status: "failed, ERROR: Must set 'extscalar' when setting 'scalar_flag' for fix electron/stopping/fit. Contact the developer. (src/fix.cpp:135).", walltime: -1 } -in.elstop: { folder: examples/PACKAGES/electron_stopping, status: "completed, thermo checks passed", walltime: 33.0, walltime_norm: 5.5 } -in.elstop.only: { folder: examples/PACKAGES/electron_stopping, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.chreg-acid: { folder: examples/PACKAGES/charge_regulation, status: "completed, 1 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.chreg-acid-real: { folder: examples/PACKAGES/charge_regulation, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.chreg-polymer: { folder: examples/PACKAGES/charge_regulation, status: "completed, 1 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.adatom: { folder: examples/PACKAGES/agni, status: "completed, thermo checks passed", walltime: 27.0, walltime_norm: 4.5 } -in.vacancy: { folder: examples/PACKAGES/agni, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.elstop: { folder: examples/PACKAGES/electron_stopping, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 26.0, walltime_norm: 4.333333333333333 } +in.elstop.only: { folder: examples/PACKAGES/electron_stopping, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.chreg-acid: { folder: examples/PACKAGES/charge_regulation, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.chreg-acid-real: { folder: examples/PACKAGES/charge_regulation, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 0.0, walltime_norm: 0.0 } +in.chreg-polymer: { folder: examples/PACKAGES/charge_regulation, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.adatom: { folder: examples/PACKAGES/agni, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.vacancy: { folder: examples/PACKAGES/agni, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.bucky-plus-cnt: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } in.bucky-plus-cnt-gpu: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } in.deca-ala-solv-filter_imd: { folder: examples/PACKAGES/imd, status: "skipped", walltime: -2 } @@ -280,35 +331,35 @@ in.vac0-bcc: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized com in.vacmin-bcc: { folder: examples/PACKAGES/mgpt, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'mgpt' is part of the MGPT package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.vtk: { folder: examples/PACKAGES/vtk, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'vtk' is part of the VTK package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } in.vtp: { folder: examples/PACKAGES/vtk, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized dump style 'vtk' is part of the VTK package which is not enabled in this LAMMPS binary. (src/output.cpp:776)", walltime: -1 } -in.dpdext: { folder: examples/PACKAGES/dpd-basic/dpdext, status: "completed, 2 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.dpd: { folder: examples/PACKAGES/dpd-basic/dpd, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.dpdext_tstat: { folder: examples/PACKAGES/dpd-basic/dpdext_tstat, status: "completed, thermo checks passed", walltime: 30.0, walltime_norm: 5.0 } -in.dpd_tstat: { folder: examples/PACKAGES/dpd-basic/dpd_tstat, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.dpdext: { folder: examples/PACKAGES/dpd-basic/dpdext, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.dpd: { folder: examples/PACKAGES/dpd-basic/dpd, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } +in.dpdext_tstat: { folder: examples/PACKAGES/dpd-basic/dpdext_tstat, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 30.0, walltime_norm: 5.0 } +in.dpd_tstat: { folder: examples/PACKAGES/dpd-basic/dpd_tstat, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } in.dpd_coul_slater_long: { folder: examples/PACKAGES/dpd-basic/dpd_coul_slater_long, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.piston: { folder: examples/PACKAGES/electrode/piston, status: "failed, no Total wall time in the output.", walltime: -1 } +in.piston: { folder: examples/PACKAGES/electrode/piston, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } in.cg: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.eta: { folder: examples/PACKAGES/electrode/madelung, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.eta_cg: { folder: examples/PACKAGES/electrode/madelung, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.eta_mix: { folder: examples/PACKAGES/electrode/madelung, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.eta: { folder: examples/PACKAGES/electrode/madelung, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.eta_cg: { folder: examples/PACKAGES/electrode/madelung, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.eta_mix: { folder: examples/PACKAGES/electrode/madelung, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } in.ewald-ew2d: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.ewald-ew3dc: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.ewald-ffield: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.pppm-ew3dc: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.pppm-ffield: { folder: examples/PACKAGES/electrode/madelung, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.ffield: { folder: examples/PACKAGES/electrode/au-aq, status: "failed, no Total wall time in the output.", walltime: -1 } -in.tf: { folder: examples/PACKAGES/electrode/au-aq, status: "failed, no Total wall time in the output.", walltime: -1 } -in.conp: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.conq: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.conq2: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.etypes: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.ffield: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.ramp: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.thermo: { folder: examples/PACKAGES/electrode/graph-il, status: "failed, no Total wall time in the output.", walltime: -1 } -in.planar-ewald-ew2d: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.planar-ewald-ew3dc: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.planar-ewald-ffield: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.planar-pppm-ew3dc: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.planar-pppm-ffield: { folder: examples/PACKAGES/electrode/planar, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.ffield: { folder: examples/PACKAGES/electrode/au-aq, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.tf: { folder: examples/PACKAGES/electrode/au-aq, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.conp: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 96.0, walltime_norm: 16.0 } +in.conq: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 90.0, walltime_norm: 15.0 } +in.conq2: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 62.0, walltime_norm: 10.333333333333334 } +in.etypes: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 58.0, walltime_norm: 9.666666666666666 } +in.ffield: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 41.0, walltime_norm: 6.833333333333333 } +in.ramp: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 60.0, walltime_norm: 10.0 } +in.thermo: { folder: examples/PACKAGES/electrode/graph-il, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 57.0, walltime_norm: 9.5 } +in.planar-ewald-ew2d: { folder: examples/PACKAGES/electrode/planar, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.planar-ewald-ew3dc: { folder: examples/PACKAGES/electrode/planar, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.planar-ewald-ffield: { folder: examples/PACKAGES/electrode/planar, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.planar-pppm-ew3dc: { folder: examples/PACKAGES/electrode/planar, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.planar-pppm-ffield: { folder: examples/PACKAGES/electrode/planar, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } in.convective_pulse: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.ddm_schrodinger: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.finite_well: { folder: examples/PACKAGES/atc/drift_diffusion, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } @@ -377,7 +428,15 @@ in.bar1d_flux: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecog in.bar1d_frac_step: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.bar1d_ghost_flux: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.bar1d_thermo_elastic: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } -in.eam_energy: { folder: examples/PACKAGES/atc/elastic, status: "failed, no Total wall time in the output.", walltime: -1 } +in.eam_energy: { folder: examples/PACKAGES/atc/elastic, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.electron_density: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.no_atoms: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.no_atoms_cb: { folder: examples/PACKAGES/atc/elastic, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'atc' is part of the ATC package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } @@ -394,72 +453,72 @@ in.polymer: { folder: examples/PACKAGES/latboltz/polymer, status: "failed, unrec in.confined_colloids: { folder: examples/PACKAGES/latboltz/confined_colloid, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.trapnewsphere: { folder: examples/PACKAGES/latboltz/diffusingsphere, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.translocation: { folder: examples/PACKAGES/latboltz/translocation, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } -in.toycar: { folder: examples/PACKAGES/latboltz/toycar, status: "failed, no Total wall time in the output.", walltime: -1 } +in.toycar: { folder: examples/PACKAGES/latboltz/toycar, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } in.microrheology: { folder: examples/PACKAGES/latboltz/microrheology, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.dragtest: { folder: examples/PACKAGES/latboltz/dragforce, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.planewall: { folder: examples/PACKAGES/latboltz/planewall, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'lb/fluid' is part of the LATBOLTZ package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } -in.compute: { folder: examples/PACKAGES/pace/compute, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.pace.product: { folder: examples/PACKAGES/pace, status: "completed, thermo checks passed", walltime: 16.0, walltime_norm: 2.6666666666666665 } -in.pace.recursive: { folder: examples/PACKAGES/pace, status: "completed, thermo checks passed", walltime: 12.0, walltime_norm: 2.0 } -in.addtorque: { folder: examples/PACKAGES/addtorque, status: "failed, no Total wall time in the output.", walltime: -1 } -in.cnp: { folder: examples/PACKAGES/cnp, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 29.0, walltime_norm: 4.833333333333333 } -in.CH4fc.ang: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.compute: { folder: examples/PACKAGES/pace/compute, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.pace.product: { folder: examples/PACKAGES/pace, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 9.0, walltime_norm: 1.5 } +in.pace.recursive: { folder: examples/PACKAGES/pace, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.addtorque: { folder: examples/PACKAGES/addtorque, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 3 }, walltime: 51.0, walltime_norm: 8.5 } +in.cnp: { folder: examples/PACKAGES/cnp, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 18.0, walltime_norm: 3.0 } +in.CH4fc.ang: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } in.CH4fc.bohr: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.CH4fc.spe.ang: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.CH4fc.spe.bohr: { folder: examples/PACKAGES/eff/fixed-core/CH4, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.C2H6fc.ang: { folder: examples/PACKAGES/eff/fixed-core/C2H6, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } in.C2H6fc.bohr: { folder: examples/PACKAGES/eff/fixed-core/C2H6, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.ch4.dynamics: { folder: examples/PACKAGES/eff/CH4, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.ch4.min: { folder: examples/PACKAGES/eff/CH4, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.ch4_ionized.dynamics: { folder: examples/PACKAGES/eff/CH4, status: "completed, thermo checks passed", walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.ch4.dynamics: { folder: examples/PACKAGES/eff/CH4, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.ch4.min: { folder: examples/PACKAGES/eff/CH4, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.ch4_ionized.dynamics: { folder: examples/PACKAGES/eff/CH4, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 16.0, walltime_norm: 2.6666666666666665 } in.Be-solid.spe: { folder: examples/PACKAGES/eff/Be-solid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } in.adamantane_ionized.nve: { folder: examples/PACKAGES/eff/Auger-Adamantane, status: "failed, ERROR: Lost atoms: original 101 current 100 (src/thermo.cpp:494).", walltime: -1 } in.SiH4: { folder: examples/PACKAGES/eff/ECP/SiH4, status: "completed, error parsing log.lammps into YAML", walltime: 0.0, walltime_norm: 0.0 } in.SiH4.ang: { folder: examples/PACKAGES/eff/ECP/SiH4, status: "completed, error parsing log.lammps into YAML", walltime: 0.0, walltime_norm: 0.0 } -in.Si2H6: { folder: examples/PACKAGES/eff/ECP/Si2H6, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.Si2H6.ang: { folder: examples/PACKAGES/eff/ECP/Si2H6, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.Si2H6: { folder: examples/PACKAGES/eff/ECP/Si2H6, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.Si2H6.ang: { folder: examples/PACKAGES/eff/ECP/Si2H6, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } in.SiC: { folder: examples/PACKAGES/eff/ECP/SiC/bulk, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 31.0, walltime_norm: 5.166666666666667 } -in.h2bulk.npt: { folder: examples/PACKAGES/eff/H_plasma, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 47.0, walltime_norm: 7.833333333333333 } -in.h2bulk.nve: { folder: examples/PACKAGES/eff/H_plasma, status: "failed, no Total wall time in the output.", walltime: -1 } -in.h2bulk.nve.ang: { folder: examples/PACKAGES/eff/H_plasma, status: "failed, no Total wall time in the output.", walltime: -1 } +in.h2bulk.npt: { folder: examples/PACKAGES/eff/H_plasma, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 46.0, walltime_norm: 7.666666666666667 } +in.h2bulk.nve: { folder: examples/PACKAGES/eff/H_plasma, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 78.0, walltime_norm: 13.0 } +in.h2bulk.nve.ang: { folder: examples/PACKAGES/eff/H_plasma, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 87.0, walltime_norm: 14.5 } in.Li-dendritic.min: { folder: examples/PACKAGES/eff/Li-dendritic, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 35.0, walltime_norm: 5.833333333333333 } -in.Li-dendritic.nvt: { folder: examples/PACKAGES/eff/Li-dendritic, status: "failed, no Total wall time in the output.", walltime: -1 } -in.Li.ang: { folder: examples/PACKAGES/eff/Li-solid, status: "failed, no Total wall time in the output.", walltime: -1 } +in.Li-dendritic.nvt: { folder: examples/PACKAGES/eff/Li-dendritic, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 69.0, walltime_norm: 11.5 } +in.Li.ang: { folder: examples/PACKAGES/eff/Li-solid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 74.0, walltime_norm: 12.333333333333334 } in.Li.bohr: { folder: examples/PACKAGES/eff/Li-solid, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 53.0, walltime_norm: 8.833333333333334 } in.h2: { folder: examples/PACKAGES/eff/H2, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 4.0, walltime_norm: 0.6666666666666666 } in.h_atom.spe.ang: { folder: examples/PACKAGES/eff/H, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.h_atom.spe.bohr: { folder: examples/PACKAGES/eff/H, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.npt_biaxial: { folder: examples/PACKAGES/uef/npt_biaxial, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.nvt_uniaxial: { folder: examples/PACKAGES/uef/nvt_uniaxial, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.crystal: { folder: examples/PACKAGES/rhok, status: "completed, 2 rel thermo checks failed", walltime: 24.0, walltime_norm: 4.0 } +in.npt_biaxial: { folder: examples/PACKAGES/uef/npt_biaxial, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 3.0, walltime_norm: 0.5 } +in.nvt_uniaxial: { folder: examples/PACKAGES/uef/nvt_uniaxial, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 3.0, walltime_norm: 0.5 } +in.crystal: { folder: examples/PACKAGES/rhok, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 23.0, walltime_norm: 3.8333333333333335 } in.pinning: { folder: examples/PACKAGES/rhok, status: "failed, ERROR: Cannot open file data.halfhalf: No such file or directory (src/read_data.cpp:367).", walltime: -1 } -in.setup: { folder: examples/PACKAGES/rhok, status: "completed, 2 rel thermo checks failed", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.setup: { folder: examples/PACKAGES/rhok, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 17.0, walltime_norm: 2.8333333333333335 } in.peptide-colvars: { folder: examples/PACKAGES/colvars, status: "completed, error parsing log.lammps into YAML", walltime: 4.0, walltime_norm: 0.6666666666666666 } in.peptide-colvars2: { folder: examples/PACKAGES/colvars, status: "completed, error parsing log.lammps into YAML", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.peptide-spring: { folder: examples/PACKAGES/colvars, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.peptide-spring2: { folder: examples/PACKAGES/colvars, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.peptide-spring: { folder: examples/PACKAGES/colvars, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.peptide-spring2: { folder: examples/PACKAGES/colvars, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } in.hdnnp: { folder: examples/PACKAGES/hdnnp, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'hdnnp' is part of the ML-HDNNP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.hybrid: { folder: examples/PACKAGES/hdnnp, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized pair style 'hdnnp' is part of the ML-HDNNP package which is not enabled in this LAMMPS binary. (src/force.cpp:275)", walltime: -1 } in.edip-Si: { folder: examples/PACKAGES/edip, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.edip-Si-multi: { folder: examples/PACKAGES/edip, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.edip-SiC: { folder: examples/PACKAGES/edip, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.large_nylon_melt: { folder: examples/PACKAGES/reaction/nylon,6-6_melt, status: "failed, no Total wall time in the output.", walltime: -1 } -in.tiny_polystyrene.stabilized: { folder: examples/PACKAGES/reaction/tiny_polystyrene, status: "completed, 2 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } -in.tiny_epoxy.stabilized: { folder: examples/PACKAGES/reaction/tiny_epoxy, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.grow_styrene: { folder: examples/PACKAGES/reaction/create_atoms_polystyrene, status: "completed, 2 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.large_nylon_melt: { folder: examples/PACKAGES/reaction/nylon,6-6_melt, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 60.0, walltime_norm: 10.0 } +in.tiny_polystyrene.stabilized: { folder: examples/PACKAGES/reaction/tiny_polystyrene, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 18.0, walltime_norm: 3.0 } +in.tiny_epoxy.stabilized: { folder: examples/PACKAGES/reaction/tiny_epoxy, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 0.0, walltime_norm: 0.0 } +in.grow_styrene: { folder: examples/PACKAGES/reaction/create_atoms_polystyrene, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 6.0, walltime_norm: 1.0 } in.tiny_nylon.stabilized: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "failed, unknown command, package not installed, ERROR: Unknown command: react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map rescale_charges yes (src/input.cpp:314)", walltime: -1 } -in.tiny_nylon.stabilized_variable_probability: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.tiny_nylon.unstabilized: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.BulkNi: { folder: examples/PACKAGES/diffraction, status: "failed, no Total wall time in the output.", walltime: -1 } -in.tdpd: { folder: examples/PACKAGES/dpd-meso/tdpd, status: "failed, no Total wall time in the output.", walltime: -1 } -in.tdpd-region: { folder: examples/PACKAGES/dpd-meso/tdpd, status: "failed, no Total wall time in the output.", walltime: -1 } -in.mdpd: { folder: examples/PACKAGES/dpd-meso/mdpd, status: "failed, no Total wall time in the output.", walltime: -1 } -in.edpd: { folder: examples/PACKAGES/dpd-meso/edpd, status: "failed, no Total wall time in the output.", walltime: -1 } -in.edpd-region: { folder: examples/PACKAGES/dpd-meso/edpd, status: "failed, no Total wall time in the output.", walltime: -1 } -in.cylinder: { folder: examples/PACKAGES/stressprofile, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.tiny_nylon.stabilized_variable_probability: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } +in.tiny_nylon.unstabilized: { folder: examples/PACKAGES/reaction/tiny_nylon, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } +in.BulkNi: { folder: examples/PACKAGES/diffraction, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 158.0, walltime_norm: 26.333333333333332 } +in.tdpd: { folder: examples/PACKAGES/dpd-meso/tdpd, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 64.0, walltime_norm: 10.666666666666666 } +in.tdpd-region: { folder: examples/PACKAGES/dpd-meso/tdpd, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 63.0, walltime_norm: 10.5 } +in.mdpd: { folder: examples/PACKAGES/dpd-meso/mdpd, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 100.0, walltime_norm: 16.666666666666668 } +in.edpd: { folder: examples/PACKAGES/dpd-meso/edpd, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 87.0, walltime_norm: 14.5 } +in.edpd-region: { folder: examples/PACKAGES/dpd-meso/edpd, status: "completed", failed_checks: { abs_diff_failed: 6, rel_diff_failed: 6 }, walltime: 87.0, walltime_norm: 14.5 } +in.cylinder: { folder: examples/PACKAGES/stressprofile, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } in.flat: { folder: examples/PACKAGES/stressprofile, status: "failed, ERROR: Illegal compute stress/cartesian command: missing argument(s) (src/EXTRA-COMPUTE/compute_stress_cartesian.cpp:65).", walltime: -1 } -in.sphere: { folder: examples/PACKAGES/stressprofile, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.srp: { folder: examples/PACKAGES/srp, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } +in.sphere: { folder: examples/PACKAGES/stressprofile, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.srp: { folder: examples/PACKAGES/srp, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } in.scafacos: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } in.scafacos.cw.ewald: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } in.scafacos.cw.fmm: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } @@ -474,161 +533,217 @@ in.scafacos.p2nfft: { folder: examples/PACKAGES/scafacos, status: "failed, unrec in.scafacos.p3m: { folder: examples/PACKAGES/scafacos, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized kspace style 'scafacos' is part of the SCAFACOS package which is not enabled in this LAMMPS binary. (src/force.cpp:660)", walltime: -1 } in.h_atom: { folder: examples/PACKAGES/awpmd, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized atom style 'wavepacket' is part of the AWPMD package which is not enabled in this LAMMPS binary. (src/atom.cpp:745)", walltime: -1 } in.h_molecule: { folder: examples/PACKAGES/awpmd, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized atom style 'wavepacket' is part of the AWPMD package which is not enabled in this LAMMPS binary. (src/atom.cpp:745)", walltime: -1 } -in.gold_gr: { folder: examples/PACKAGES/interlayer/saip_metal, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.atom-diffusion: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_z, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_z, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.gr_water: { folder: examples/PACKAGES/interlayer/aip_water_2dm, status: "completed, 2 rel thermo checks failed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.gr_water.opt: { folder: examples/PACKAGES/interlayer/aip_water_2dm, status: "completed, 2 rel thermo checks failed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_full, status: "failed, no Total wall time in the output.", walltime: -1 } -in.CH_drip: { folder: examples/PACKAGES/interlayer/drip, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.C_drip: { folder: examples/PACKAGES/interlayer/drip, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.mos2: { folder: examples/PACKAGES/interlayer/ilp_tmds, status: "completed, 1 rel thermo checks failed", walltime: 56.0, walltime_norm: 9.333333333333334 } -in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } -in.bilayer-hBN: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } -in.grhBN: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } -in.ilp_graphene_hbn: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "failed, no Total wall time in the output.", walltime: -1 } +in.gold_gr: { folder: examples/PACKAGES/interlayer/saip_metal, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.atom-diffusion: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_z, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_z, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.gr_water: { folder: examples/PACKAGES/interlayer/aip_water_2dm, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.gr_water.opt: { folder: examples/PACKAGES/interlayer/aip_water_2dm, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/kolmogorov_crespi_full, status: "failed, mismatched columns in the log files", walltime: 121.0, walltime_norm: 20.166666666666668 } +in.CH_drip: { folder: examples/PACKAGES/interlayer/drip, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 1 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.C_drip: { folder: examples/PACKAGES/interlayer/drip, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.mos2: { folder: examples/PACKAGES/interlayer/ilp_tmds, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 57.0, walltime_norm: 9.5 } +in.bilayer-graphene: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 70.0, walltime_norm: 11.666666666666666 } +in.bilayer-hBN: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 134.0, walltime_norm: 22.333333333333332 } +in.grhBN: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 123.0, walltime_norm: 20.5 } +in.ilp_graphene_hbn: { folder: examples/PACKAGES/interlayer/ilp_graphene_hbn, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 129.0, walltime_norm: 21.5 } in.smatbAgCuPancake: { folder: examples/PACKAGES/smtbq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.smatbBulkFCC: { folder: examples/PACKAGES/smtbq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.smtbq.Al: { folder: examples/PACKAGES/smtbq, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } -in.smtbq.Al2O3: { folder: examples/PACKAGES/smtbq, status: "failed, no Total wall time in the output.", walltime: -1 } -in.smtbq.TiO2: { folder: examples/PACKAGES/smtbq, status: "failed, no Total wall time in the output.", walltime: -1 } -in.slater: { folder: examples/PACKAGES/slater, status: "failed, no Total wall time in the output.", walltime: -1 } +in.smtbq.Al2O3: { folder: examples/PACKAGES/smtbq, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.smtbq.TiO2: { folder: examples/PACKAGES/smtbq, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.slater: { folder: examples/PACKAGES/slater, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } in.slcsa: { folder: examples/PACKAGES/sna_nnn_slcsa, status: "completed, error parsing log.lammps into YAML", walltime: 42.0, walltime_norm: 7.0 } -in.orient_eco: { folder: examples/PACKAGES/orient_eco, status: "failed, no Total wall time in the output.", walltime: -1 } +in.orient_eco: { folder: examples/PACKAGES/orient_eco, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 128.0, walltime_norm: 21.333333333333332 } in.entropy: { folder: examples/PACKAGES/entropy, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } in.bpti: { folder: examples/PACKAGES/filter_corotate, status: "completed, error parsing log.lammps into YAML", walltime: 24.0, walltime_norm: 4.0 } -in.peptide: { folder: examples/PACKAGES/filter_corotate, status: "failed, no Total wall time in the output.", walltime: -1 } -in.graphene: { folder: examples/PACKAGES/ipi, status: "failed, no Total wall time in the output.", walltime: -1 } +in.peptide: { folder: examples/PACKAGES/filter_corotate, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 98.0, walltime_norm: 16.333333333333332 } +in.graphene: { folder: examples/PACKAGES/ipi, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.gREM-npt: { folder: examples/PACKAGES/grem/lj-single, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.gREM-nvt: { folder: examples/PACKAGES/grem/lj-single, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.gREM: { folder: examples/PACKAGES/grem/lj-6rep, status: "failed, ERROR: Cannot open file restart_file: No such file or directory (src/read_data.cpp:367).", walltime: -1 } in.gREM-temper: { folder: examples/PACKAGES/grem/lj-temper, status: "failed, ERROR: World variable count doesn't match # of partitions (src/variable.cpp:255).", walltime: -1 } -in.compute_stress_mop: { folder: examples/PACKAGES/mop, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fix_wall: { folder: examples/PACKAGES/ees, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fix_wall_region: { folder: examples/PACKAGES/ees, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.ti_spring: { folder: examples/PACKAGES/ti, status: "failed, no Total wall time in the output.", walltime: -1 } -in.extep-bn: { folder: examples/PACKAGES/extep, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.toluene.lang: { folder: examples/PACKAGES/drude/toluene, status: "failed, no Total wall time in the output.", walltime: -1 } -in.toluene.nh: { folder: examples/PACKAGES/drude/toluene, status: "failed, no Total wall time in the output.", walltime: -1 } -in.butane.lang: { folder: examples/PACKAGES/drude/butane, status: "completed, 3 rel thermo checks failed", walltime: 50.0, walltime_norm: 8.333333333333334 } -in.butane.nh: { folder: examples/PACKAGES/drude/butane, status: "completed, 5 rel thermo checks failed", walltime: 49.0, walltime_norm: 8.166666666666666 } -in.butane.tgnh: { folder: examples/PACKAGES/drude/butane, status: "completed, 4 rel thermo checks failed", walltime: 49.0, walltime_norm: 8.166666666666666 } -in.swm4-ndp.lang: { folder: examples/PACKAGES/drude/swm4-ndp, status: "failed, no Total wall time in the output.", walltime: -1 } -in.swm4-ndp.nh: { folder: examples/PACKAGES/drude/swm4-ndp, status: "completed, 5 rel thermo checks failed", walltime: 55.0, walltime_norm: 9.166666666666666 } -in.ethylene_glycol: { folder: examples/PACKAGES/drude/ethylene_glycol, status: "completed, 4 rel thermo checks failed", walltime: 25.0, walltime_norm: 4.166666666666667 } -in.ethanol.lang: { folder: examples/PACKAGES/drude/ethanol, status: "completed, 5 rel thermo checks failed", walltime: 43.0, walltime_norm: 7.166666666666667 } -in.ethanol.nh: { folder: examples/PACKAGES/drude/ethanol, status: "completed, 5 rel thermo checks failed", walltime: 42.0, walltime_norm: 7.0 } -in.ethanol.tgnh: { folder: examples/PACKAGES/drude/ethanol, status: "completed, 5 rel thermo checks failed", walltime: 44.0, walltime_norm: 7.333333333333333 } +in.compute_stress_mop: { folder: examples/PACKAGES/mop, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fix_wall: { folder: examples/PACKAGES/ees, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fix_wall_region: { folder: examples/PACKAGES/ees, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.ti_spring: { folder: examples/PACKAGES/ti, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } +in.extep-bn: { folder: examples/PACKAGES/extep, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 0.0, walltime_norm: 0.0 } +in.toluene.lang: { folder: examples/PACKAGES/drude/toluene, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 5 }, walltime: 68.0, walltime_norm: 11.333333333333334 } +in.toluene.nh: { folder: examples/PACKAGES/drude/toluene, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 68.0, walltime_norm: 11.333333333333334 } +in.butane.lang: { folder: examples/PACKAGES/drude/butane, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 50.0, walltime_norm: 8.333333333333334 } +in.butane.nh: { folder: examples/PACKAGES/drude/butane, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 5 }, walltime: 49.0, walltime_norm: 8.166666666666666 } +in.butane.tgnh: { folder: examples/PACKAGES/drude/butane, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 4 }, walltime: 49.0, walltime_norm: 8.166666666666666 } +in.swm4-ndp.lang: { folder: examples/PACKAGES/drude/swm4-ndp, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 65.0, walltime_norm: 10.833333333333334 } +in.swm4-ndp.nh: { folder: examples/PACKAGES/drude/swm4-ndp, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 54.0, walltime_norm: 9.0 } +in.ethylene_glycol: { folder: examples/PACKAGES/drude/ethylene_glycol, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 4 }, walltime: 25.0, walltime_norm: 4.166666666666667 } +in.ethanol.lang: { folder: examples/PACKAGES/drude/ethanol, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 43.0, walltime_norm: 7.166666666666667 } +in.ethanol.nh: { folder: examples/PACKAGES/drude/ethanol, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 42.0, walltime_norm: 7.0 } +in.ethanol.tgnh: { folder: examples/PACKAGES/drude/ethanol, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 44.0, walltime_norm: 7.333333333333333 } in.force: { folder: examples/PACKAGES/tally, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } in.pe: { folder: examples/PACKAGES/tally, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } in.stress: { folder: examples/PACKAGES/tally, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.system: { folder: examples/PACKAGES/momb, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.system: { folder: examples/PACKAGES/momb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 13.0, walltime_norm: 2.1666666666666665 } in.momentum: { folder: examples/PACKAGES/momentum, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 41.0, walltime_norm: 6.833333333333333 } -in.alpha: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.alpha_relaxation: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.beta: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.energy_conservation.meam.sw: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "failed, no Total wall time in the output.", walltime: -1 } -in.fcc: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.hexagonal: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.omega: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.single_atom: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.bcc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.bcc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.dc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.dc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.energy_conservation.meam.sw: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.fcc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fcc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.hcp_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.sc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.sc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.single_atom: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.film_mesocnt: { folder: examples/PACKAGES/mesont, status: "failed, no Total wall time in the output.", walltime: -1 } -in.cauchystat: { folder: examples/PACKAGES/cauchy, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.rubber_strip_pull: { folder: examples/PACKAGES/machdyn/rubber_strip_pull, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.aluminum_strip_pull: { folder: examples/PACKAGES/machdyn/aluminum_strip_pull, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.funnel_flow: { folder: examples/PACKAGES/machdyn/funnel_flow, status: "completed, thermo checks passed", walltime: 29.0, walltime_norm: 4.833333333333333 } -in.fluid_structure_interaction: { folder: examples/PACKAGES/machdyn/fluid_structure_interaction, status: "completed, thermo checks passed", walltime: 32.0, walltime_norm: 5.333333333333333 } -in.rubber_rings_3d: { folder: examples/PACKAGES/machdyn/rubber_rings_3d, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } +in.alpha: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.alpha_relaxation: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.beta: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.energy_conservation.meam.sw: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 74.0, walltime_norm: 12.333333333333334 } +in.fcc: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.hexagonal: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.omega: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.single_atom: { folder: examples/PACKAGES/meam_sw_spline/Ti, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.bcc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.bcc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.dc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.dc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.energy_conservation.meam.sw: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.fcc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fcc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.hcp_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.sc: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.sc_relax: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.single_atom: { folder: examples/PACKAGES/meam_sw_spline/Si, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.film_mesocnt: { folder: examples/PACKAGES/mesont, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } +in.cauchystat: { folder: examples/PACKAGES/cauchy, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.rubber_strip_pull: { folder: examples/PACKAGES/machdyn/rubber_strip_pull, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.aluminum_strip_pull: { folder: examples/PACKAGES/machdyn/aluminum_strip_pull, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.funnel_flow: { folder: examples/PACKAGES/machdyn/funnel_flow, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 29.0, walltime_norm: 4.833333333333333 } +in.fluid_structure_interaction: { folder: examples/PACKAGES/machdyn/fluid_structure_interaction, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 32.0, walltime_norm: 5.333333333333333 } +in.rubber_rings_3d: { folder: examples/PACKAGES/machdyn/rubber_rings_3d, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 21.0, walltime_norm: 3.5 } in.h2o-quantum: { folder: examples/PACKAGES/gle, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } in.h2o-smart: { folder: examples/PACKAGES/gle, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } -in.pafi: { folder: examples/PACKAGES/pafi, status: "failed, no Total wall time in the output.", walltime: -1 } +in.pafi: { folder: examples/PACKAGES/pafi, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.scp: { folder: examples/PACKAGES/pimd/prot-hairpin, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 15.0, walltime_norm: 2.5 } in.scp: { folder: examples/PACKAGES/pimd/para-h2, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } in.lmp: { folder: examples/PACKAGES/pimd/langevin_reduced_units, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.langevin.metal: { folder: examples/PACKAGES/pimd/langevin_metal_units, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.pimd-langevin.metal: { folder: examples/PACKAGES/pimd/langevin_metal_units, status: "completed, 2 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.rann: { folder: examples/PACKAGES/rann, status: "failed, no Total wall time in the output.", walltime: -1 } +in.langevin.metal: { folder: examples/PACKAGES/pimd/langevin_metal_units, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } +in.pimd-langevin.metal: { folder: examples/PACKAGES/pimd/langevin_metal_units, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 0.0, walltime_norm: 0.0 } +in.rann: { folder: examples/PACKAGES/rann, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.msd.2d: { folder: examples/DIFFUSE, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 36.0, walltime_norm: 6.0 } -in.vacf.2d: { folder: examples/DIFFUSE, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 38.0, walltime_norm: 6.333333333333333 } +in.vacf.2d: { folder: examples/DIFFUSE, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 39.0, walltime_norm: 6.5 } in.numdiff: { folder: examples/numdiff, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.bpm.pour: { folder: examples/bpm/pour, status: "failed, no Total wall time in the output.", walltime: -1 } -in.bpm.impact.rotational: { folder: examples/bpm/impact, status: "failed, no Total wall time in the output.", walltime: -1 } +in.bpm.pour: { folder: examples/bpm/pour, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.bpm.impact.rotational: { folder: examples/bpm/impact, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 102.0, walltime_norm: 17.0 } in.bpm.impact.spring: { folder: examples/bpm/impact, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 12.0, walltime_norm: 2.0 } -in.rheo.balloon: { folder: examples/rheo/balloon, status: "failed, no Total wall time in the output.", walltime: -1 } -in.rheo.oxidation: { folder: examples/rheo/oxidation, status: "failed, no Total wall time in the output.", walltime: -1 } -in.rheo.taylor.green: { folder: examples/rheo/taylor-green, status: "failed, no Total wall time in the output.", walltime: -1 } -in.rheo.ice.cubes: { folder: examples/rheo/ice-cubes, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rheo.balloon: { folder: examples/rheo/balloon, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.rheo.oxidation: { folder: examples/rheo/oxidation, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.rheo.taylor.green: { folder: examples/rheo/taylor-green, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 113.0, walltime_norm: 18.833333333333332 } +in.rheo.ice.cubes: { folder: examples/rheo/ice-cubes, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.rheo.poiseuille: { folder: examples/rheo/poiseuille, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 29.0, walltime_norm: 4.833333333333333 } -in.rheo.dam.break: { folder: examples/rheo/dam-break, status: "failed, no Total wall time in the output.", walltime: -1 } +in.rheo.dam.break: { folder: examples/rheo/dam-break, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 159.0, walltime_norm: 26.5 } in.peptide: { folder: examples/peptide, status: "completed, error parsing log.lammps into YAML", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.coreshell: { folder: examples/coreshell, status: "completed, 9 rel thermo checks failed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.coreshell.dsf: { folder: examples/coreshell, status: "completed, 8 rel thermo checks failed", walltime: 20.0, walltime_norm: 3.3333333333333335 } -in.coreshell.thermostats: { folder: examples/coreshell, status: "completed, 14 rel thermo checks failed", walltime: 14.0, walltime_norm: 2.3333333333333335 } -in.coreshell.wolf: { folder: examples/coreshell, status: "completed, 5 rel thermo checks failed", walltime: 22.0, walltime_norm: 3.6666666666666665 } -in.marble_race: { folder: examples/mesh, status: "failed, no Total wall time in the output.", walltime: -1 } -in.mesh_box: { folder: examples/mesh, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.abcfire: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.abcfire_mod: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.cg: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fire: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fire_mod: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.meam.abcfire: { folder: examples/fire, status: "completed, thermo checks passed", walltime: 44.0, walltime_norm: 7.333333333333333 } -in.meam.fire: { folder: examples/fire, status: "failed, no Total wall time in the output.", walltime: -1 } +in.coreshell: { folder: examples/coreshell, status: "completed", failed_checks: { abs_diff_failed: 7, rel_diff_failed: 9 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.coreshell.dsf: { folder: examples/coreshell, status: "completed", failed_checks: { abs_diff_failed: 7, rel_diff_failed: 8 }, walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.coreshell.thermostats: { folder: examples/coreshell, status: "completed", failed_checks: { abs_diff_failed: 12, rel_diff_failed: 14 }, walltime: 14.0, walltime_norm: 2.3333333333333335 } +in.coreshell.wolf: { folder: examples/coreshell, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 22.0, walltime_norm: 3.6666666666666665 } +in.marble_race: { folder: examples/mesh, status: "completed", failed_checks: { abs_diff_failed: 5, rel_diff_failed: 5 }, walltime: 131.0, walltime_norm: 21.833333333333332 } +in.mesh_box: { folder: examples/mesh, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.abcfire: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.abcfire_mod: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.cg: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fire: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fire_mod: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.meam.abcfire: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 43.0, walltime_norm: 7.166666666666667 } +in.meam.fire: { folder: examples/fire, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 62.0, walltime_norm: 10.333333333333334 } in.neb.sivac.abcfire: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } in.neb.sivac.abcfire_mod: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } in.neb.sivac.fire: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } in.neb.sivac.fire_mod: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } in.neb.sivac.qm: { folder: examples/fire, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } -in.bcc.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.bcc.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.data.general: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fcc.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fcc.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.hex.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.hex.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.sq2.orthog: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.sq2.primitive: { folder: examples/triclinic, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.tri.srd: { folder: examples/ASPHERE/tri, status: "failed, no Total wall time in the output.", walltime: -1 } -in.star: { folder: examples/ASPHERE/star, status: "completed, 3 rel thermo checks failed", walltime: 12.0, walltime_norm: 2.0 } -in.star.mp: { folder: examples/ASPHERE/star, status: "completed, 3 rel thermo checks failed", walltime: 12.0, walltime_norm: 2.0 } -in.box: { folder: examples/ASPHERE/box, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } -in.box.mp: { folder: examples/ASPHERE/box, status: "completed, 3 rel thermo checks failed", walltime: 18.0, walltime_norm: 3.0 } -in.dimer: { folder: examples/ASPHERE/dimer, status: "completed, 3 rel thermo checks failed", walltime: 6.0, walltime_norm: 1.0 } -in.dimer.mp: { folder: examples/ASPHERE/dimer, status: "completed, 3 rel thermo checks failed", walltime: 16.0, walltime_norm: 2.6666666666666665 } -in.vesicle: { folder: examples/ASPHERE/vesicle, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.line: { folder: examples/ASPHERE/line, status: "failed, no Total wall time in the output.", walltime: -1 } -in.line.srd: { folder: examples/ASPHERE/line, status: "failed, no Total wall time in the output.", walltime: -1 } -in.poly: { folder: examples/ASPHERE/poly, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } -in.poly.mp: { folder: examples/ASPHERE/poly, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.flat_membrane: { folder: examples/ASPHERE/flat_membrane, status: "completed, 2 rel thermo checks failed", walltime: 7.0, walltime_norm: 1.1666666666666667 } -in.ellipsoid: { folder: examples/ASPHERE/ellipsoid, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.ellipsoid.mp: { folder: examples/ASPHERE/ellipsoid, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.ubiquitin: { folder: examples/amoeba, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } -in.water_box.amoeba: { folder: examples/amoeba, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } -in.water_box.hippo: { folder: examples/amoeba, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.water_dimer.amoeba: { folder: examples/amoeba, status: "completed, 1 abs thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.water_dimer.hippo: { folder: examples/amoeba, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.water_hexamer.amoeba: { folder: examples/amoeba, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.water_hexamer.hippo: { folder: examples/amoeba, status: "completed, 1 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.nb3b: { folder: examples/nb3b, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.nb3b.screened: { folder: examples/nb3b, status: "completed, thermo checks passed", walltime: 30.0, walltime_norm: 5.0 } -in.min: { folder: examples/min, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.min.box: { folder: examples/min, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.bcc.orthog: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.bcc.primitive: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.data.general: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fcc.orthog: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fcc.primitive: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.hex.orthog: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.hex.primitive: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.sq2.orthog: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.sq2.primitive: { folder: examples/triclinic, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.tri.srd: { folder: examples/ASPHERE/tri, status: "completed", failed_checks: { abs_diff_failed: 4, rel_diff_failed: 4 }, walltime: 143.0, walltime_norm: 23.833333333333332 } +in.star: { folder: examples/ASPHERE/star, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 12.0, walltime_norm: 2.0 } +in.star.mp: { folder: examples/ASPHERE/star, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 12.0, walltime_norm: 2.0 } +in.box: { folder: examples/ASPHERE/box, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 3 }, walltime: 18.0, walltime_norm: 3.0 } +in.box.mp: { folder: examples/ASPHERE/box, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.dimer: { folder: examples/ASPHERE/dimer, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 6.0, walltime_norm: 1.0 } +in.dimer.mp: { folder: examples/ASPHERE/dimer, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 16.0, walltime_norm: 2.6666666666666665 } +in.vesicle: { folder: examples/ASPHERE/vesicle, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 9.0, walltime_norm: 1.5 } +in.line: { folder: examples/ASPHERE/line, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.line.srd: { folder: examples/ASPHERE/line, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } +in.poly: { folder: examples/ASPHERE/poly, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.poly.mp: { folder: examples/ASPHERE/poly, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.flat_membrane: { folder: examples/ASPHERE/flat_membrane, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 7.0, walltime_norm: 1.1666666666666667 } +in.ellipsoid: { folder: examples/ASPHERE/ellipsoid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 9.0, walltime_norm: 1.5 } +in.ellipsoid.mp: { folder: examples/ASPHERE/ellipsoid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 9.0, walltime_norm: 1.5 } +in.ubiquitin: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 12.0, walltime_norm: 2.0 } +in.water_box.amoeba: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.water_box.hippo: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.water_dimer.amoeba: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.water_dimer.hippo: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 0.0, walltime_norm: 0.0 } +in.water_hexamer.amoeba: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 0.0, walltime_norm: 0.0 } +in.water_hexamer.hippo: { folder: examples/amoeba, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 0.0, walltime_norm: 0.0 } +in.nb3b: { folder: examples/nb3b, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.nb3b.screened: { folder: examples/nb3b, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 29.0, walltime_norm: 4.833333333333333 } +in.min: { folder: examples/min, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.min.box: { folder: examples/min, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.balance: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.balance.bond.fast: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.balance.bond.slow: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.balance.clock.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.balance.clock.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 16.0, walltime_norm: 2.6666666666666665 } in.balance.clock.static: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } in.balance.group.dynamic: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } in.balance.group.static: { folder: examples/balance, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } @@ -664,55 +779,55 @@ in.water.qmmm.plugin: { folder: examples/QUANTUM/NWChem, status: "failed, unreco in.zeolite.mm: { folder: examples/QUANTUM/NWChem, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.zeolite.qmmm: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } in.zeolite.qmmm.plugin: { folder: examples/QUANTUM/NWChem, status: "failed, unrecognized command, package not installed, ERROR: Unrecognized fix style 'mdi/qmmm' is part of the MDI package which is not enabled in this LAMMPS binary. (src/modify.cpp:924)", walltime: -1 } -in.wall.ccl: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.wall.diffusive: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.wall.flow: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.wall.lepton: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.wall.maxwell: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.wall.specular: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.wall.table: { folder: examples/wall, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.meam: { folder: examples/meam, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.meam.shear: { folder: examples/meam, status: "completed, 3 rel thermo checks failed", walltime: 31.0, walltime_norm: 5.166666666666667 } -in.msmeam: { folder: examples/meam/msmeam, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.hugoniostat: { folder: examples/hugoniostat, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.comb.Cu: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.comb.Cu2O.elastic: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } -in.comb.HfO2: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.comb.Si: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.comb.Si.elastic: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.comb3: { folder: examples/comb, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.wall.ccl: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.wall.diffusive: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.wall.flow: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.wall.lepton: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.wall.maxwell: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.wall.specular: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.wall.table: { folder: examples/wall, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.meam: { folder: examples/meam, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.meam.shear: { folder: examples/meam, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 31.0, walltime_norm: 5.166666666666667 } +in.msmeam: { folder: examples/meam/msmeam, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.hugoniostat: { folder: examples/hugoniostat, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.comb.Cu: { folder: examples/comb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.comb.Cu2O.elastic: { folder: examples/comb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 21.0, walltime_norm: 3.5 } +in.comb.HfO2: { folder: examples/comb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.comb.Si: { folder: examples/comb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.comb.Si.elastic: { folder: examples/comb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.comb3: { folder: examples/comb, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } in.tad: { folder: examples/tad, status: "failed, ERROR: Cannot use TAD with a single replica for NEB (src/REPLICA/tad.cpp:79).", walltime: -1 } -in.controller.temp: { folder: examples/controller, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.controller.wall: { folder: examples/controller, status: "completed, thermo checks passed", walltime: 19.0, walltime_norm: 3.1666666666666665 } -in.reaxff.rdx: { folder: examples/reaxff, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.reaxff.rdx-shielded: { folder: examples/reaxff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.reaxff.tatb: { folder: examples/reaxff, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.reaxff.tatb-shielded: { folder: examples/reaxff, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.ci-reax.CH: { folder: examples/reaxff/ci-reaxFF, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } -in.reaxff.hns: { folder: examples/reaxff/HNS, status: "completed, thermo checks passed", walltime: 20.0, walltime_norm: 3.3333333333333335 } -in.VOH: { folder: examples/reaxff/VOH, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.controller.temp: { folder: examples/controller, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.controller.wall: { folder: examples/controller, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 19.0, walltime_norm: 3.1666666666666665 } +in.reaxff.rdx: { folder: examples/reaxff, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 0.0, walltime_norm: 0.0 } +in.reaxff.rdx-shielded: { folder: examples/reaxff, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.reaxff.tatb: { folder: examples/reaxff, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 2 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.reaxff.tatb-shielded: { folder: examples/reaxff, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 2 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.ci-reax.CH: { folder: examples/reaxff/ci-reaxFF, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 12.0, walltime_norm: 2.0 } +in.reaxff.hns: { folder: examples/reaxff/HNS, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 20.0, walltime_norm: 3.3333333333333335 } +in.VOH: { folder: examples/reaxff/VOH, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 2 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.water.acks2: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } in.water.acks2.field: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 17.0, walltime_norm: 2.8333333333333335 } in.water.qeq: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } in.water.qeq.field: { folder: examples/reaxff/water, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.ZnOH2: { folder: examples/reaxff/ZnOH2, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.FC: { folder: examples/reaxff/FC, status: "completed, thermo checks passed", walltime: 15.0, walltime_norm: 2.5 } -in.RDX: { folder: examples/reaxff/RDX, status: "completed, 3 rel thermo checks failed", walltime: 6.0, walltime_norm: 1.0 } -in.AuO: { folder: examples/reaxff/AuO, status: "completed, thermo checks passed", walltime: 6.0, walltime_norm: 1.0 } -in.CHO: { folder: examples/reaxff/CHO, status: "completed, 2 rel thermo checks failed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.FeOH3: { folder: examples/reaxff/FeOH3, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.AB: { folder: examples/reaxff/AB, status: "completed, 3 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.grid.2d: { folder: examples/grid, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.grid.3d: { folder: examples/grid, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.sph: { folder: examples/grid, status: "completed, thermo checks passed", walltime: 36.0, walltime_norm: 6.0 } +in.ZnOH2: { folder: examples/reaxff/ZnOH2, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.FC: { folder: examples/reaxff/FC, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 15.0, walltime_norm: 2.5 } +in.RDX: { folder: examples/reaxff/RDX, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 6.0, walltime_norm: 1.0 } +in.AuO: { folder: examples/reaxff/AuO, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 6.0, walltime_norm: 1.0 } +in.CHO: { folder: examples/reaxff/CHO, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 2 }, walltime: 3.0, walltime_norm: 0.5 } +in.FeOH3: { folder: examples/reaxff/FeOH3, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.AB: { folder: examples/reaxff/AB, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.grid.2d: { folder: examples/grid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.grid.3d: { folder: examples/grid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.sph: { folder: examples/grid, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 36.0, walltime_norm: 6.0 } in.yaml: { folder: examples/yaml, status: "completed, error parsing log.lammps into YAML", walltime: 3.0, walltime_norm: 0.5 } -in.hBN_shift: { folder: examples/tersoff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.tersoff: { folder: examples/tersoff, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.friction: { folder: examples/friction, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.cmap: { folder: examples/cmap, status: "completed, 1 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.dipole: { folder: examples/dipole, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.colloid: { folder: examples/colloid, status: "completed, 3 rel thermo checks failed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.streitz.ewald: { folder: examples/streitz, status: "completed, 2 rel thermo checks failed", walltime: 54.0, walltime_norm: 9.0 } +in.hBN_shift: { folder: examples/tersoff, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.tersoff: { folder: examples/tersoff, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.friction: { folder: examples/friction, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.cmap: { folder: examples/cmap, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 1 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.dipole: { folder: examples/dipole, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.colloid: { folder: examples/colloid, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.streitz.ewald: { folder: examples/streitz, status: "completed", failed_checks: { abs_diff_failed: 1, rel_diff_failed: 2 }, walltime: 53.0, walltime_norm: 8.833333333333334 } in.streitz.wolf: { folder: examples/streitz, status: "failed, mismatched columns in the log files", walltime: 57.0, walltime_norm: 9.5 } in.neb.hop1: { folder: examples/neb, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } in.neb.hop1.end: { folder: examples/neb, status: "failed, ERROR: Cannot use NEB with a single replica (src/REPLICA/neb.cpp:141).", walltime: -1 } @@ -722,17 +837,17 @@ in.fix_python_invoke: { folder: examples/python, status: "failed, ERROR: Could n in.fix_python_invoke_neighlist: { folder: examples/python, status: "failed, ERROR: Could not process Python string: .", walltime: -1 } in.fix_python_move_nve_melt: { folder: examples/python, status: "failed, ERROR: Loading python integrator module failure (src/PYTHON/fix_python_move.cpp:64).", walltime: -1 } in.fix_python_move_nve_melt_opt: { folder: examples/python, status: "failed, ERROR: Loading python integrator module failure (src/PYTHON/fix_python_move.cpp:64).", walltime: -1 } -in.pair_python_coulomb: { folder: examples/python, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } -in.pair_python_harmonic: { folder: examples/python, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } -in.pair_python_hybrid: { folder: examples/python, status: "completed, 3 rel thermo checks failed", walltime: 13.0, walltime_norm: 2.1666666666666665 } -in.pair_python_long: { folder: examples/python, status: "completed, thermo checks passed", walltime: 4.0, walltime_norm: 0.6666666666666666 } -in.pair_python_melt: { folder: examples/python, status: "completed, 3 rel thermo checks failed", walltime: 28.0, walltime_norm: 4.666666666666667 } -in.pair_python_spce: { folder: examples/python, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.pair_python_table: { folder: examples/python, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.pair_python_coulomb: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 3.0, walltime_norm: 0.5 } +in.pair_python_harmonic: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 45.0, walltime_norm: 7.5 } +in.pair_python_hybrid: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 3 }, walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.pair_python_long: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 4.0, walltime_norm: 0.6666666666666666 } +in.pair_python_melt: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 3 }, walltime: 28.0, walltime_norm: 4.666666666666667 } +in.pair_python_spce: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.pair_python_table: { folder: examples/python, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } in.python: { folder: examples/python, status: "failed, ERROR on proc 0: Python evaluation of function loop failed (src/PYTHON/python_impl.cpp:384).", walltime: -1 } -in.bcc: { folder: examples/steinhardt, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.fcc: { folder: examples/steinhardt, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.icos: { folder: examples/steinhardt, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.bcc: { folder: examples/steinhardt, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.fcc: { folder: examples/steinhardt, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.icos: { folder: examples/steinhardt, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } in.kim-ex.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init LennardJones_Ar real (src/input.cpp:314)", walltime: -1 } in.kim-pm-property: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init LJ_Shifted_Bernardes_1958MedCutoff_Ar__MO_126566794224_004 metal (src/input.cpp:314)", walltime: -1 } in.kim-pm-query.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init SW_StillingerWeber_1985_Si__MO_405512056662_005 real (src/input.cpp:314)", walltime: -1 } @@ -740,70 +855,78 @@ in.kim-pm.melt: { folder: examples/kim, status: "failed, unknown command, packag in.kim-query: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal (src/input.cpp:314)", walltime: -1 } in.kim-sm.melt: { folder: examples/kim, status: "failed, unknown command, package not installed, ERROR: Unknown command: kim init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real (src/input.cpp:314)", walltime: -1 } in.lammps.melt: { folder: examples/kim, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.ellipse.gayberne: { folder: examples/ellipse, status: "completed, 2 rel thermo checks failed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.ellipse.resquared: { folder: examples/ellipse, status: "completed, 2 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.cos.1000SPCE: { folder: examples/VISCOSITY, status: "completed, 3 rel thermo checks failed", walltime: 36.0, walltime_norm: 6.0 } -in.einstein.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 38.0, walltime_norm: 6.333333333333333 } -in.gk.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 38.0, walltime_norm: 6.333333333333333 } -in.mp.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 5.0, walltime_norm: 0.8333333333333334 } -in.nemd.2d: { folder: examples/VISCOSITY, status: "completed, 8 rel thermo checks failed", walltime: 17.0, walltime_norm: 2.8333333333333335 } -in.wall.2d: { folder: examples/VISCOSITY, status: "completed, thermo checks passed", walltime: 10.0, walltime_norm: 1.6666666666666667 } -in.gcmc.co2: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 11.0, walltime_norm: 1.8333333333333333 } -in.gcmc.h2o: { folder: examples/mc, status: "failed, no Total wall time in the output.", walltime: -1 } -in.gcmc.lj: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 18.0, walltime_norm: 3.0 } -in.mixed: { folder: examples/mc, status: "failed, no Total wall time in the output.", walltime: -1 } -in.pure: { folder: examples/mc, status: "failed, no Total wall time in the output.", walltime: -1 } -in.sgcmc.eam: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 46.0, walltime_norm: 7.666666666666667 } -in.widom.lj: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 8.0, walltime_norm: 1.3333333333333333 } -in.widom.spce: { folder: examples/mc, status: "completed, thermo checks passed", walltime: 45.0, walltime_norm: 7.5 } -in.mc: { folder: examples/MC-LOOP, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.flow.couette: { folder: examples/flow, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.flow.pois: { folder: examples/flow, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } +in.ellipse.gayberne: { folder: examples/ellipse, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.ellipse.resquared: { folder: examples/ellipse, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 2 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.cos.1000SPCE: { folder: examples/VISCOSITY, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 36.0, walltime_norm: 6.0 } +in.einstein.2d: { folder: examples/VISCOSITY, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 39.0, walltime_norm: 6.5 } +in.gk.2d: { folder: examples/VISCOSITY, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 39.0, walltime_norm: 6.5 } +in.mp.2d: { folder: examples/VISCOSITY, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 5.0, walltime_norm: 0.8333333333333334 } +in.nemd.2d: { folder: examples/VISCOSITY, status: "completed", failed_checks: { abs_diff_failed: 8, rel_diff_failed: 8 }, walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.wall.2d: { folder: examples/VISCOSITY, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 10.0, walltime_norm: 1.6666666666666667 } +in.gcmc.co2: { folder: examples/mc, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.gcmc.h2o: { folder: examples/mc, status: "completed", failed_checks: { abs_diff_failed: 8, rel_diff_failed: 8 }, walltime: 138.0, walltime_norm: 23.0 } +in.gcmc.lj: { folder: examples/mc, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 11.0, walltime_norm: 1.8333333333333333 } +in.mixed: { folder: examples/mc, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 57.0, walltime_norm: 9.5 } +in.pure: { folder: examples/mc, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 57.0, walltime_norm: 9.5 } +in.sgcmc.eam: { folder: examples/mc, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 43.0, walltime_norm: 7.166666666666667 } +in.widom.lj: { folder: examples/mc, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 8.0, walltime_norm: 1.3333333333333333 } +in.widom.spce: { folder: examples/mc, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 44.0, walltime_norm: 7.333333333333333 } +in.mc: { folder: examples/MC-LOOP, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.flow.couette: { folder: examples/flow, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.flow.pois: { folder: examples/flow, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } in.prd: { folder: examples/prd, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } -in.C_SNAP: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 34.0, walltime_norm: 5.666666666666667 } -in.grid.snap: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.grid.tri: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.snap.InP.JCPA2020: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 15.0, walltime_norm: 2.5 } -in.snap.Mo_Chen: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.snap.Ta06A: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.snap.W.2940: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.snap.WBe.PRB2019: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.C_SNAP: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 34.0, walltime_norm: 5.666666666666667 } +in.grid.snap: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.grid.tri: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.snap.InP.JCPA2020: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 15.0, walltime_norm: 2.5 } +in.snap.Mo_Chen: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.snap.Ta06A: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.snap.W.2940: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.snap.WBe.PRB2019: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.snap.compute: { folder: examples/snap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } in.snap.compute.quadratic: { folder: examples/snap, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.snap.hybrid.WSNAP.HePair: { folder: examples/snap, status: "completed, thermo checks passed", walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.snap.hybrid.WSNAP.HePair: { folder: examples/snap, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } in.snap.scale.Ni_Zuo_JCPA2020: { folder: examples/snap, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 3.0, walltime_norm: 0.5 } in.lammps: { folder: examples/COUPLE/lammps_spparks, status: "failed, ERROR: Cannot open file data.lammps: No such file or directory (src/read_data.cpp:367).", walltime: -1 } in.spparks: { folder: examples/COUPLE/lammps_spparks, status: "failed, unknown command, package not installed, ERROR: Unknown command: seed 56789 (src/input.cpp:314)", walltime: -1 } in.lj: { folder: examples/COUPLE/plugin, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.fix_external: { folder: examples/COUPLE/python, status: "completed, but no Step nor Loop in the output.", walltime: 0.0, walltime_norm: 0.0 } -in.chain: { folder: examples/COUPLE/multiple, status: "failed, no Total wall time in the output.", walltime: -1 } +in.chain: { folder: examples/COUPLE/multiple, status: "failed, no Total wall time in the output, -------------------------------------------------------------------------- +MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD +with errorcode 1. + +NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. +You may or may not see output from other processes, depending on +exactly when Open MPI kills them. +-------------------------------------------------------------------------- +", walltime: -1 } in.lj: { folder: examples/COUPLE/simple, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.body: { folder: examples/body, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.cubes: { folder: examples/body, status: "completed, 2 rel thermo checks failed", walltime: 36.0, walltime_norm: 6.0 } -in.pour3d: { folder: examples/body, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.squares: { folder: examples/body, status: "completed, 3 rel thermo checks failed", walltime: 3.0, walltime_norm: 0.5 } -in.wall2d: { folder: examples/body, status: "completed, 3 rel thermo checks failed", walltime: 2.0, walltime_norm: 0.3333333333333333 } -in.atm: { folder: examples/atm, status: "completed, thermo checks passed", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.body: { folder: examples/body, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.cubes: { folder: examples/body, status: "completed", failed_checks: { abs_diff_failed: 2, rel_diff_failed: 2 }, walltime: 36.0, walltime_norm: 6.0 } +in.pour3d: { folder: examples/body, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.squares: { folder: examples/body, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 3.0, walltime_norm: 0.5 } +in.wall2d: { folder: examples/body, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 2.0, walltime_norm: 0.3333333333333333 } +in.atm: { folder: examples/atm, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 13.0, walltime_norm: 2.1666666666666665 } in.ar.lj: { folder: examples/UNITS, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.ar.metal: { folder: examples/UNITS, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.ar.real: { folder: examples/UNITS, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } -in.mos2-bulk: { folder: examples/threebody, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.mos2.rebomos: { folder: examples/threebody, status: "completed, thermo checks passed", walltime: 21.0, walltime_norm: 3.5 } +in.mos2-bulk: { folder: examples/threebody, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.mos2.rebomos: { folder: examples/threebody, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 21.0, walltime_norm: 3.5 } in.mos2.sw.mod: { folder: examples/threebody, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.threebody: { folder: examples/threebody, status: "completed, thermo checks passed", walltime: 1.0, walltime_norm: 0.16666666666666666 } -in.nemd: { folder: examples/nemd, status: "completed, 3 rel thermo checks failed", walltime: 0.0, walltime_norm: 0.0 } -in.obstacle: { folder: examples/obstacle, status: "completed, thermo checks passed", walltime: 0.0, walltime_norm: 0.0 } -in.crack: { folder: examples/crack, status: "completed, thermo checks passed", walltime: 3.0, walltime_norm: 0.5 } +in.threebody: { folder: examples/threebody, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 1.0, walltime_norm: 0.16666666666666666 } +in.nemd: { folder: examples/nemd, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 0.0, walltime_norm: 0.0 } +in.obstacle: { folder: examples/obstacle, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 0.0, walltime_norm: 0.0 } +in.crack: { folder: examples/crack, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 3.0, walltime_norm: 0.5 } in.elastic: { folder: examples/ELASTIC, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 0.0, walltime_norm: 0.0 } in.peri-pmb: { folder: examples/peri, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 9.0, walltime_norm: 1.5 } -in.peri.eps: { folder: examples/peri, status: "completed, 3 rel thermo checks failed", walltime: 21.0, walltime_norm: 3.5 } -in.peri.lps: { folder: examples/peri, status: "completed, 3 rel thermo checks failed", walltime: 17.0, walltime_norm: 2.8333333333333335 } -in.peri.pmb: { folder: examples/peri, status: "completed, thermo checks passed", walltime: 9.0, walltime_norm: 1.5 } -in.peri.ves: { folder: examples/peri, status: "completed, 3 rel thermo checks failed", walltime: 21.0, walltime_norm: 3.5 } +in.peri.eps: { folder: examples/peri, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 21.0, walltime_norm: 3.5 } +in.peri.lps: { folder: examples/peri, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 17.0, walltime_norm: 2.8333333333333335 } +in.peri.pmb: { folder: examples/peri, status: "completed", failed_checks: { abs_diff_failed: 0, rel_diff_failed: 0 }, walltime: 9.0, walltime_norm: 1.5 } +in.peri.ves: { folder: examples/peri, status: "completed", failed_checks: { abs_diff_failed: 3, rel_diff_failed: 3 }, walltime: 21.0, walltime_norm: 3.5 } in.hyper.global: { folder: examples/hyper, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 53.0, walltime_norm: 8.833333333333334 } -in.hyper.local: { folder: examples/hyper, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 14.0, walltime_norm: 2.3333333333333335 } -in.spce: { folder: examples/rdf-adf, status: "failed, no Total wall time in the output.", walltime: -1 } -in.elastic: { folder: examples/ELASTIC_T/BORN_MATRIX/Silicon, status: "failed, no Total wall time in the output.", walltime: -1 } -in.ljcov: { folder: examples/ELASTIC_T/BORN_MATRIX/Argon/Analytical, status: "failed, no Total wall time in the output.", walltime: -1 } -in.ljcov: { folder: examples/ELASTIC_T/BORN_MATRIX/Argon/Numdiff, status: "failed, no Total wall time in the output.", walltime: -1 } -in.elastic: { folder: examples/ELASTIC_T/DEFORMATION/Silicon, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 9.0, walltime_norm: 1.5 } +in.hyper.local: { folder: examples/hyper, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 13.0, walltime_norm: 2.1666666666666665 } +in.spce: { folder: examples/rdf-adf, status: "completed", failed_checks: { abs_diff_failed: 6, rel_diff_failed: 6 }, walltime: 88.0, walltime_norm: 14.666666666666666 } +in.elastic: { folder: examples/ELASTIC_T/BORN_MATRIX/Silicon, status: "completed, error parsing log.lammps into YAML", walltime: 62.0, walltime_norm: 10.333333333333334 } +in.ljcov: { folder: examples/ELASTIC_T/BORN_MATRIX/Argon/Analytical, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.ljcov: { folder: examples/ELASTIC_T/BORN_MATRIX/Argon/Numdiff, status: "failed, no Total wall time in the output, timeout (180s expired)", walltime: -1 } +in.elastic: { folder: examples/ELASTIC_T/DEFORMATION/Silicon, status: "completed, numerical checks skipped due to missing the reference log file", walltime: 6.0, walltime_norm: 1.0 } From 847ce1e3632e1421d17042b1bbfc57ba89290f2a Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 15:39:52 -0500 Subject: [PATCH 90/93] enable generating new reference log files if desirable --- tools/regression-tests/run_tests.py | 49 +++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 5f88f03f64..efbfb2ac25 100755 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -157,6 +157,8 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file using_markers = False EPSILON = np.float64(config['epsilon']) nugget = float(config['nugget']) + genref = config['genref'] + compiler = config['compiler'] use_valgrind = False if 'valgrind' in config['mpiexec']: use_valgrind = True @@ -325,7 +327,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file config['nprocs'] = saved_nprocs # check if the output contains ERROR - # there might not be a log.lammps generated at this point, or only log.lammps contains only the date line + # there might not be a log file generated at this point, or only the log file contains only the date line if "ERROR" in output: error_line = "" for line in output.split('\n'): @@ -357,16 +359,18 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue - # check if a log.lammps file exists in the current folder - if os.path.isfile("log.lammps") == False: - msg = f" failed, no log.lammps generated with {input_test} with return code {returncode}.\n" + # check if a log file log.{basename}.{nprocs} exists in the current folder + logfilename = f"log.{basename}.{nprocs}" + + if os.path.isfile(logfilename) == False: + msg = f" failed, no log.{basename}.{nprocs} generated with {input_test} with return code {returncode}.\n" print(msg) logger.info(msg) logger.info(f" Output:") logger.info(f" {output}") logger.info(f" Error:\n{error}") - msg = f"{input}: {{ folder: {input_folder}, status: \"failed, no log.lammps\", walltime: {walltime} }}\n" + msg = f"{input}: {{ folder: {input_folder}, status: \"failed, no log file generated\", walltime: {walltime} }}\n" progress.write(msg) progress.close() failure.write(msg) @@ -375,9 +379,14 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue else: - # save a copy of the log file for further inspection - cmd_str = f"cp log.lammps log.{basename}.{nprocs}" - p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) + # generate a new log file whose name has the format of log.{date}.{basename}.{compiler}.{nprocs} + if genref == True: + dmy = datetime.datetime.now() + date = dmy.strftime("%d%b%y") + # assume g++ for now, but is be available from running "lmp_binary -h" + compiler = "g++" + cmd_str = f"cp log.{basename}.{nprocs} log.{date}.{basename}.{compiler}.{nprocs}" + p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True) # if skip numerical checks, then skip the rest if skip_numerical_check == True: @@ -795,6 +804,7 @@ def get_lammps_build_configuration(lmp_binary): reading = False operating_system = "" GitInfo = "" + compiler = "g++" row = 0 for line in output: if line != "": @@ -810,7 +820,11 @@ def get_lammps_build_configuration(lmp_binary): operating_system = line if "Git info" in line: GitInfo = line - + if "Compiler" in line: + if "GNU" in line: + compiler = "g++" + if "Intel" in line: + compiler = "icc" row += 1 packages = packages.strip() @@ -824,20 +838,24 @@ def get_lammps_build_configuration(lmp_binary): row += 1 - return packages.split(" "), operating_system, GitInfo, compile_flags + return packages.split(" "), operating_system, GitInfo, compile_flags, compiler ''' launch LAMMPS using the configuration defined in the dictionary config with an input file TODO: - generate new reference values if needed ''' -def execute(lmp_binary, config, input_file_name, generate_ref_yaml=False): +def execute(lmp_binary, config, input_file_name, generate_ref=False): cmd_str = "" # check if mpiexec/mpirun is used if config['mpiexec']: cmd_str += config['mpiexec'] + " " + config['mpiexec_numproc_flag'] + " " + config['nprocs'] + " " - cmd_str += lmp_binary + " -in " + input_file_name + " " + config['args'] + # write to a log file with format log.{basename}.{nprocs} + basename = input_file_name[3:] + logfilename = f"log.{basename}.{config['nprocs']}" + + cmd_str += lmp_binary + " -in " + input_file_name + " " + config['args'] + " -log " + logfilename logger.info(f" Executing: {cmd_str}") # set a timeout (in seconds) for each run @@ -1325,10 +1343,11 @@ if __name__ == "__main__": lmp_binary = os.path.abspath(config['lmp_binary']) # print out the binary info - packages, operating_system, GitInfo, compile_flags = get_lammps_build_configuration(lmp_binary) + packages, operating_system, GitInfo, compile_flags, compiler = get_lammps_build_configuration(lmp_binary) print("\nLAMMPS build info:") print(f" - {operating_system}") print(f" - {GitInfo}") + print(f" - Compiler: {compiler}") print(f" - Active compile flags: {compile_flags}") print(f" - List of {len(packages)} installed packages:") all_pkgs = "" @@ -1336,6 +1355,10 @@ if __name__ == "__main__": all_pkgs += p + " " print(all_pkgs) + # augment config with additional keys + config['compiler'] = compiler + config['genref'] = genref + all_results = [] # save current working dir From 8e2dacd0e3efb5805e07d6d610a00fa1a1e2afcb Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 15:51:04 -0500 Subject: [PATCH 91/93] put some cosmetic stuffs --- tools/regression-tests/run_tests.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index efbfb2ac25..af9d8dd085 100755 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -23,6 +23,7 @@ Some benefits include: + keeping track of the testing progress to resume the testing from the last checkpoint (skipping completed runs) + distributing the input list across multiple processes by splitting the list of input scripts into separate runs (there are ~800 input scripts under the top-level examples) + + generating new reference log files if desirable Input arguments: + the path to a LAMMPS binary (can be relative to the working directory) @@ -794,7 +795,7 @@ def extract_data_to_yaml(inputFileName): return thermo ''' - return a tuple of the list of installed packages, OS, GitInfo and compile_flags + return a dictionary of the list of installed packages, OS, GitInfo, compiler and compile_flags ''' def get_lammps_build_configuration(lmp_binary): cmd_str = lmp_binary + " -h" @@ -805,6 +806,7 @@ def get_lammps_build_configuration(lmp_binary): operating_system = "" GitInfo = "" compiler = "g++" + compiler_full = "" row = 0 for line in output: if line != "": @@ -821,6 +823,7 @@ def get_lammps_build_configuration(lmp_binary): if "Git info" in line: GitInfo = line if "Compiler" in line: + compiler_full = line if "GNU" in line: compiler = "g++" if "Intel" in line: @@ -838,7 +841,17 @@ def get_lammps_build_configuration(lmp_binary): row += 1 - return packages.split(" "), operating_system, GitInfo, compile_flags, compiler + installed_packages = packages.split(" ") + build_config = { + 'installed_packages': installed_packages, + 'operating_system': operating_system, + 'git_info': GitInfo, + 'compiler': compiler, + 'compiler_full': compiler_full, + 'compile_flags': compile_flags, + } + + return build_config ''' launch LAMMPS using the configuration defined in the dictionary config with an input file @@ -1343,11 +1356,18 @@ if __name__ == "__main__": lmp_binary = os.path.abspath(config['lmp_binary']) # print out the binary info - packages, operating_system, GitInfo, compile_flags, compiler = get_lammps_build_configuration(lmp_binary) + build_config = get_lammps_build_configuration(lmp_binary) + packages = build_config['installed_packages'] + operating_system = build_config['installed_packages'] + GitInfo = build_config['git_info'] + compiler = build_config['compiler'] + compiler_full = build_config['compiler_full'] + compile_flags = build_config['compile_flags'] + print("\nLAMMPS build info:") print(f" - {operating_system}") print(f" - {GitInfo}") - print(f" - Compiler: {compiler}") + print(f" - Compiler: {compiler_full}") print(f" - Active compile flags: {compile_flags}") print(f" - List of {len(packages)} installed packages:") all_pkgs = "" From cbbea4771893d21c8a3386b164eb1ade3b68a4ce Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 16:22:35 -0500 Subject: [PATCH 92/93] fix the incorrect keys --- tools/regression-tests/run_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index af9d8dd085..37c1cd78a1 100755 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1358,7 +1358,7 @@ if __name__ == "__main__": # print out the binary info build_config = get_lammps_build_configuration(lmp_binary) packages = build_config['installed_packages'] - operating_system = build_config['installed_packages'] + operating_system = build_config['operating_system'] GitInfo = build_config['git_info'] compiler = build_config['compiler'] compiler_full = build_config['compiler_full'] @@ -1367,7 +1367,7 @@ if __name__ == "__main__": print("\nLAMMPS build info:") print(f" - {operating_system}") print(f" - {GitInfo}") - print(f" - Compiler: {compiler_full}") + print(f" - {compiler_full}") print(f" - Active compile flags: {compile_flags}") print(f" - List of {len(packages)} installed packages:") all_pkgs = "" From b39386afe517737daa1f7cfc96dc6f8f80930f7f Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 17:00:57 -0500 Subject: [PATCH 93/93] count all the runs with error and failed num checks as failed --- tools/regression-tests/run_tests.py | 37 +++++++++++++++++------------ 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 37c1cd78a1..d086f28b2c 100755 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -322,7 +322,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file result = TestResult(name=input, output="", time="", status="passed") # run the LAMMPS binary with the input script - cmd_str, output, error, returncode = execute(lmp_binary, config, input_test) + cmd_str, output, error, returncode, logfilename = execute(lmp_binary, config, input_test) # restore the nprocs value in the configuration config['nprocs'] = saved_nprocs @@ -361,8 +361,6 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file continue # check if a log file log.{basename}.{nprocs} exists in the current folder - logfilename = f"log.{basename}.{nprocs}" - if os.path.isfile(logfilename) == False: msg = f" failed, no log.{basename}.{nprocs} generated with {input_test} with return code {returncode}.\n" print(msg) @@ -460,11 +458,11 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file test_id = test_id + 1 continue - # parse thermo output in log.lammps from the run - thermo = extract_data_to_yaml("log.lammps") + # parse thermo output in the log file from the run + thermo = extract_data_to_yaml(logfilename) num_runs = len(thermo) - # the run completed normally but log.lammps may not be friendly for parsing into YAML format + # the run completed normally but the log file may not be friendly for parsing into YAML format if num_runs == 0: logger.info(f" The run terminated with {input_test} gives the following output:") logger.info(f" {output}") @@ -477,7 +475,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file msg += ", memory leaks detected" num_memleak = num_memleak + 1 - result.status = msg + ", error parsing log.lammps into YAML" + result.status = msg + f", error parsing {logfilename} into YAML" results.append(result) progress.write(f"{input}: {{ folder: {input_folder}, status: \"{result.status}\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() @@ -503,6 +501,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file results.append(result) progress.write(f"{input}: {{ folder: {input_folder}, status: \"completed, numerical checks skipped, unsupported log file format\", walltime: {walltime}, walltime_norm: {walltime_norm} }}\n") progress.close() + num_completed = num_completed + 1 num_error = num_error + 1 test_id = test_id + 1 continue @@ -526,16 +525,17 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file progress.write(msg) progress.close() failure.write(msg) + num_completed = num_completed + 1 num_error = num_error + 1 test_id = test_id + 1 continue - logger.info(f" Comparing thermo output from log.lammps against the reference log file {thermo_ref_file}") + logger.info(f" Comparing thermo output from {logfilename} against the reference log file {thermo_ref_file}") # check if the number of runs matches with that in the reference log file # maybe due to some changes to the input where the ref log file is not updated yet if num_runs != num_runs_ref: - logger.info(f" ERROR: Number of runs in log.lammps ({num_runs}) is different from that in the reference log ({num_runs_ref})." + logger.info(f" ERROR: Number of runs in {logfilename} ({num_runs}) is different from that in the reference log ({num_runs_ref})." " Check README in the folder, possibly due to using mpirun with partitions or parsing the wrong reference log file.") result.status = "failed, incomplete runs" results.append(result) @@ -551,7 +551,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_fields = len(thermo[0]['keywords']) num_fields_ref = len(thermo_ref[0]['keywords']) if num_fields != num_fields_ref: - logger.info(f" failed, number of thermo colums in log.lammps ({num_fields}) is different from that in the reference log ({num_fields_ref}) in the first run.") + logger.info(f" failed, number of thermo colums in {logfilename} ({num_fields}) is different from that in the reference log ({num_fields_ref}) in the first run.") logger.info(f" Check both log files for more details.") result.status = "failed, mismatched columns in the log files" results.append(result) @@ -586,7 +586,7 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file num_fields = len(thermo[irun]['keywords']) num_fields_ref = len(thermo_ref[irun]['keywords']) if num_fields != num_fields_ref: - logger.info(f" failed: Number of thermo columns in log.lammps ({num_fields})") + logger.info(f" failed: Number of thermo columns in {logfilename} ({num_fields})") logger.info(f" is different from that in the reference log ({num_fields_ref}) in run {irun}.") mismatched_columns = True continue @@ -676,6 +676,8 @@ def iterate(lmp_binary, input_folder, input_list, config, results, progress_file logger.info(msg) #result.status = f"all {num_checks} checks passed." num_passed = num_passed + 1 + else: + num_error = num_error + 1 result.status = f"abs_diff_failed: {num_abs_failed}, rel_diff_failed: {num_rel_failed}" results.append(result) @@ -855,8 +857,13 @@ def get_lammps_build_configuration(lmp_binary): ''' launch LAMMPS using the configuration defined in the dictionary config with an input file - TODO: - - generate new reference values if needed + return + - cmd_str: the complete command used to launch LAMMPS with the input + - stdout: stdout of the process + - stderr: stderr of the process + - errorcode: error code returned by the process + - logfilename: the log file name for the given input + to avoid duplicate writes to log.lammps if multiple workers execute in the same folder ''' def execute(lmp_binary, config, input_file_name, generate_ref=False): cmd_str = "" @@ -879,7 +886,7 @@ def execute(lmp_binary, config, input_file_name, generate_ref=False): try: p = subprocess.run(cmd_str, shell=True, text=True, capture_output=True, timeout=timeout) - return cmd_str, p.stdout, p.stderr, p.returncode + return cmd_str, p.stdout, p.stderr, p.returncode, logfilename except subprocess.TimeoutExpired: msg = f" Timeout for: {cmd_str} ({timeout}s expired)" @@ -887,7 +894,7 @@ def execute(lmp_binary, config, input_file_name, generate_ref=False): print(msg) error_str = f"timeout ({timeout}s expired)" - return cmd_str, "", error_str, -1 + return cmd_str, "", error_str, -1, logfilename ''' get the reference walltime by running the lmp_binary with config with an input script in the bench/ folder