From 6683976ce041a07824b7c7b1eb660057543921a1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 17 Apr 2024 04:45:16 -0400 Subject: [PATCH 001/326] use explicit imports instead of wildcards --- python/lammps/core.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/python/lammps/core.py b/python/lammps/core.py index 3498041454..626ece0770 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -18,12 +18,21 @@ from __future__ import print_function import os import sys -from ctypes import * # lgtm [py/polluting-import] -from os.path import dirname,abspath,join +from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast, sizeof, \ + create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, pythonapi +from os.path import dirname, abspath, join from inspect import getsourcefile -from .constants import * # lgtm [py/polluting-import] -from .data import * # lgtm [py/polluting-import] +from .constants import LAMMPS_AUTODETECT, LAMMPS_STRING, \ + LAMMPS_INT, LAMMPS_INT_2D, LAMMPS_DOUBLE, LAMMPS_DOUBLE_2D, LAMMPS_INT64, LAMMPS_INT64_2D, \ + LMP_STYLE_GLOBAL, LMP_STYLE_ATOM, LMP_STYLE_LOCAL, \ + LMP_TYPE_SCALAR, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, \ + LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS, \ + LMP_ERROR_WARNING, LMP_ERROR_ONE, LMP_ERROR_ALL, LMP_ERROR_WORLD, LMP_ERROR_UNIVERSE, \ + LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING, \ + get_ctypes_int + +from .data import NeighList # ------------------------------------------------------------------------- From ebd77afd58e387a458c9977be77e97e1fe7737ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 18 Apr 2024 00:09:07 -0400 Subject: [PATCH 002/326] initialize in the constructor for the class that defines variable --- src/ML-IAP/mliap_descriptor.cpp | 1 + src/ML-IAP/mliap_descriptor_ace.cpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-IAP/mliap_descriptor.cpp b/src/ML-IAP/mliap_descriptor.cpp index 34f81c3902..b8acd6329e 100644 --- a/src/ML-IAP/mliap_descriptor.cpp +++ b/src/ML-IAP/mliap_descriptor.cpp @@ -28,6 +28,7 @@ MLIAPDescriptor::MLIAPDescriptor(LAMMPS *lmp) : cutghost(nullptr), radelem(nullptr), wjelem(nullptr) { cutmax = 0.0; + allocated_elements = 0; } /* ---------------------------------------------------------------------- */ diff --git a/src/ML-IAP/mliap_descriptor_ace.cpp b/src/ML-IAP/mliap_descriptor_ace.cpp index aa30ac3f81..d815fb744c 100644 --- a/src/ML-IAP/mliap_descriptor_ace.cpp +++ b/src/ML-IAP/mliap_descriptor_ace.cpp @@ -57,7 +57,6 @@ MLIAPDescriptorACE::MLIAPDescriptorACE(LAMMPS *_lmp, char *yacefilename) : { acemlimpl = new ACE_ML_impl; - allocated_elements = 0; //read in file with CG coefficients or c_tilde coefficients ctilde_file = yacefilename; delete acemlimpl->basis_set; From d16d3ee02b7726c634084d453eab97e5b76187bc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 18 Apr 2024 00:19:42 -0400 Subject: [PATCH 003/326] replace wildcard imports with explicit ones --- python/lammps/numpy_wrapper.py | 8 ++++++-- python/lammps/pylammps.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/python/lammps/numpy_wrapper.py b/python/lammps/numpy_wrapper.py index 91042c43c8..4e33913a69 100644 --- a/python/lammps/numpy_wrapper.py +++ b/python/lammps/numpy_wrapper.py @@ -19,11 +19,15 @@ import warnings from ctypes import POINTER, c_void_p, c_char_p, c_double, c_int, c_int32, c_int64, cast +from .constants import LAMMPS_AUTODETECT, LAMMPS_INT, LAMMPS_INT_2D, \ + LAMMPS_DOUBLE, LAMMPS_DOUBLE_2D, LAMMPS_INT64, LAMMPS_INT64_2D, \ + LMP_STYLE_GLOBAL, LMP_STYLE_ATOM, LMP_STYLE_LOCAL, \ + LMP_TYPE_SCALAR, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, \ + LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS, \ + LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING -from .constants import * # lgtm [py/polluting-import] from .data import NeighList - class numpy_wrapper: """lammps API NumPy Wrapper diff --git a/python/lammps/pylammps.py b/python/lammps/pylammps.py index 7dd3823bbf..4b740f35ff 100644 --- a/python/lammps/pylammps.py +++ b/python/lammps/pylammps.py @@ -28,7 +28,7 @@ import tempfile from collections import namedtuple from .core import lammps -from .constants import * # lgtm [py/polluting-import] +from .constants import LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING # ------------------------------------------------------------------------- From 38874c5aaaf52fccaa8760929416d12bcacbd954 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 18 Apr 2024 00:27:38 -0400 Subject: [PATCH 004/326] make more consistent --- python/lammps/core.py | 6 ++---- python/lammps/pylammps.py | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/python/lammps/core.py b/python/lammps/core.py index 626ece0770..ae488dc241 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -23,16 +23,15 @@ from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast from os.path import dirname, abspath, join from inspect import getsourcefile -from .constants import LAMMPS_AUTODETECT, LAMMPS_STRING, \ +from lammps.constants import LAMMPS_AUTODETECT, LAMMPS_STRING, \ LAMMPS_INT, LAMMPS_INT_2D, LAMMPS_DOUBLE, LAMMPS_DOUBLE_2D, LAMMPS_INT64, LAMMPS_INT64_2D, \ LMP_STYLE_GLOBAL, LMP_STYLE_ATOM, LMP_STYLE_LOCAL, \ LMP_TYPE_SCALAR, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, \ LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS, \ - LMP_ERROR_WARNING, LMP_ERROR_ONE, LMP_ERROR_ALL, LMP_ERROR_WORLD, LMP_ERROR_UNIVERSE, \ LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING, \ get_ctypes_int -from .data import NeighList +from lammps.data import NeighList # ------------------------------------------------------------------------- @@ -2081,7 +2080,6 @@ class lammps(object): :param caller: reference to some object passed to the callback function :type: object, optional """ - import numpy as np def callback_wrapper(caller, ntimestep, nlocal, tag_ptr, x_ptr, fext_ptr): tag = self.numpy.iarray(self.c_tagint, tag_ptr, nlocal, 1) diff --git a/python/lammps/pylammps.py b/python/lammps/pylammps.py index 4b740f35ff..b5eabd6436 100644 --- a/python/lammps/pylammps.py +++ b/python/lammps/pylammps.py @@ -27,8 +27,8 @@ import sys import tempfile from collections import namedtuple -from .core import lammps -from .constants import LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING +from lammps.core import lammps +from lammps.constants import LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING # ------------------------------------------------------------------------- From 3116250da98be7e4de86d89e50a49f29bccbe2dc Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Fri, 19 Apr 2024 16:00:58 -0400 Subject: [PATCH 005/326] Initial port of kspace_modify collective yes to KOKKOS package --- src/KOKKOS/remap_kokkos.cpp | 359 ++++++++++++++++++++++++++++++------ src/KOKKOS/remap_kokkos.h | 8 +- 2 files changed, 309 insertions(+), 58 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 0d539ada83..7fbfdd1130 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -103,11 +103,7 @@ template void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d_in, typename FFT_AT::t_FFT_SCALAR_1d d_out, typename FFT_AT::t_FFT_SCALAR_1d d_buf, struct remap_plan_3d_kokkos *plan) { - // collective flag not yet supported - // use point-to-point communication - - int i,isend,irecv; typename FFT_AT::t_FFT_SCALAR_1d d_scratch; if (plan->memory == 0) @@ -116,70 +112,119 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d d_scratch = plan->d_scratch; // post all recvs into scratch space + // If not using GPU-aware MPI, mirror data to host FFT_SCALAR* v_scratch = d_scratch.data(); - if (!plan->usegpu_aware) { - plan->h_scratch = Kokkos::create_mirror_view(d_scratch); - v_scratch = plan->h_scratch.data(); - } - - for (irecv = 0; irecv < plan->nrecv; irecv++) { - FFT_SCALAR* scratch = v_scratch + plan->recv_bufloc[irecv]; - MPI_Irecv(scratch,plan->recv_size[irecv], - MPI_FFT_SCALAR,plan->recv_proc[irecv],0, - plan->comm,&plan->request[irecv]); - } - FFT_SCALAR* v_sendbuf = plan->d_sendbuf.data(); if (!plan->usegpu_aware) { + plan->h_scratch = Kokkos::create_mirror_view(d_scratch); plan->h_sendbuf = Kokkos::create_mirror_view(plan->d_sendbuf); + v_scratch = plan->h_scratch.data(); v_sendbuf = plan->h_sendbuf.data(); } - // send all messages to other procs + // use point-to-point communication - for (isend = 0; isend < plan->nsend; isend++) { - int in_offset = plan->send_offset[isend]; - plan->pack(d_in,in_offset, - plan->d_sendbuf,0,&plan->packplan[isend]); + if (!plan->usecollective) { + int i,isend,irecv; - if (!plan->usegpu_aware) - Kokkos::deep_copy(plan->h_sendbuf,plan->d_sendbuf); - MPI_Send(v_sendbuf,plan->send_size[isend],MPI_FFT_SCALAR, - plan->send_proc[isend],0,plan->comm); - } + for (irecv = 0; irecv < plan->nrecv; irecv++) { + FFT_SCALAR* scratch = v_scratch + plan->recv_bufloc[irecv]; + MPI_Irecv(scratch,plan->recv_size[irecv], + MPI_FFT_SCALAR,plan->recv_proc[irecv],0, + plan->comm,&plan->request[irecv]); + } - // copy in -> scratch -> out for self data + // send all messages to other procs - if (plan->self) { - isend = plan->nsend; - irecv = plan->nrecv; + for (isend = 0; isend < plan->nsend; isend++) { + int in_offset = plan->send_offset[isend]; + plan->pack(d_in,in_offset, + plan->d_sendbuf,0,&plan->packplan[isend]); - int in_offset = plan->send_offset[isend]; - int scratch_offset = plan->recv_bufloc[irecv]; - int out_offset = plan->recv_offset[irecv]; + if (!plan->usegpu_aware) + Kokkos::deep_copy(plan->h_sendbuf,plan->d_sendbuf); - plan->pack(d_in,in_offset, - d_scratch,scratch_offset, - &plan->packplan[isend]); - plan->unpack(d_scratch,scratch_offset, - d_out,out_offset,&plan->unpackplan[irecv]); - } + MPI_Send(v_sendbuf,plan->send_size[isend],MPI_FFT_SCALAR, + plan->send_proc[isend],0,plan->comm); + } - // unpack all messages from scratch -> out + // copy in -> scratch -> out for self data - for (i = 0; i < plan->nrecv; i++) { - MPI_Waitany(plan->nrecv,plan->request,&irecv,MPI_STATUS_IGNORE); + if (plan->self) { + isend = plan->nsend; + irecv = plan->nrecv; - int scratch_offset = plan->recv_bufloc[irecv]; - int out_offset = plan->recv_offset[irecv]; + int in_offset = plan->send_offset[isend]; + int scratch_offset = plan->recv_bufloc[irecv]; + int out_offset = plan->recv_offset[irecv]; - if (!plan->usegpu_aware) - Kokkos::deep_copy(d_scratch,plan->h_scratch); + plan->pack(d_in,in_offset, + d_scratch,scratch_offset, + &plan->packplan[isend]); + plan->unpack(d_scratch,scratch_offset, + d_out,out_offset,&plan->unpackplan[irecv]); + } - plan->unpack(d_scratch,scratch_offset, - d_out,out_offset,&plan->unpackplan[irecv]); + // unpack all messages from scratch -> out + + for (i = 0; i < plan->nrecv; i++) { + MPI_Waitany(plan->nrecv,plan->request,&irecv,MPI_STATUS_IGNORE); + + int scratch_offset = plan->recv_bufloc[irecv]; + int out_offset = plan->recv_offset[irecv]; + + if (!plan->usegpu_aware) + Kokkos::deep_copy(d_scratch,plan->h_scratch); + + plan->unpack(d_scratch,scratch_offset, + d_out,out_offset,&plan->unpackplan[irecv]); + } + } else { + if (plan->commringlen > 0) { + int isend,irecv; + + + // populate send data + // buffers are allocated and count/displacement buffers + // are populated in remap_3d_create_plan_kokkos + + int currentSendBufferOffset = 0; + for (isend = 0; isend < plan->commringlen; isend++) { + int foundentry = 0; + for (int i=0;(insend && !foundentry); i++) { + if (plan->send_proc[i] == plan->commringlist[isend]) { + foundentry = 1; + plan->pack(d_in,plan->send_offset[i], + plan->d_sendbuf,currentSendBufferOffset, + &plan->packplan[i]); + currentSendBufferOffset += plan->send_size[i]; + } + } + } + if (!plan->usegpu_aware) + Kokkos::deep_copy(plan->h_sendbuf,plan->d_sendbuf); + + MPI_Alltoallv(v_sendbuf, plan->sendcnts, plan->sdispls, + MPI_FFT_SCALAR, v_scratch, plan->rcvcnts, + plan->rdispls, MPI_FFT_SCALAR, plan->comm); + + // unpack the data from the recv buffer into out + + if (!plan->usegpu_aware) + Kokkos::deep_copy(d_scratch,plan->h_scratch); + + int currentRecvBufferOffset = 0; + for (irecv = 0; irecv < plan->commringlen; irecv++) { + if (plan->nrecvmap[irecv] > -1) { + plan->unpack(d_scratch,currentRecvBufferOffset, + d_out,plan->recv_offset[plan->nrecvmap[irecv]], + &plan->unpackplan[plan->nrecvmap[irecv]]); + currentRecvBufferOffset += plan->recv_size[plan->nrecvmap[irecv]]; + } + } + } } } @@ -223,7 +268,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat struct remap_plan_3d_kokkos *plan; struct extent_3d *inarray, *outarray; struct extent_3d in,out,overlap; - int i,iproc,nsend,nrecv,ibuf,size,me,nprocs; + int i,j,iproc,nsend,nrecv,ibuf,size,me,nprocs,isend,irecv; // query MPI info @@ -435,6 +480,108 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } + // create sub-comm rank list + if (plan->usecollective) { + plan->commringlist = nullptr; + + // merge recv and send rank lists + // ask Steve Plimpton about method to more accurately determine + // maximum number of procs contributing to pencil + + int maxcommsize = nprocs; + int *commringlist = (int *) malloc(maxcommsize*sizeof(int)); + int commringlen = 0; + + for (i = 0; i < nrecv; i++) { + commringlist[i] = plan->recv_proc[i]; + commringlen++; + } + + for (i = 0; i < nsend; i++) { + int foundentry = 0; + for (j = 0; j < commringlen;j++) + if (commringlist[j] == plan->send_proc[i]) foundentry = 1; + if (!foundentry) { + commringlist[commringlen] = plan->send_proc[i]; + commringlen++; + } + } + + // sort initial commringlist + + int swap = 0; + for (i = 0 ; i < (commringlen - 1); i++) { + for (j = 0 ; j < commringlen - i - 1; j++) { + if (commringlist[j] > commringlist[j+1]) { + swap = commringlist[j]; + commringlist[j] = commringlist[j+1]; + commringlist[j+1] = swap; + } + } + } + + // collide all inarray extents for the comm ring with all output + // extents and all outarray extents for the comm ring with all input + // extents - if there is a collison add the rank to the comm ring, + // keep iterating until nothing is added to commring + + int commringappend = 1; + while (commringappend) { + int newcommringlen = commringlen; + commringappend = 0; + for (i = 0; i < commringlen; i++) { + for (j = 0; j < nprocs; j++) { + if (remap_3d_collide(&inarray[commringlist[i]], + &outarray[j],&overlap)) { + int alreadyinlist = 0; + for (int k = 0; k < newcommringlen; k++) { + if (commringlist[k] == j) { + alreadyinlist = 1; + } + } + if (!alreadyinlist) { + commringlist[newcommringlen++] = j; + commringappend = 1; + } + } + if (remap_3d_collide(&outarray[commringlist[i]], + &inarray[j],&overlap)) { + int alreadyinlist = 0; + for (int k = 0 ; k < newcommringlen; k++) { + if (commringlist[k] == j) alreadyinlist = 1; + } + if (!alreadyinlist) { + commringlist[newcommringlen++] = j; + commringappend = 1; + } + } + } + } + commringlen = newcommringlen; + } + + // sort the final commringlist + + for (i = 0 ; i < ( commringlen - 1 ); i++) { + for (j = 0 ; j < commringlen - i - 1; j++) { + if (commringlist[j] > commringlist[j+1]) { + swap = commringlist[j]; + commringlist[j] = commringlist[j+1]; + commringlist[j+1] = swap; + } + } + } + + // resize commringlist to final size + + commringlist = (int *) realloc(commringlist, commringlen*sizeof(int)); + + // set the plan->commringlist + + plan->commringlen = commringlen; + plan->commringlist = commringlist; + } + // plan->nrecv = # of recvs not including self // for collectives include self in the nsend list @@ -455,15 +602,83 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat free(inarray); free(outarray); - // find biggest send message (not including self) and malloc space for it + // the plan->d_sendbuf and plan->d_recvbuf are used by both the + // collective & non-collective implementations. + // For non-collective, the buffer size is MAX(send_size) for any one send + // For collective, the buffer size is SUM(send_size) for all sends - size = 0; - for (nsend = 0; nsend < plan->nsend; nsend++) - size = MAX(size,plan->send_size[nsend]); + if (!plan->usecollective) { - if (size) { - plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); - if (!plan->d_sendbuf.data()) return nullptr; + // find biggest send message (not including self) and malloc space for it + + size = 0; + for (nsend = 0; nsend < plan->nsend; nsend++) + size = MAX(size,plan->send_size[nsend]); + + if (size) { + plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); + if (!plan->d_sendbuf.data()) return nullptr; + } + } else { + + // allocate buffer for all send messages (including self) + // the method to allocate receive scratch space is sufficient + // for collectives + + size = 0; + for (nsend = 0; nsend < plan->nsend; nsend++) + size += plan->send_size[nsend]; + + if (size) { + plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); + if (!plan->d_sendbuf.data()) return nullptr; + } + + // allocate buffers for send and receive counts, displacements + + if (plan->commringlen) { + plan->sendcnts = (int *) malloc(sizeof(int) * plan->commringlen); + plan->rcvcnts = (int *) malloc(sizeof(int) * plan->commringlen); + plan->sdispls = (int *) malloc(sizeof(int) * plan->commringlen); + plan->rdispls = (int *) malloc(sizeof(int) * plan->commringlen); + plan->nrecvmap = (int *) malloc(sizeof(int) * plan->commringlen); + + // populate buffers for send counts & displacements + + int currentSendBufferOffset = 0; + for (isend = 0; isend < plan->commringlen; isend++) { + plan->sendcnts[isend] = 0; + plan->sdispls[isend] = 0; + int foundentry = 0; + for (int i=0;(insend && !foundentry); i++) { + if (plan->send_proc[i] == plan->commringlist[isend]) { + foundentry = 1; + plan->sendcnts[isend] = plan->send_size[i]; + plan->sdispls[isend] = currentSendBufferOffset; + currentSendBufferOffset += plan->send_size[i]; + } + } + } + + // populate buffers for recv counts & displacements + + int currentRecvBufferOffset = 0; + for (irecv = 0; irecv < plan->commringlen; irecv++) { + plan->rcvcnts[irecv] = 0; + plan->rdispls[irecv] = 0; + plan->nrecvmap[irecv] = -1; + int foundentry = 0; + for (int i=0;(inrecv && !foundentry); i++) { + if (plan->recv_proc[i] == plan->commringlist[irecv]) { + foundentry = 1; + plan->rcvcnts[irecv] = plan->recv_size[i]; + plan->rdispls[irecv] = currentRecvBufferOffset; + currentRecvBufferOffset += plan->recv_size[i]; + plan->nrecvmap[irecv] = i; + } + } + } + } } // if requested, allocate internal scratch space for recvs, @@ -477,9 +692,28 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } + // if using collective and the commringlist is NOT empty create a + // communicator for the plan based off an MPI_Group created with + // ranks from the commringlist + + if ((plan->usecollective && (plan->commringlen > 0))) { + MPI_Group orig_group, new_group; + MPI_Comm_group(comm, &orig_group); + MPI_Group_incl(orig_group, plan->commringlen, + plan->commringlist, &new_group); + MPI_Comm_create(comm, new_group, &plan->comm); + } + + // if using collective and the comm ring list is empty create + // a communicator for the plan with an empty group + + else if ((plan->usecollective) && (plan->commringlen == 0)) { + MPI_Comm_create(comm, MPI_GROUP_EMPTY, &plan->comm); + } + // not using collective - dup comm - MPI_Comm_dup(comm,&plan->comm); + else MPI_Comm_dup(comm,&plan->comm); // return pointer to plan @@ -500,6 +734,17 @@ void RemapKokkos::remap_3d_destroy_plan_kokkos(struct remap_plan_3d_ if (!((plan->usecollective) && (plan->commringlen == 0))) MPI_Comm_free(&plan->comm); + if (plan->usecollective) { + if (plan->commringlist != nullptr) { + free(plan->commringlist); + free(plan->sendcnts); + free(plan->rcvcnts); + free(plan->sdispls); + free(plan->rdispls); + free(plan->nrecvmap); + } + } + // free internal arrays if (plan->nsend || plan->self) { diff --git a/src/KOKKOS/remap_kokkos.h b/src/KOKKOS/remap_kokkos.h index 77a3b1a37a..9dbd8d683c 100644 --- a/src/KOKKOS/remap_kokkos.h +++ b/src/KOKKOS/remap_kokkos.h @@ -52,9 +52,15 @@ struct remap_plan_3d_kokkos { int memory; // user provides scratch space or not MPI_Comm comm; // group of procs performing remap int usecollective; // use collective or point-to-point MPI + int usegpu_aware; // use GPU-Aware MPI or not + // variables specific to collective MPI int commringlen; // length of commringlist int *commringlist; // ranks on communication ring of this plan - int usegpu_aware; // use GPU-Aware MPI or not + int *sendcnts; // # of elements in send buffer for each rank + int *rcvcnts; // # of elements in recv buffer for each rank + int *sdispls; // extraction location in send buffer for each rank + int *rdispls; // extraction location in recv buffer for each rank + int *nrecvmap; // maps receive index to rank index }; template From 0af4fe270281e49ee9e0cb243742d1f19bd408a7 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Sat, 20 Apr 2024 09:39:41 -0600 Subject: [PATCH 006/326] Enable collective comm for PPPMKokkos --- src/KOKKOS/pppm_kokkos.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index 73e2c1f06f..5a936626d9 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -794,7 +794,6 @@ void PPPMKokkos::allocate() // 2nd FFT returns data in 3d brick decomposition // remap takes data from 3d brick to FFT decomposition - int collective_flag = 0; // not yet supported in Kokkos version int gpu_aware_flag = lmp->kokkos->gpu_aware_flag; int tmp; From f43fec417d33734a93b180b1759cab8dc34998b2 Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Mon, 22 Apr 2024 10:23:14 -0400 Subject: [PATCH 007/326] Updated collective flag keyword in KOKKOS PPPM to use setting from input file --- src/KOKKOS/pppm_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp index 73e2c1f06f..273a53ab8f 100644 --- a/src/KOKKOS/pppm_kokkos.cpp +++ b/src/KOKKOS/pppm_kokkos.cpp @@ -794,7 +794,7 @@ void PPPMKokkos::allocate() // 2nd FFT returns data in 3d brick decomposition // remap takes data from 3d brick to FFT decomposition - int collective_flag = 0; // not yet supported in Kokkos version + int collective_flag = force->kspace->collective_flag; int gpu_aware_flag = lmp->kokkos->gpu_aware_flag; int tmp; From f9e349a2bc5f9adc9d868dc6832af9a736873c26 Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Tue, 23 Apr 2024 13:42:46 -0400 Subject: [PATCH 008/326] Fix load balancing issue with 2D FFTs --- src/KSPACE/pppm.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 4fe5075f44..06cbf119e3 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -1389,10 +1389,7 @@ void PPPM::set_grid_local() // of the global FFT mesh that I own in x-pencil decomposition int npey_fft,npez_fft; - if (nz_pppm >= nprocs) { - npey_fft = 1; - npez_fft = nprocs; - } else procs2grid2d(nprocs,ny_pppm,nz_pppm,&npey_fft,&npez_fft); + procs2grid2d(nprocs,ny_pppm,nz_pppm,&npey_fft,&npez_fft); int me_y = me % npey_fft; int me_z = me / npey_fft; From 65e8a5c981c559ef3ba5f5d1b2fb9e26667206ce Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Tue, 23 Apr 2024 14:59:42 -0400 Subject: [PATCH 009/326] Relocated send & recv initializations to occur together, since they are independent --- src/KOKKOS/remap_kokkos.cpp | 97 ++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 55 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 7fbfdd1130..404fddd7c4 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -308,28 +308,29 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat out.khi = out_khi; out.ksize = out.khi - out.klo + 1; - // combine output extents across all procs - inarray = (struct extent_3d *) malloc(nprocs*sizeof(struct extent_3d)); if (inarray == nullptr) return nullptr; outarray = (struct extent_3d *) malloc(nprocs*sizeof(struct extent_3d)); if (outarray == nullptr) return nullptr; + // combine input & output extents across all procs + + MPI_Allgather(&in,sizeof(struct extent_3d),MPI_BYTE, + inarray,sizeof(struct extent_3d),MPI_BYTE,comm); MPI_Allgather(&out,sizeof(struct extent_3d),MPI_BYTE, outarray,sizeof(struct extent_3d),MPI_BYTE,comm); - // count send collides, including self + // count send & recv collides, including self nsend = 0; - iproc = me; + nrecv = 0; for (i = 0; i < nprocs; i++) { - iproc++; - if (iproc == nprocs) iproc = 0; - nsend += remap_3d_collide(&in,&outarray[iproc],&overlap); + nsend += remap_3d_collide(&in,&outarray[i],&overlap); + nrecv += remap_3d_collide(&out,&inarray[i],&overlap); } - // malloc space for send info + // malloc space for send & recv info if (nsend) { plan->pack = PackKokkos::pack_3d; @@ -344,6 +345,39 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->send_proc == nullptr || plan->packplan == nullptr) return nullptr; } + if (nrecv) { + if (permute == 0) + plan->unpack = PackKokkos::unpack_3d; + else if (permute == 1) { + if (nqty == 1) + plan->unpack = PackKokkos::unpack_3d_permute1_1; + else if (nqty == 2) + plan->unpack = PackKokkos::unpack_3d_permute1_2; + else + plan->unpack = PackKokkos::unpack_3d_permute1_n; + } + else if (permute == 2) { + if (nqty == 1) + plan->unpack = PackKokkos::unpack_3d_permute2_1; + else if (nqty == 2) + plan->unpack = PackKokkos::unpack_3d_permute2_2; + else + plan->unpack = PackKokkos::unpack_3d_permute2_n; + } + + plan->recv_offset = (int *) malloc(nrecv*sizeof(int)); + plan->recv_size = (int *) malloc(nrecv*sizeof(int)); + plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); + plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); + plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); + plan->unpackplan = (struct pack_plan_3d *) + malloc(nrecv*sizeof(struct pack_plan_3d)); + + if (plan->recv_offset == nullptr || plan->recv_size == nullptr || + plan->recv_proc == nullptr || plan->recv_bufloc == nullptr || + plan->request == nullptr || plan->unpackplan == nullptr) return nullptr; + } + // store send info, with self as last entry nsend = 0; @@ -377,55 +411,8 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } else plan->nsend = nsend; - // combine input extents across all procs - - MPI_Allgather(&in,sizeof(struct extent_3d),MPI_BYTE, - inarray,sizeof(struct extent_3d),MPI_BYTE,comm); - - // count recv collides, including self - - nrecv = 0; - iproc = me; - for (i = 0; i < nprocs; i++) { - iproc++; - if (iproc == nprocs) iproc = 0; - nrecv += remap_3d_collide(&out,&inarray[iproc],&overlap); - } - // malloc space for recv info - if (nrecv) { - if (permute == 0) - plan->unpack = PackKokkos::unpack_3d; - else if (permute == 1) { - if (nqty == 1) - plan->unpack = PackKokkos::unpack_3d_permute1_1; - else if (nqty == 2) - plan->unpack = PackKokkos::unpack_3d_permute1_2; - else - plan->unpack = PackKokkos::unpack_3d_permute1_n; - } - else if (permute == 2) { - if (nqty == 1) - plan->unpack = PackKokkos::unpack_3d_permute2_1; - else if (nqty == 2) - plan->unpack = PackKokkos::unpack_3d_permute2_2; - else - plan->unpack = PackKokkos::unpack_3d_permute2_n; - } - - plan->recv_offset = (int *) malloc(nrecv*sizeof(int)); - plan->recv_size = (int *) malloc(nrecv*sizeof(int)); - plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); - plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); - plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); - plan->unpackplan = (struct pack_plan_3d *) - malloc(nrecv*sizeof(struct pack_plan_3d)); - - if (plan->recv_offset == nullptr || plan->recv_size == nullptr || - plan->recv_proc == nullptr || plan->recv_bufloc == nullptr || - plan->request == nullptr || plan->unpackplan == nullptr) return nullptr; - } // store recv info, with self as last entry From 1a431b02aed66fba073f22458ffefb6c81021ba7 Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Wed, 24 Apr 2024 09:23:29 -0400 Subject: [PATCH 010/326] Split collective and non-collective into conditionals. Multi-node test passing. Beginning optimization of collective --- src/KOKKOS/remap_kokkos.cpp | 611 ++++++++++++++++++++++-------------- 1 file changed, 382 insertions(+), 229 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 404fddd7c4..1dcf6c4938 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -321,169 +321,349 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat MPI_Allgather(&out,sizeof(struct extent_3d),MPI_BYTE, outarray,sizeof(struct extent_3d),MPI_BYTE,comm); - // count send & recv collides, including self + // for efficiency, handle collective & non-collective setup separately - nsend = 0; - nrecv = 0; - for (i = 0; i < nprocs; i++) { - nsend += remap_3d_collide(&in,&outarray[i],&overlap); - nrecv += remap_3d_collide(&out,&inarray[i],&overlap); - } + if (!plan->usecollective) { + // count send & recv collides, including self - // malloc space for send & recv info - - if (nsend) { - plan->pack = PackKokkos::pack_3d; - - plan->send_offset = (int *) malloc(nsend*sizeof(int)); - plan->send_size = (int *) malloc(nsend*sizeof(int)); - plan->send_proc = (int *) malloc(nsend*sizeof(int)); - plan->packplan = (struct pack_plan_3d *) - malloc(nsend*sizeof(struct pack_plan_3d)); - - if (plan->send_offset == nullptr || plan->send_size == nullptr || - plan->send_proc == nullptr || plan->packplan == nullptr) return nullptr; - } - - if (nrecv) { - if (permute == 0) - plan->unpack = PackKokkos::unpack_3d; - else if (permute == 1) { - if (nqty == 1) - plan->unpack = PackKokkos::unpack_3d_permute1_1; - else if (nqty == 2) - plan->unpack = PackKokkos::unpack_3d_permute1_2; - else - plan->unpack = PackKokkos::unpack_3d_permute1_n; - } - else if (permute == 2) { - if (nqty == 1) - plan->unpack = PackKokkos::unpack_3d_permute2_1; - else if (nqty == 2) - plan->unpack = PackKokkos::unpack_3d_permute2_2; - else - plan->unpack = PackKokkos::unpack_3d_permute2_n; + nsend = 0; + nrecv = 0; + for (i = 0; i < nprocs; i++) { + nsend += remap_3d_collide(&in,&outarray[i],&overlap); + nrecv += remap_3d_collide(&out,&inarray[i],&overlap); } - plan->recv_offset = (int *) malloc(nrecv*sizeof(int)); - plan->recv_size = (int *) malloc(nrecv*sizeof(int)); - plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); - plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); - plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); - plan->unpackplan = (struct pack_plan_3d *) - malloc(nrecv*sizeof(struct pack_plan_3d)); + // malloc space for send & recv info - if (plan->recv_offset == nullptr || plan->recv_size == nullptr || - plan->recv_proc == nullptr || plan->recv_bufloc == nullptr || - plan->request == nullptr || plan->unpackplan == nullptr) return nullptr; - } + if (nsend) { + plan->pack = PackKokkos::pack_3d; - // store send info, with self as last entry + plan->send_offset = (int *) malloc(nsend*sizeof(int)); + plan->send_size = (int *) malloc(nsend*sizeof(int)); + plan->send_proc = (int *) malloc(nsend*sizeof(int)); + plan->packplan = (struct pack_plan_3d *) + malloc(nsend*sizeof(struct pack_plan_3d)); - nsend = 0; - iproc = me; - for (i = 0; i < nprocs; i++) { - iproc++; - if (iproc == nprocs) iproc = 0; - if (remap_3d_collide(&in,&outarray[iproc],&overlap)) { - plan->send_proc[nsend] = iproc; - plan->send_offset[nsend] = nqty * - ((overlap.klo-in.klo)*in.jsize*in.isize + - ((overlap.jlo-in.jlo)*in.isize + overlap.ilo-in.ilo)); - plan->packplan[nsend].nfast = nqty*overlap.isize; - plan->packplan[nsend].nmid = overlap.jsize; - plan->packplan[nsend].nslow = overlap.ksize; - plan->packplan[nsend].nstride_line = nqty*in.isize; - plan->packplan[nsend].nstride_plane = nqty*in.jsize*in.isize; - plan->packplan[nsend].nqty = nqty; - plan->send_size[nsend] = nqty*overlap.isize*overlap.jsize*overlap.ksize; - nsend++; + if (plan->send_offset == nullptr || plan->send_size == nullptr || + plan->send_proc == nullptr || plan->packplan == nullptr) return nullptr; } - } - // plan->nsend = # of sends not including self - - if (nsend && plan->send_proc[nsend-1] == me) { - if (plan->usecollective) // for collectives include self in nsend list - plan->nsend = nsend; - else - plan->nsend = nsend - 1; - } else - plan->nsend = nsend; - - // malloc space for recv info - - - // store recv info, with self as last entry - - ibuf = 0; - nrecv = 0; - iproc = me; - - for (i = 0; i < nprocs; i++) { - iproc++; - if (iproc == nprocs) iproc = 0; - if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { - plan->recv_proc[nrecv] = iproc; - plan->recv_bufloc[nrecv] = ibuf; - - if (permute == 0) { - plan->recv_offset[nrecv] = nqty * - ((overlap.klo-out.klo)*out.jsize*out.isize + - (overlap.jlo-out.jlo)*out.isize + (overlap.ilo-out.ilo)); - plan->unpackplan[nrecv].nfast = nqty*overlap.isize; - plan->unpackplan[nrecv].nmid = overlap.jsize; - plan->unpackplan[nrecv].nslow = overlap.ksize; - plan->unpackplan[nrecv].nstride_line = nqty*out.isize; - plan->unpackplan[nrecv].nstride_plane = nqty*out.jsize*out.isize; - plan->unpackplan[nrecv].nqty = nqty; - } + if (nrecv) { + if (permute == 0) + plan->unpack = PackKokkos::unpack_3d; else if (permute == 1) { - plan->recv_offset[nrecv] = nqty * - ((overlap.ilo-out.ilo)*out.ksize*out.jsize + - (overlap.klo-out.klo)*out.jsize + (overlap.jlo-out.jlo)); - plan->unpackplan[nrecv].nfast = overlap.isize; - plan->unpackplan[nrecv].nmid = overlap.jsize; - plan->unpackplan[nrecv].nslow = overlap.ksize; - plan->unpackplan[nrecv].nstride_line = nqty*out.jsize; - plan->unpackplan[nrecv].nstride_plane = nqty*out.ksize*out.jsize; - plan->unpackplan[nrecv].nqty = nqty; + if (nqty == 1) + plan->unpack = PackKokkos::unpack_3d_permute1_1; + else if (nqty == 2) + plan->unpack = PackKokkos::unpack_3d_permute1_2; + else + plan->unpack = PackKokkos::unpack_3d_permute1_n; } - else { - plan->recv_offset[nrecv] = nqty * - ((overlap.jlo-out.jlo)*out.isize*out.ksize + - (overlap.ilo-out.ilo)*out.ksize + (overlap.klo-out.klo)); - plan->unpackplan[nrecv].nfast = overlap.isize; - plan->unpackplan[nrecv].nmid = overlap.jsize; - plan->unpackplan[nrecv].nslow = overlap.ksize; - plan->unpackplan[nrecv].nstride_line = nqty*out.ksize; - plan->unpackplan[nrecv].nstride_plane = nqty*out.isize*out.ksize; - plan->unpackplan[nrecv].nqty = nqty; + else if (permute == 2) { + if (nqty == 1) + plan->unpack = PackKokkos::unpack_3d_permute2_1; + else if (nqty == 2) + plan->unpack = PackKokkos::unpack_3d_permute2_2; + else + plan->unpack = PackKokkos::unpack_3d_permute2_n; } - plan->recv_size[nrecv] = nqty*overlap.isize*overlap.jsize*overlap.ksize; - ibuf += plan->recv_size[nrecv]; - nrecv++; + plan->recv_offset = (int *) malloc(nrecv*sizeof(int)); + plan->recv_size = (int *) malloc(nrecv*sizeof(int)); + plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); + plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); + plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); + plan->unpackplan = (struct pack_plan_3d *) + malloc(nrecv*sizeof(struct pack_plan_3d)); + + if (plan->recv_offset == nullptr || plan->recv_size == nullptr || + plan->recv_proc == nullptr || plan->recv_bufloc == nullptr || + plan->request == nullptr || plan->unpackplan == nullptr) return nullptr; } - } - // create sub-comm rank list - if (plan->usecollective) { + // store send info, with self as last entry + + nsend = 0; + iproc = me; + for (i = 0; i < nprocs; i++) { + iproc++; + if (iproc == nprocs) iproc = 0; + if (remap_3d_collide(&in,&outarray[iproc],&overlap)) { + plan->send_proc[nsend] = iproc; + plan->send_offset[nsend] = nqty * + ((overlap.klo-in.klo)*in.jsize*in.isize + + ((overlap.jlo-in.jlo)*in.isize + overlap.ilo-in.ilo)); + plan->packplan[nsend].nfast = nqty*overlap.isize; + plan->packplan[nsend].nmid = overlap.jsize; + plan->packplan[nsend].nslow = overlap.ksize; + plan->packplan[nsend].nstride_line = nqty*in.isize; + plan->packplan[nsend].nstride_plane = nqty*in.jsize*in.isize; + plan->packplan[nsend].nqty = nqty; + plan->send_size[nsend] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + nsend++; + } + } + + // plan->nsend = # of sends not including self + + if (nsend && plan->send_proc[nsend-1] == me) plan->nsend = nsend - 1; + else plan->nsend = nsend; + + // store recv info, with self as last entry + + ibuf = 0; + nrecv = 0; + iproc = me; + + for (i = 0; i < nprocs; i++) { + iproc++; + if (iproc == nprocs) iproc = 0; + if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { + plan->recv_proc[nrecv] = iproc; + plan->recv_bufloc[nrecv] = ibuf; + + if (permute == 0) { + plan->recv_offset[nrecv] = nqty * + ((overlap.klo-out.klo)*out.jsize*out.isize + + (overlap.jlo-out.jlo)*out.isize + (overlap.ilo-out.ilo)); + plan->unpackplan[nrecv].nfast = nqty*overlap.isize; + plan->unpackplan[nrecv].nmid = overlap.jsize; + plan->unpackplan[nrecv].nslow = overlap.ksize; + plan->unpackplan[nrecv].nstride_line = nqty*out.isize; + plan->unpackplan[nrecv].nstride_plane = nqty*out.jsize*out.isize; + plan->unpackplan[nrecv].nqty = nqty; + } + else if (permute == 1) { + plan->recv_offset[nrecv] = nqty * + ((overlap.ilo-out.ilo)*out.ksize*out.jsize + + (overlap.klo-out.klo)*out.jsize + (overlap.jlo-out.jlo)); + plan->unpackplan[nrecv].nfast = overlap.isize; + plan->unpackplan[nrecv].nmid = overlap.jsize; + plan->unpackplan[nrecv].nslow = overlap.ksize; + plan->unpackplan[nrecv].nstride_line = nqty*out.jsize; + plan->unpackplan[nrecv].nstride_plane = nqty*out.ksize*out.jsize; + plan->unpackplan[nrecv].nqty = nqty; + } + else { + plan->recv_offset[nrecv] = nqty * + ((overlap.jlo-out.jlo)*out.isize*out.ksize + + (overlap.ilo-out.ilo)*out.ksize + (overlap.klo-out.klo)); + plan->unpackplan[nrecv].nfast = overlap.isize; + plan->unpackplan[nrecv].nmid = overlap.jsize; + plan->unpackplan[nrecv].nslow = overlap.ksize; + plan->unpackplan[nrecv].nstride_line = nqty*out.ksize; + plan->unpackplan[nrecv].nstride_plane = nqty*out.isize*out.ksize; + plan->unpackplan[nrecv].nqty = nqty; + } + + plan->recv_size[nrecv] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + ibuf += plan->recv_size[nrecv]; + nrecv++; + } + } + + // plan->nrecv = # of recvs not including self + + if (nrecv && plan->recv_proc[nrecv-1] == me) plan->nrecv = nrecv - 1; + else plan->nrecv = nrecv; + + // init remaining fields in remap plan + + plan->memory = memory; + + if (nrecv == plan->nrecv) plan->self = 0; + else plan->self = 1; + + + // the plan->d_sendbuf and plan->d_recvbuf are used by both the + // collective & non-collective implementations. + // For non-collective, the buffer size is MAX(send_size) for any one send + + // find biggest send message (not including self) and malloc space for it + + size = 0; + for (nsend = 0; nsend < plan->nsend; nsend++) + size = MAX(size,plan->send_size[nsend]); + + if (size) { + plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); + if (!plan->d_sendbuf.data()) return nullptr; + } + + // if requested, allocate internal scratch space for recvs, + // only need it if I will receive any data (including self) + + if (memory == 1) { + if (nrecv > 0) { + plan->d_scratch = + typename FFT_AT::t_FFT_SCALAR_1d("remap3d:scratch",nqty*out.isize*out.jsize*out.ksize); + if (!plan->d_scratch.data()) return nullptr; + } + } + + // Non-collectives do not use MPI Communicator Groups + + MPI_Comm_dup(comm,&plan->comm); + } else { + // count send & recv collides, including self + + nsend = 0; + nrecv = 0; + for (i = 0; i < nprocs; i++) { + nsend += remap_3d_collide(&in,&outarray[i],&overlap); + nrecv += remap_3d_collide(&out,&inarray[i],&overlap); + } + + // malloc space for send & recv info + + if (nsend) { + plan->pack = PackKokkos::pack_3d; + + plan->send_offset = (int *) malloc(nsend*sizeof(int)); + plan->send_size = (int *) malloc(nsend*sizeof(int)); + plan->send_proc = (int *) malloc(nsend*sizeof(int)); + plan->packplan = (struct pack_plan_3d *) + malloc(nsend*sizeof(struct pack_plan_3d)); + + if (plan->send_offset == nullptr || plan->send_size == nullptr || + plan->send_proc == nullptr || plan->packplan == nullptr) return nullptr; + } + + if (nrecv) { + if (permute == 0) + plan->unpack = PackKokkos::unpack_3d; + else if (permute == 1) { + if (nqty == 1) + plan->unpack = PackKokkos::unpack_3d_permute1_1; + else if (nqty == 2) + plan->unpack = PackKokkos::unpack_3d_permute1_2; + else + plan->unpack = PackKokkos::unpack_3d_permute1_n; + } + else if (permute == 2) { + if (nqty == 1) + plan->unpack = PackKokkos::unpack_3d_permute2_1; + else if (nqty == 2) + plan->unpack = PackKokkos::unpack_3d_permute2_2; + else + plan->unpack = PackKokkos::unpack_3d_permute2_n; + } + + plan->recv_offset = (int *) malloc(nrecv*sizeof(int)); + plan->recv_size = (int *) malloc(nrecv*sizeof(int)); + plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); + plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); + plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); + plan->unpackplan = (struct pack_plan_3d *) + malloc(nrecv*sizeof(struct pack_plan_3d)); + + if (plan->recv_offset == nullptr || plan->recv_size == nullptr || + plan->recv_proc == nullptr || plan->recv_bufloc == nullptr || + plan->request == nullptr || plan->unpackplan == nullptr) return nullptr; + } + + // store send info, with self as last entry + + nsend = 0; + iproc = me; + for (i = 0; i < nprocs; i++) { + iproc++; + if (iproc == nprocs) iproc = 0; + if (remap_3d_collide(&in,&outarray[iproc],&overlap)) { + plan->send_proc[nsend] = iproc; + plan->send_offset[nsend] = nqty * + ((overlap.klo-in.klo)*in.jsize*in.isize + + ((overlap.jlo-in.jlo)*in.isize + overlap.ilo-in.ilo)); + plan->packplan[nsend].nfast = nqty*overlap.isize; + plan->packplan[nsend].nmid = overlap.jsize; + plan->packplan[nsend].nslow = overlap.ksize; + plan->packplan[nsend].nstride_line = nqty*in.isize; + plan->packplan[nsend].nstride_plane = nqty*in.jsize*in.isize; + plan->packplan[nsend].nqty = nqty; + plan->send_size[nsend] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + nsend++; + } + } + + // plan->nsend = # of sends not including self + + plan->nsend = nsend; + + // store recv info, with self as last entry + + ibuf = 0; + nrecv = 0; + iproc = me; + + for (i = 0; i < nprocs; i++) { + iproc++; + if (iproc == nprocs) iproc = 0; + if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { + plan->recv_proc[nrecv] = iproc; + plan->recv_bufloc[nrecv] = ibuf; + + if (permute == 0) { + plan->recv_offset[nrecv] = nqty * + ((overlap.klo-out.klo)*out.jsize*out.isize + + (overlap.jlo-out.jlo)*out.isize + (overlap.ilo-out.ilo)); + plan->unpackplan[nrecv].nfast = nqty*overlap.isize; + plan->unpackplan[nrecv].nmid = overlap.jsize; + plan->unpackplan[nrecv].nslow = overlap.ksize; + plan->unpackplan[nrecv].nstride_line = nqty*out.isize; + plan->unpackplan[nrecv].nstride_plane = nqty*out.jsize*out.isize; + plan->unpackplan[nrecv].nqty = nqty; + } + else if (permute == 1) { + plan->recv_offset[nrecv] = nqty * + ((overlap.ilo-out.ilo)*out.ksize*out.jsize + + (overlap.klo-out.klo)*out.jsize + (overlap.jlo-out.jlo)); + plan->unpackplan[nrecv].nfast = overlap.isize; + plan->unpackplan[nrecv].nmid = overlap.jsize; + plan->unpackplan[nrecv].nslow = overlap.ksize; + plan->unpackplan[nrecv].nstride_line = nqty*out.jsize; + plan->unpackplan[nrecv].nstride_plane = nqty*out.ksize*out.jsize; + plan->unpackplan[nrecv].nqty = nqty; + } + else { + plan->recv_offset[nrecv] = nqty * + ((overlap.jlo-out.jlo)*out.isize*out.ksize + + (overlap.ilo-out.ilo)*out.ksize + (overlap.klo-out.klo)); + plan->unpackplan[nrecv].nfast = overlap.isize; + plan->unpackplan[nrecv].nmid = overlap.jsize; + plan->unpackplan[nrecv].nslow = overlap.ksize; + plan->unpackplan[nrecv].nstride_line = nqty*out.ksize; + plan->unpackplan[nrecv].nstride_plane = nqty*out.isize*out.ksize; + plan->unpackplan[nrecv].nqty = nqty; + } + + plan->recv_size[nrecv] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + ibuf += plan->recv_size[nrecv]; + nrecv++; + } + } + + // plan->nrecv = # of recvs not including self + // for collectives include self in the nsend list + + plan->nrecv = nrecv; + + // create sub-comm rank list + plan->commringlist = nullptr; - + // merge recv and send rank lists // ask Steve Plimpton about method to more accurately determine // maximum number of procs contributing to pencil - + int maxcommsize = nprocs; int *commringlist = (int *) malloc(maxcommsize*sizeof(int)); int commringlen = 0; - + for (i = 0; i < nrecv; i++) { commringlist[i] = plan->recv_proc[i]; commringlen++; } - + for (i = 0; i < nsend; i++) { int foundentry = 0; for (j = 0; j < commringlen;j++) @@ -493,9 +673,9 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat commringlen++; } } - + // sort initial commringlist - + int swap = 0; for (i = 0 ; i < (commringlen - 1); i++) { for (j = 0 ; j < commringlen - i - 1; j++) { @@ -506,12 +686,12 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } } - + // collide all inarray extents for the comm ring with all output // extents and all outarray extents for the comm ring with all input // extents - if there is a collison add the rank to the comm ring, // keep iterating until nothing is added to commring - + int commringappend = 1; while (commringappend) { int newcommringlen = commringlen; @@ -519,7 +699,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat for (i = 0; i < commringlen; i++) { for (j = 0; j < nprocs; j++) { if (remap_3d_collide(&inarray[commringlist[i]], - &outarray[j],&overlap)) { + &outarray[j],&overlap)) { int alreadyinlist = 0; for (int k = 0; k < newcommringlen; k++) { if (commringlist[k] == j) { @@ -532,7 +712,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } if (remap_3d_collide(&outarray[commringlist[i]], - &inarray[j],&overlap)) { + &inarray[j],&overlap)) { int alreadyinlist = 0; for (int k = 0 ; k < newcommringlen; k++) { if (commringlist[k] == j) alreadyinlist = 1; @@ -546,9 +726,9 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } commringlen = newcommringlen; } - + // sort the final commringlist - + for (i = 0 ; i < ( commringlen - 1 ); i++) { for (j = 0 ; j < commringlen - i - 1; j++) { if (commringlist[j] > commringlist[j+1]) { @@ -558,80 +738,52 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } } - + // resize commringlist to final size - + commringlist = (int *) realloc(commringlist, commringlen*sizeof(int)); - + // set the plan->commringlist - + plan->commringlen = commringlen; plan->commringlist = commringlist; - } - - // plan->nrecv = # of recvs not including self - // for collectives include self in the nsend list - - if (nrecv && plan->recv_proc[nrecv-1] == me) { - if (plan->usecollective) plan->nrecv = nrecv; - else plan->nrecv = nrecv - 1; - } else plan->nrecv = nrecv; - - // init remaining fields in remap plan - - plan->memory = memory; - - if (nrecv == plan->nrecv) plan->self = 0; - else plan->self = 1; - - // free locally malloced space - - free(inarray); - free(outarray); - - // the plan->d_sendbuf and plan->d_recvbuf are used by both the - // collective & non-collective implementations. - // For non-collective, the buffer size is MAX(send_size) for any one send - // For collective, the buffer size is SUM(send_size) for all sends - - if (!plan->usecollective) { - - // find biggest send message (not including self) and malloc space for it - - size = 0; - for (nsend = 0; nsend < plan->nsend; nsend++) - size = MAX(size,plan->send_size[nsend]); - - if (size) { - plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); - if (!plan->d_sendbuf.data()) return nullptr; - } - } else { - + + // init remaining fields in remap plan + + plan->memory = memory; + + if (nrecv == plan->nrecv) plan->self = 0; + else plan->self = 1; + + // the plan->d_sendbuf and plan->d_recvbuf are used by both the + // collective & non-collective implementations. + // For non-collective, the buffer size is MAX(send_size) for any one send + // For collective, the buffer size is SUM(send_size) for all sends + // allocate buffer for all send messages (including self) // the method to allocate receive scratch space is sufficient // for collectives - + size = 0; for (nsend = 0; nsend < plan->nsend; nsend++) size += plan->send_size[nsend]; - + if (size) { plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); if (!plan->d_sendbuf.data()) return nullptr; } - + // allocate buffers for send and receive counts, displacements - + if (plan->commringlen) { plan->sendcnts = (int *) malloc(sizeof(int) * plan->commringlen); plan->rcvcnts = (int *) malloc(sizeof(int) * plan->commringlen); plan->sdispls = (int *) malloc(sizeof(int) * plan->commringlen); plan->rdispls = (int *) malloc(sizeof(int) * plan->commringlen); plan->nrecvmap = (int *) malloc(sizeof(int) * plan->commringlen); - + // populate buffers for send counts & displacements - + int currentSendBufferOffset = 0; for (isend = 0; isend < plan->commringlen; isend++) { plan->sendcnts[isend] = 0; @@ -646,9 +798,9 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } } - + // populate buffers for recv counts & displacements - + int currentRecvBufferOffset = 0; for (irecv = 0; irecv < plan->commringlen; irecv++) { plan->rcvcnts[irecv] = 0; @@ -666,41 +818,42 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } } } - } - - // if requested, allocate internal scratch space for recvs, - // only need it if I will receive any data (including self) - - if (memory == 1) { - if (nrecv > 0) { - plan->d_scratch = - typename FFT_AT::t_FFT_SCALAR_1d("remap3d:scratch",nqty*out.isize*out.jsize*out.ksize); - if (!plan->d_scratch.data()) return nullptr; + + // if requested, allocate internal scratch space for recvs, + // only need it if I will receive any data (including self) + + if (memory == 1) { + if (nrecv > 0) { + plan->d_scratch = + typename FFT_AT::t_FFT_SCALAR_1d("remap3d:scratch",nqty*out.isize*out.jsize*out.ksize); + if (!plan->d_scratch.data()) return nullptr; + } } + + // if using collective and the commringlist is NOT empty create a + // communicator for the plan based off an MPI_Group created with + // ranks from the commringlist + + if (plan->commringlen > 0) { + MPI_Group orig_group, new_group; + MPI_Comm_group(comm, &orig_group); + MPI_Group_incl(orig_group, plan->commringlen, + plan->commringlist, &new_group); + MPI_Comm_create(comm, new_group, &plan->comm); + } + + // if using collective and the comm ring list is empty create + // a communicator for the plan with an empty group + + else + MPI_Comm_create(comm, MPI_GROUP_EMPTY, &plan->comm); + } - // if using collective and the commringlist is NOT empty create a - // communicator for the plan based off an MPI_Group created with - // ranks from the commringlist + // free locally malloced space - if ((plan->usecollective && (plan->commringlen > 0))) { - MPI_Group orig_group, new_group; - MPI_Comm_group(comm, &orig_group); - MPI_Group_incl(orig_group, plan->commringlen, - plan->commringlist, &new_group); - MPI_Comm_create(comm, new_group, &plan->comm); - } - - // if using collective and the comm ring list is empty create - // a communicator for the plan with an empty group - - else if ((plan->usecollective) && (plan->commringlen == 0)) { - MPI_Comm_create(comm, MPI_GROUP_EMPTY, &plan->comm); - } - - // not using collective - dup comm - - else MPI_Comm_dup(comm,&plan->comm); + free(inarray); + free(outarray); // return pointer to plan From 71f82e70ef896f76f22f98d60f2bf396ac20763f Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Thu, 25 Apr 2024 13:16:03 -0400 Subject: [PATCH 011/326] Refactored kspace+kokkos collective remap. Need to go back and tidy up memory allocations --- src/KOKKOS/remap_kokkos.cpp | 381 ++++++++++++++---------------------- 1 file changed, 150 insertions(+), 231 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 1dcf6c4938..fafb3dc37b 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -185,22 +185,17 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d if (plan->commringlen > 0) { int isend,irecv; - // populate send data // buffers are allocated and count/displacement buffers // are populated in remap_3d_create_plan_kokkos - int currentSendBufferOffset = 0; + int numpacked = 0; for (isend = 0; isend < plan->commringlen; isend++) { - int foundentry = 0; - for (int i=0;(insend && !foundentry); i++) { - if (plan->send_proc[i] == plan->commringlist[isend]) { - foundentry = 1; - plan->pack(d_in,plan->send_offset[i], - plan->d_sendbuf,currentSendBufferOffset, - &plan->packplan[i]); - currentSendBufferOffset += plan->send_size[i]; - } + if (plan->sendcnts[isend] > 0) { + plan->pack(d_in,plan->send_offset[numpacked], + plan->d_sendbuf,plan->sdispls[isend], + &plan->packplan[numpacked]); + numpacked++; } } if (!plan->usegpu_aware) @@ -215,13 +210,13 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d if (!plan->usegpu_aware) Kokkos::deep_copy(d_scratch,plan->h_scratch); - int currentRecvBufferOffset = 0; + numpacked = 0; for (irecv = 0; irecv < plan->commringlen; irecv++) { - if (plan->nrecvmap[irecv] > -1) { - plan->unpack(d_scratch,currentRecvBufferOffset, - d_out,plan->recv_offset[plan->nrecvmap[irecv]], - &plan->unpackplan[plan->nrecvmap[irecv]]); - currentRecvBufferOffset += plan->recv_size[plan->nrecvmap[irecv]]; + if (plan->rcvcnts[irecv] > 0) { + plan->unpack(d_scratch,plan->rdispls[irecv], + d_out,plan->recv_offset[numpacked], + &plan->unpackplan[numpacked]); + numpacked++; } } } @@ -505,31 +500,105 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat MPI_Comm_dup(comm,&plan->comm); } else { + + // Improved approach - use an AllReduce to aggregate which ranks need to be included + // To do this, we build the local proc's send/receive list, then do an AllReduce + // to create the send/recv count for the Alltoallv + + // local arrays to be used in the allreduce + // start with max length -- nprocs. Unused entries will be removed later + + int *local_cnts = (int*) malloc(2*nprocs*sizeof(int)); + if (local_cnts == nullptr) return nullptr; + int *local_sendcnts = local_cnts; + int *local_recvcnts = (local_cnts + nprocs); + + // local arrays used to store the results of the allreduce + + int *global_cnts = (int*) malloc(2*nprocs*sizeof(int)); + if (global_cnts == nullptr) return nullptr; + int *global_sendcnts = global_cnts; + int *global_recvcnts = (global_cnts + nprocs); + // count send & recv collides, including self nsend = 0; nrecv = 0; for (i = 0; i < nprocs; i++) { - nsend += remap_3d_collide(&in,&outarray[i],&overlap); - nrecv += remap_3d_collide(&out,&inarray[i],&overlap); + local_sendcnts[i] = remap_3d_collide(&in,&outarray[i],&overlap); + local_recvcnts[i] = remap_3d_collide(&out,&inarray[i],&overlap); + nsend += local_sendcnts[i]; + nrecv += local_recvcnts[i]; } - // malloc space for send & recv info + // perform an AllReduce to get the counts from all other processors and build sendcnts list + + MPI_Allreduce(local_cnts, global_cnts, 2*nprocs, MPI_INT, MPI_SUM, comm); - if (nsend) { + // now remove procs that are 0 in send or recv to create minimized sendcnts/recvcnts for AlltoAllv + // also builds commringlist -- which is already sorted + + int *commringlist = (int*) malloc(nprocs * sizeof(int)); + int commringlen = 0; + + for (i = 0; i < nprocs; i++) { + if (global_sendcnts[i] > 0 || global_recvcnts[i] > 0) { + commringlist[commringlen] = i; + commringlen++; + } + } + + // resize commringlist to final size + + commringlist = (int *) realloc(commringlist, commringlen*sizeof(int)); + + // set the plan->commringlist + + plan->commringlen = commringlen; + plan->commringlist = commringlist; + + // clean up local buffers that are finished + + local_sendcnts = nullptr; + local_recvcnts = nullptr; + global_recvcnts = nullptr; + global_sendcnts = nullptr; + free(local_cnts); + free(global_cnts); + + // malloc space for send & recv info + // if the current proc is involved in any way in the communication, allocate space + // because of the Alltoallv, both send and recv have to be initialized even if + // only one of those is performed + + if (nsend || nrecv) { + + // send space + + plan->nsend = nsend; plan->pack = PackKokkos::pack_3d; plan->send_offset = (int *) malloc(nsend*sizeof(int)); - plan->send_size = (int *) malloc(nsend*sizeof(int)); - plan->send_proc = (int *) malloc(nsend*sizeof(int)); + plan->send_size = (int *) malloc(plan->commringlen*sizeof(int)); + + plan->sendcnts = (int *) malloc(plan->commringlen*sizeof(int)); + plan->sdispls = (int *) malloc(plan->commringlen*sizeof(int)); + + // unused + plan->send_proc = (int *) malloc(plan->commringlen*sizeof(int)); + + // only used when sendcnt > 0 + plan->packplan = (struct pack_plan_3d *) malloc(nsend*sizeof(struct pack_plan_3d)); if (plan->send_offset == nullptr || plan->send_size == nullptr || plan->send_proc == nullptr || plan->packplan == nullptr) return nullptr; - } - if (nrecv) { + // recv space + + plan->nrecv = nrecv; + if (permute == 0) plan->unpack = PackKokkos::unpack_3d; else if (permute == 1) { @@ -550,10 +619,18 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } plan->recv_offset = (int *) malloc(nrecv*sizeof(int)); - plan->recv_size = (int *) malloc(nrecv*sizeof(int)); + plan->recv_size = (int *) malloc(plan->commringlen*sizeof(int)); + + plan->rcvcnts = (int *) malloc(plan->commringlen*sizeof(int)); + plan->rdispls = (int *) malloc(plan->commringlen*sizeof(int)); + + // unused plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); + + // only used when recvcnt > 0 + plan->unpackplan = (struct pack_plan_3d *) malloc(nrecv*sizeof(struct pack_plan_3d)); @@ -565,47 +642,56 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat // store send info, with self as last entry nsend = 0; - iproc = me; - for (i = 0; i < nprocs; i++) { - iproc++; - if (iproc == nprocs) iproc = 0; + ibuf = 0; + int total_send_size = 0; + for (i = 0; i < plan->commringlen; i++) { + iproc = plan->commringlist[i]; if (remap_3d_collide(&in,&outarray[iproc],&overlap)) { - plan->send_proc[nsend] = iproc; + //plan->send_proc[nsend] = i; + // number of entries required for this pack's 3-d coords plan->send_offset[nsend] = nqty * ((overlap.klo-in.klo)*in.jsize*in.isize + - ((overlap.jlo-in.jlo)*in.isize + overlap.ilo-in.ilo)); + ((overlap.jlo-in.jlo)*in.isize + overlap.ilo-in.ilo)); plan->packplan[nsend].nfast = nqty*overlap.isize; plan->packplan[nsend].nmid = overlap.jsize; plan->packplan[nsend].nslow = overlap.ksize; plan->packplan[nsend].nstride_line = nqty*in.isize; plan->packplan[nsend].nstride_plane = nqty*in.jsize*in.isize; plan->packplan[nsend].nqty = nqty; - plan->send_size[nsend] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + // total amount of overlap + plan->send_size[i] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + plan->sendcnts[i] = plan->send_size[i]; + plan->sdispls[i] = ibuf; + ibuf += plan->send_size[i]; nsend++; + } else { + plan->send_size[i] = 0; + plan->sdispls[i] = ibuf; + plan->sendcnts[i] = 0; } + total_send_size += plan->send_size[i]; + } + + if (total_send_size) { + plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",total_send_size); + if (!plan->d_sendbuf.data()) return nullptr; } - - // plan->nsend = # of sends not including self - - plan->nsend = nsend; // store recv info, with self as last entry ibuf = 0; nrecv = 0; - iproc = me; - for (i = 0; i < nprocs; i++) { - iproc++; - if (iproc == nprocs) iproc = 0; + for (i = 0; i < plan->commringlen; i++) { + iproc = plan->commringlist[i]; if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { - plan->recv_proc[nrecv] = iproc; + //plan->recv_proc[nrecv] = iproc; plan->recv_bufloc[nrecv] = ibuf; if (permute == 0) { plan->recv_offset[nrecv] = nqty * ((overlap.klo-out.klo)*out.jsize*out.isize + - (overlap.jlo-out.jlo)*out.isize + (overlap.ilo-out.ilo)); + (overlap.jlo-out.jlo)*out.isize + (overlap.ilo-out.ilo)); plan->unpackplan[nrecv].nfast = nqty*overlap.isize; plan->unpackplan[nrecv].nmid = overlap.jsize; plan->unpackplan[nrecv].nslow = overlap.ksize; @@ -616,7 +702,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat else if (permute == 1) { plan->recv_offset[nrecv] = nqty * ((overlap.ilo-out.ilo)*out.ksize*out.jsize + - (overlap.klo-out.klo)*out.jsize + (overlap.jlo-out.jlo)); + (overlap.klo-out.klo)*out.jsize + (overlap.jlo-out.jlo)); plan->unpackplan[nrecv].nfast = overlap.isize; plan->unpackplan[nrecv].nmid = overlap.jsize; plan->unpackplan[nrecv].nslow = overlap.ksize; @@ -627,7 +713,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat else { plan->recv_offset[nrecv] = nqty * ((overlap.jlo-out.jlo)*out.isize*out.ksize + - (overlap.ilo-out.ilo)*out.ksize + (overlap.klo-out.klo)); + (overlap.ilo-out.ilo)*out.ksize + (overlap.klo-out.klo)); plan->unpackplan[nrecv].nfast = overlap.isize; plan->unpackplan[nrecv].nmid = overlap.jsize; plan->unpackplan[nrecv].nslow = overlap.ksize; @@ -636,192 +722,26 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->unpackplan[nrecv].nqty = nqty; } - plan->recv_size[nrecv] = nqty*overlap.isize*overlap.jsize*overlap.ksize; - ibuf += plan->recv_size[nrecv]; + plan->recv_size[i] = nqty*overlap.isize*overlap.jsize*overlap.ksize; + plan->rcvcnts[i] = plan->recv_size[i]; + plan->rdispls[i] = ibuf; + ibuf += plan->recv_size[i]; nrecv++; + } else { + plan->recv_size[i] = 0; + plan->rcvcnts[i] = 0; + plan->rdispls[i] = ibuf; } } - - // plan->nrecv = # of recvs not including self - // for collectives include self in the nsend list - - plan->nrecv = nrecv; - - // create sub-comm rank list - - plan->commringlist = nullptr; - - // merge recv and send rank lists - // ask Steve Plimpton about method to more accurately determine - // maximum number of procs contributing to pencil - - int maxcommsize = nprocs; - int *commringlist = (int *) malloc(maxcommsize*sizeof(int)); - int commringlen = 0; - - for (i = 0; i < nrecv; i++) { - commringlist[i] = plan->recv_proc[i]; - commringlen++; - } - - for (i = 0; i < nsend; i++) { - int foundentry = 0; - for (j = 0; j < commringlen;j++) - if (commringlist[j] == plan->send_proc[i]) foundentry = 1; - if (!foundentry) { - commringlist[commringlen] = plan->send_proc[i]; - commringlen++; - } - } - - // sort initial commringlist - - int swap = 0; - for (i = 0 ; i < (commringlen - 1); i++) { - for (j = 0 ; j < commringlen - i - 1; j++) { - if (commringlist[j] > commringlist[j+1]) { - swap = commringlist[j]; - commringlist[j] = commringlist[j+1]; - commringlist[j+1] = swap; - } - } - } - - // collide all inarray extents for the comm ring with all output - // extents and all outarray extents for the comm ring with all input - // extents - if there is a collison add the rank to the comm ring, - // keep iterating until nothing is added to commring - - int commringappend = 1; - while (commringappend) { - int newcommringlen = commringlen; - commringappend = 0; - for (i = 0; i < commringlen; i++) { - for (j = 0; j < nprocs; j++) { - if (remap_3d_collide(&inarray[commringlist[i]], - &outarray[j],&overlap)) { - int alreadyinlist = 0; - for (int k = 0; k < newcommringlen; k++) { - if (commringlist[k] == j) { - alreadyinlist = 1; - } - } - if (!alreadyinlist) { - commringlist[newcommringlen++] = j; - commringappend = 1; - } - } - if (remap_3d_collide(&outarray[commringlist[i]], - &inarray[j],&overlap)) { - int alreadyinlist = 0; - for (int k = 0 ; k < newcommringlen; k++) { - if (commringlist[k] == j) alreadyinlist = 1; - } - if (!alreadyinlist) { - commringlist[newcommringlen++] = j; - commringappend = 1; - } - } - } - } - commringlen = newcommringlen; - } - - // sort the final commringlist - - for (i = 0 ; i < ( commringlen - 1 ); i++) { - for (j = 0 ; j < commringlen - i - 1; j++) { - if (commringlist[j] > commringlist[j+1]) { - swap = commringlist[j]; - commringlist[j] = commringlist[j+1]; - commringlist[j+1] = swap; - } - } - } - - // resize commringlist to final size - - commringlist = (int *) realloc(commringlist, commringlen*sizeof(int)); - - // set the plan->commringlist - - plan->commringlen = commringlen; - plan->commringlist = commringlist; - + // init remaining fields in remap plan - + plan->memory = memory; - - if (nrecv == plan->nrecv) plan->self = 0; - else plan->self = 1; - - // the plan->d_sendbuf and plan->d_recvbuf are used by both the - // collective & non-collective implementations. - // For non-collective, the buffer size is MAX(send_size) for any one send - // For collective, the buffer size is SUM(send_size) for all sends - - // allocate buffer for all send messages (including self) - // the method to allocate receive scratch space is sufficient - // for collectives - - size = 0; - for (nsend = 0; nsend < plan->nsend; nsend++) - size += plan->send_size[nsend]; - - if (size) { - plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",size); - if (!plan->d_sendbuf.data()) return nullptr; - } - - // allocate buffers for send and receive counts, displacements - - if (plan->commringlen) { - plan->sendcnts = (int *) malloc(sizeof(int) * plan->commringlen); - plan->rcvcnts = (int *) malloc(sizeof(int) * plan->commringlen); - plan->sdispls = (int *) malloc(sizeof(int) * plan->commringlen); - plan->rdispls = (int *) malloc(sizeof(int) * plan->commringlen); - plan->nrecvmap = (int *) malloc(sizeof(int) * plan->commringlen); - - // populate buffers for send counts & displacements - - int currentSendBufferOffset = 0; - for (isend = 0; isend < plan->commringlen; isend++) { - plan->sendcnts[isend] = 0; - plan->sdispls[isend] = 0; - int foundentry = 0; - for (int i=0;(insend && !foundentry); i++) { - if (plan->send_proc[i] == plan->commringlist[isend]) { - foundentry = 1; - plan->sendcnts[isend] = plan->send_size[i]; - plan->sdispls[isend] = currentSendBufferOffset; - currentSendBufferOffset += plan->send_size[i]; - } - } - } - - // populate buffers for recv counts & displacements - - int currentRecvBufferOffset = 0; - for (irecv = 0; irecv < plan->commringlen; irecv++) { - plan->rcvcnts[irecv] = 0; - plan->rdispls[irecv] = 0; - plan->nrecvmap[irecv] = -1; - int foundentry = 0; - for (int i=0;(inrecv && !foundentry); i++) { - if (plan->recv_proc[i] == plan->commringlist[irecv]) { - foundentry = 1; - plan->rcvcnts[irecv] = plan->recv_size[i]; - plan->rdispls[irecv] = currentRecvBufferOffset; - currentRecvBufferOffset += plan->recv_size[i]; - plan->nrecvmap[irecv] = i; - } - } - } - } - + plan->self = 0; + // if requested, allocate internal scratch space for recvs, // only need it if I will receive any data (including self) - + if (memory == 1) { if (nrecv > 0) { plan->d_scratch = @@ -829,25 +749,24 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat if (!plan->d_scratch.data()) return nullptr; } } - + // if using collective and the commringlist is NOT empty create a // communicator for the plan based off an MPI_Group created with // ranks from the commringlist - + if (plan->commringlen > 0) { MPI_Group orig_group, new_group; MPI_Comm_group(comm, &orig_group); MPI_Group_incl(orig_group, plan->commringlen, - plan->commringlist, &new_group); + plan->commringlist, &new_group); MPI_Comm_create(comm, new_group, &plan->comm); } - + // if using collective and the comm ring list is empty create // a communicator for the plan with an empty group - + else MPI_Comm_create(comm, MPI_GROUP_EMPTY, &plan->comm); - } // free locally malloced space @@ -881,7 +800,7 @@ void RemapKokkos::remap_3d_destroy_plan_kokkos(struct remap_plan_3d_ free(plan->rcvcnts); free(plan->sdispls); free(plan->rdispls); - free(plan->nrecvmap); + //free(plan->nrecvmap); } } From 3f9d96d38db993c6dbc91145017d4b9fe0bc3b79 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 24 Apr 2024 01:55:13 -0400 Subject: [PATCH 012/326] make pip install packages in virtual environment --- .github/workflows/unittest-macos.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/unittest-macos.yml b/.github/workflows/unittest-macos.yml index f9c2a838d6..0a9d31bd84 100644 --- a/.github/workflows/unittest-macos.yml +++ b/.github/workflows/unittest-macos.yml @@ -43,6 +43,8 @@ jobs: working-directory: build run: | ccache -z + python3 -m venv macosenv + source macosenv/bin/activate python3 -m pip install numpy python3 -m pip install pyyaml cmake -C ../cmake/presets/clang.cmake \ From 8c3dab03b7969d3c52291f1407e15608393de2bd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 24 Apr 2024 02:45:36 -0400 Subject: [PATCH 013/326] downgrade macOS to version 13 --- .github/workflows/unittest-macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unittest-macos.yml b/.github/workflows/unittest-macos.yml index 0a9d31bd84..b0bc4b2727 100644 --- a/.github/workflows/unittest-macos.yml +++ b/.github/workflows/unittest-macos.yml @@ -15,7 +15,7 @@ jobs: build: name: MacOS Unit Test if: ${{ github.repository == 'lammps/lammps' }} - runs-on: macos-latest + runs-on: macos-13 env: CCACHE_DIR: ${{ github.workspace }}/.ccache From bd52e31128f19b6f7b87200f13f8ac9f8f8f9db6 Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Sat, 11 May 2024 20:58:47 -0400 Subject: [PATCH 014/326] Added optimization to collective to local copy to self --- src/KOKKOS/remap_kokkos.cpp | 46 ++++++++++++++++++++++++++++++++++--- src/KOKKOS/remap_kokkos.h | 3 +++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index fafb3dc37b..39b3aff4fa 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -105,6 +105,8 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d { typename FFT_AT::t_FFT_SCALAR_1d d_scratch; + int me; + MPI_Comm_rank(plan->comm,&me); if (plan->memory == 0) d_scratch = d_buf; @@ -191,13 +193,17 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d int numpacked = 0; for (isend = 0; isend < plan->commringlen; isend++) { - if (plan->sendcnts[isend] > 0) { + if (plan->sendcnts[isend]) { plan->pack(d_in,plan->send_offset[numpacked], plan->d_sendbuf,plan->sdispls[isend], &plan->packplan[numpacked]); numpacked++; } + else if (plan->commringlist[isend] == me && plan->self) { + numpacked++; + } } + if (!plan->usegpu_aware) Kokkos::deep_copy(plan->h_sendbuf,plan->d_sendbuf); @@ -210,14 +216,28 @@ void RemapKokkos::remap_3d_kokkos(typename FFT_AT::t_FFT_SCALAR_1d d if (!plan->usegpu_aware) Kokkos::deep_copy(d_scratch,plan->h_scratch); + // copy in -> scratch -> out for self data + + if (plan->self) { + plan->pack(d_in,plan->send_offset[plan->selfnsendloc], + plan->d_sendbuf,plan->sdispls[plan->selfcommringloc], + &plan->packplan[plan->selfnsendloc]); + plan->unpack(plan->d_sendbuf,plan->sdispls[plan->selfcommringloc], + d_out,plan->recv_offset[plan->selfnrecvloc], + &plan->unpackplan[plan->selfnrecvloc]); + } + numpacked = 0; for (irecv = 0; irecv < plan->commringlen; irecv++) { - if (plan->rcvcnts[irecv] > 0) { + if (plan->rcvcnts[irecv]) { plan->unpack(d_scratch,plan->rdispls[irecv], d_out,plan->recv_offset[numpacked], &plan->unpackplan[numpacked]); numpacked++; } + else if (plan->commringlist[irecv] == me && plan->self) { + numpacked++; + } } } } @@ -575,6 +595,10 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat // send space + plan->selfcommringloc = -1; + plan->selfnsendloc = -1; + plan->selfnrecvloc = -1; + plan->nsend = nsend; plan->pack = PackKokkos::pack_3d; @@ -646,6 +670,10 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat int total_send_size = 0; for (i = 0; i < plan->commringlen; i++) { iproc = plan->commringlist[i]; + if (iproc == me) { + plan->selfcommringloc = i; + plan->selfnsendloc = nsend; + } if (remap_3d_collide(&in,&outarray[iproc],&overlap)) { //plan->send_proc[nsend] = i; // number of entries required for this pack's 3-d coords @@ -684,6 +712,9 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat for (i = 0; i < plan->commringlen; i++) { iproc = plan->commringlist[i]; + if (iproc == me) { + plan->selfnrecvloc = nrecv; + } if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { //plan->recv_proc[nrecv] = iproc; plan->recv_bufloc[nrecv] = ibuf; @@ -737,7 +768,16 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat // init remaining fields in remap plan plan->memory = memory; - plan->self = 0; + //plan->self = 0; + if (plan->sendcnts[plan->selfcommringloc]) { + plan->self = 1; + plan->sendcnts[plan->selfcommringloc] = 0; + plan->rcvcnts[plan->selfcommringloc] = 0; + } + else { + plan->self = 0; + } + // if requested, allocate internal scratch space for recvs, // only need it if I will receive any data (including self) diff --git a/src/KOKKOS/remap_kokkos.h b/src/KOKKOS/remap_kokkos.h index 9dbd8d683c..737b45a398 100644 --- a/src/KOKKOS/remap_kokkos.h +++ b/src/KOKKOS/remap_kokkos.h @@ -61,6 +61,9 @@ struct remap_plan_3d_kokkos { int *sdispls; // extraction location in send buffer for each rank int *rdispls; // extraction location in recv buffer for each rank int *nrecvmap; // maps receive index to rank index + int selfcommringloc; + int selfnsendloc; + int selfnrecvloc; }; template From c9049c090dc8d7a6b5d59d8517739e20861162b8 Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Mon, 13 May 2024 15:47:25 -0400 Subject: [PATCH 015/326] Cleaned up memory deallocation logic, improved comments on remap_kokkos.h for collective fields --- src/KOKKOS/remap_kokkos.cpp | 54 ++++++++++++++++++++----------------- src/KOKKOS/remap_kokkos.h | 10 +++---- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 39b3aff4fa..7ebe35dddb 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -608,9 +608,6 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->sendcnts = (int *) malloc(plan->commringlen*sizeof(int)); plan->sdispls = (int *) malloc(plan->commringlen*sizeof(int)); - // unused - plan->send_proc = (int *) malloc(plan->commringlen*sizeof(int)); - // only used when sendcnt > 0 plan->packplan = (struct pack_plan_3d *) @@ -648,11 +645,6 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->rcvcnts = (int *) malloc(plan->commringlen*sizeof(int)); plan->rdispls = (int *) malloc(plan->commringlen*sizeof(int)); - // unused - plan->recv_proc = (int *) malloc(nrecv*sizeof(int)); - plan->recv_bufloc = (int *) malloc(nrecv*sizeof(int)); - plan->request = (MPI_Request *) malloc(nrecv*sizeof(MPI_Request)); - // only used when recvcnt > 0 plan->unpackplan = (struct pack_plan_3d *) @@ -768,7 +760,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat // init remaining fields in remap plan plan->memory = memory; - //plan->self = 0; + if (plan->sendcnts[plan->selfcommringloc]) { plan->self = 1; plan->sendcnts[plan->selfcommringloc] = 0; @@ -840,26 +832,38 @@ void RemapKokkos::remap_3d_destroy_plan_kokkos(struct remap_plan_3d_ free(plan->rcvcnts); free(plan->sdispls); free(plan->rdispls); - //free(plan->nrecvmap); } - } - // free internal arrays + if (plan->nsend) { + free(plan->send_offset); + free(plan->send_size); + free(plan->packplan); + } - if (plan->nsend || plan->self) { - free(plan->send_offset); - free(plan->send_size); - free(plan->send_proc); - free(plan->packplan); - } + if (plan->nrecv) { + free(plan->recv_offset); + free(plan->recv_size); + free(plan->unpackplan); + } + } else { + + // free arrays used in pt2pt communication - if (plan->nrecv || plan->self) { - free(plan->recv_offset); - free(plan->recv_size); - free(plan->recv_proc); - free(plan->recv_bufloc); - free(plan->request); - free(plan->unpackplan); + if (plan->nsend || plan->self) { + free(plan->send_offset); + free(plan->send_size); + free(plan->send_proc); + free(plan->packplan); + } + + if (plan->nrecv || plan->self) { + free(plan->recv_offset); + free(plan->recv_size); + free(plan->recv_proc); + free(plan->recv_bufloc); + free(plan->request); + free(plan->unpackplan); + } } // free plan itself diff --git a/src/KOKKOS/remap_kokkos.h b/src/KOKKOS/remap_kokkos.h index 737b45a398..b0ccdb342d 100644 --- a/src/KOKKOS/remap_kokkos.h +++ b/src/KOKKOS/remap_kokkos.h @@ -44,6 +44,7 @@ struct remap_plan_3d_kokkos { int *recv_size; // size of each recv message int *recv_proc; // proc to recv each message from int *recv_bufloc; // offset in scratch buf for each recv + int *nrecvmap; // maps receive index to rank index MPI_Request *request; // MPI request for each posted recv struct pack_plan_3d *unpackplan; // unpack plan for each recv message int nrecv; // # of recvs from other procs @@ -53,17 +54,16 @@ struct remap_plan_3d_kokkos { MPI_Comm comm; // group of procs performing remap int usecollective; // use collective or point-to-point MPI int usegpu_aware; // use GPU-Aware MPI or not - // variables specific to collective MPI + // variables for collective MPI only int commringlen; // length of commringlist int *commringlist; // ranks on communication ring of this plan int *sendcnts; // # of elements in send buffer for each rank int *rcvcnts; // # of elements in recv buffer for each rank int *sdispls; // extraction location in send buffer for each rank int *rdispls; // extraction location in recv buffer for each rank - int *nrecvmap; // maps receive index to rank index - int selfcommringloc; - int selfnsendloc; - int selfnrecvloc; + int selfcommringloc; // current proc's location in commringlist + int selfnsendloc; // current proc's location in send lists + int selfnrecvloc; // current proc's location in recv lists }; template From 7da7e69ccb9594d763b0bdcce5c540d9658e758f Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 26 Jun 2024 15:14:55 -0400 Subject: [PATCH 016/326] Fix integer overflow for large ReaxFF systems with KOKKOS package --- src/KOKKOS/fix_acks2_reaxff_kokkos.cpp | 70 +++++++++++++------------- src/KOKKOS/fix_acks2_reaxff_kokkos.h | 27 +++++----- src/KOKKOS/fix_qeq_reaxff_kokkos.cpp | 41 +++++++-------- src/KOKKOS/fix_qeq_reaxff_kokkos.h | 19 +++---- src/KOKKOS/kokkos.cpp | 35 +++++++------ src/KOKKOS/kokkos.h | 2 +- src/KOKKOS/kokkos_type.h | 29 +++++++++++ 7 files changed, 128 insertions(+), 95 deletions(-) diff --git a/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp b/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp index 308df20c0e..c0b263d736 100644 --- a/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp @@ -53,7 +53,8 @@ FixACKS2ReaxFFKokkos(LAMMPS *lmp, int narg, char **arg) : datamask_read = X_MASK | V_MASK | F_MASK | MASK_MASK | Q_MASK | TYPE_MASK | TAG_MASK; datamask_modify = Q_MASK | X_MASK; - nmax = m_cap = 0; + nmax = 0; + m_cap_big = 0; allocated_flag = 0; nprev = 4; @@ -66,7 +67,7 @@ FixACKS2ReaxFFKokkos(LAMMPS *lmp, int narg, char **arg) : buf = new double[2*nprev]; prev_last_rows_rank = 0; - d_mfill_offset = typename AT::t_int_scalar("acks2/kk:mfill_offset"); + d_mfill_offset = typename AT::t_bigint_scalar("acks2/kk:mfill_offset"); } /* ---------------------------------------------------------------------- */ @@ -418,10 +419,10 @@ void FixACKS2ReaxFFKokkos::pre_force(int /*vflag*/) template KOKKOS_INLINE_FUNCTION -void FixACKS2ReaxFFKokkos::num_neigh_item(int ii, int &maxneigh) const +void FixACKS2ReaxFFKokkos::num_neigh_item(int ii, bigint &totneigh) const { const int i = d_ilist[ii]; - maxneigh += d_numneigh[i]; + totneigh += d_numneigh[i]; } /* ---------------------------------------------------------------------- */ @@ -433,39 +434,39 @@ void FixACKS2ReaxFFKokkos::allocate_matrix() // determine the total space for the H matrix - m_cap = 0; + m_cap_big = 0; // limit scope of functor to allow deallocation of views { FixACKS2ReaxFFKokkosNumNeighFunctor neigh_functor(this); - Kokkos::parallel_reduce(nn,neigh_functor,m_cap); + Kokkos::parallel_reduce(nn,neigh_functor,m_cap_big); } // deallocate first to reduce memory overhead - d_firstnbr = typename AT::t_int_1d(); + d_firstnbr = typename AT::t_bigint_1d(); d_numnbrs = typename AT::t_int_1d(); d_jlist = typename AT::t_int_1d(); d_val = typename AT::t_ffloat_1d(); - d_firstnbr_X = typename AT::t_int_1d(); + d_firstnbr_X = typename AT::t_bigint_1d(); d_numnbrs_X = typename AT::t_int_1d(); d_jlist_X = typename AT::t_int_1d(); d_val_X = typename AT::t_ffloat_1d(); // H matrix - d_firstnbr = typename AT::t_int_1d("acks2/kk:firstnbr",nmax); + d_firstnbr = typename AT::t_bigint_1d("acks2/kk:firstnbr",nmax); d_numnbrs = typename AT::t_int_1d("acks2/kk:numnbrs",nmax); - d_jlist = typename AT::t_int_1d("acks2/kk:jlist",m_cap); - d_val = typename AT::t_ffloat_1d("acks2/kk:val",m_cap); + d_jlist = typename AT::t_int_1d("acks2/kk:jlist",m_cap_big); + d_val = typename AT::t_ffloat_1d("acks2/kk:val",m_cap_big); // X matrix - d_firstnbr_X = typename AT::t_int_1d("acks2/kk:firstnbr_X",nmax); + d_firstnbr_X = typename AT::t_bigint_1d("acks2/kk:firstnbr_X",nmax); d_numnbrs_X = typename AT::t_int_1d("acks2/kk:numnbrs_X",nmax); - d_jlist_X = typename AT::t_int_1d("acks2/kk:jlist_X",m_cap); - d_val_X = typename AT::t_ffloat_1d("acks2/kk:val_X",m_cap); + d_jlist_X = typename AT::t_int_1d("acks2/kk:jlist_X",m_cap_big); + d_val_X = typename AT::t_ffloat_1d("acks2/kk:val_X",m_cap_big); } /* ---------------------------------------------------------------------- */ @@ -566,7 +567,7 @@ void FixACKS2ReaxFFKokkos::operator() (TagACKS2Zero, const int &ii) template template KOKKOS_INLINE_FUNCTION -void FixACKS2ReaxFFKokkos::compute_h_item(int ii, int &m_fill, const bool &final) const +void FixACKS2ReaxFFKokkos::compute_h_item(int ii, bigint &m_fill, const bool &final) const { const int i = d_ilist[ii]; int j,jj,jtype; @@ -619,7 +620,7 @@ void FixACKS2ReaxFFKokkos::compute_h_item(int ii, int &m_fill, const m_fill++; } if (final) - d_numnbrs[i] = m_fill - d_firstnbr[i]; + d_numnbrs[i] = int(m_fill - d_firstnbr[i]); } } @@ -698,9 +699,9 @@ void FixACKS2ReaxFFKokkos::compute_h_team( // calculate the global memory offset from where the H matrix values to be // calculated by the current team will be stored in d_val - int team_firstnbr_idx = 0; + bigint team_firstnbr_idx = 0; Kokkos::single(Kokkos::PerTeam(team), - [=](int &val) { + [=](bigint &val) { int totalnbrs = s_firstnbr[lastatom - firstatom - 1] + s_numnbrs[lastatom - firstatom - 1]; val = Kokkos::atomic_fetch_add(&d_mfill_offset(), totalnbrs); @@ -726,7 +727,7 @@ void FixACKS2ReaxFFKokkos::compute_h_team( int jnum = s_numnbrs[idx]; // calculate the write-offset for atom-i's first neighbor - int atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; + bigint atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; Kokkos::single(Kokkos::PerThread(team), [&]() { d_firstnbr[i] = atomi_firstnbr_idx; }); @@ -739,7 +740,7 @@ void FixACKS2ReaxFFKokkos::compute_h_team( // are processed in batches and the batch size is vector_length for (int jj_start = 0; jj_start < jnum; jj_start += vector_length) { - int atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; + bigint atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; // count the # of neighbor atoms with non-zero electrostatic // interaction coefficients with atom-i in the current batch @@ -782,7 +783,8 @@ void FixACKS2ReaxFFKokkos::compute_h_team( valid = false; if (x(j, 2) == ztmp && x(j, 1) < ytmp) valid = false; - if (x(j, 2) == ztmp && x(j, 1) == ytmp && x(j, 0) < xtmp) + if (x(j, 2) == ztmp && x(j, 1) == ytmp && + x(j, 0) < xtmp) valid = false; } } @@ -851,7 +853,7 @@ double FixACKS2ReaxFFKokkos::calculate_H_k(const F_FLOAT &r, const F taper = taper * r + d_tap[0]; denom = r * r * r + shld; - denom = pow(denom,1.0/3.0); + denom = cbrt(denom); return taper * EV_TO_KCAL_PER_MOL / denom; } @@ -861,7 +863,7 @@ double FixACKS2ReaxFFKokkos::calculate_H_k(const F_FLOAT &r, const F template template KOKKOS_INLINE_FUNCTION -void FixACKS2ReaxFFKokkos::compute_x_item(int ii, int &m_fill, const bool &final) const +void FixACKS2ReaxFFKokkos::compute_x_item(int ii, bigint &m_fill, const bool &final) const { // The X_diag array is duplicated for OpenMP, atomic for GPU, and neither for Serial auto v_X_diag = ScatterViewHelper,decltype(dup_X_diag),decltype(ndup_X_diag)>::get(dup_X_diag,ndup_X_diag); @@ -927,7 +929,7 @@ void FixACKS2ReaxFFKokkos::compute_x_item(int ii, int &m_fill, const } if (final) { a_X_diag[i] += tmp; - d_numnbrs_X[i] = m_fill - d_firstnbr_X[i]; + d_numnbrs_X[i] = int(m_fill - d_firstnbr_X[i]); } } } @@ -1005,9 +1007,9 @@ void FixACKS2ReaxFFKokkos::compute_x_team( // calculate the global memory offset from where the H matrix values to be // calculated by the current team will be stored in d_val_X - int team_firstnbr_idx = 0; + bigint team_firstnbr_idx = 0; Kokkos::single(Kokkos::PerTeam(team), - [=](int &val) { + [=](bigint &val) { int totalnbrs = s_firstnbr[lastatom - firstatom - 1] + s_numnbrs[lastatom - firstatom - 1]; val = Kokkos::atomic_fetch_add(&d_mfill_offset(), totalnbrs); @@ -1033,7 +1035,7 @@ void FixACKS2ReaxFFKokkos::compute_x_team( int jnum = s_numnbrs[idx]; // calculate the write-offset for atom-i's first neighbor - int atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; + bigint atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; Kokkos::single(Kokkos::PerThread(team), [&]() { d_firstnbr_X[i] = atomi_firstnbr_idx; }); @@ -1046,7 +1048,7 @@ void FixACKS2ReaxFFKokkos::compute_x_team( // are processed in batches and the batch size is vector_length for (int jj_start = 0; jj_start < jnum; jj_start += vector_length) { - int atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; + bigint atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; // count the # of neighbor atoms with non-zero electrostatic // interaction coefficients with atom-i in the current batch @@ -1464,7 +1466,7 @@ void FixACKS2ReaxFFKokkos::operator() (TagACKS2SparseMatvec3_Half::operator() (TagACKS2SparseMatvec3_Half::operator() (TagACKS2SparseMatvec3_Full, c F_FLOAT sum; F_FLOAT sum2; - Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &sum) { + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const bigint &jj, F_FLOAT &sum) { const int j = d_jlist(jj); sum += d_val(jj) * d_xx[j]; }, sum); team.team_barrier(); - Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr_X[i], d_firstnbr_X[i] + d_numnbrs_X[i]), [&] (const int &jj, F_FLOAT &sum2) { + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr_X[i], d_firstnbr_X[i] + d_numnbrs_X[i]), [&] (const bigint &jj, F_FLOAT &sum2) { const int j = d_jlist_X(jj); sum2 += d_val_X(jj) * d_xx[NN + j]; }, sum2); @@ -1865,8 +1867,8 @@ double FixACKS2ReaxFFKokkos::memory_usage() bytes += nmax*4 * sizeof(double); // storage bytes += size*11 * sizeof(double); // storage bytes += n_cap*4 * sizeof(int); // matrix... - bytes += m_cap*2 * sizeof(int); - bytes += m_cap*2 * sizeof(double); + bytes += m_cap_big*2 * sizeof(int); + bytes += m_cap_big*2 * sizeof(double); return bytes; } diff --git a/src/KOKKOS/fix_acks2_reaxff_kokkos.h b/src/KOKKOS/fix_acks2_reaxff_kokkos.h index cb16b4cd24..6adca39d17 100644 --- a/src/KOKKOS/fix_acks2_reaxff_kokkos.h +++ b/src/KOKKOS/fix_acks2_reaxff_kokkos.h @@ -74,7 +74,7 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { DAT::tdual_ffloat_1d get_s() {return k_s;} KOKKOS_INLINE_FUNCTION - void num_neigh_item(int, int&) const; + void num_neigh_item(int, bigint&) const; KOKKOS_INLINE_FUNCTION void operator()(TagACKS2Zero, const int&) const; @@ -84,7 +84,7 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { template KOKKOS_INLINE_FUNCTION - void compute_h_item(int, int &, const bool &) const; + void compute_h_item(int, bigint &, const bool &) const; template KOKKOS_INLINE_FUNCTION @@ -92,7 +92,7 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { template KOKKOS_INLINE_FUNCTION - void compute_x_item(int, int &, const bool &) const; + void compute_x_item(int, bigint &, const bool &) const; template KOKKOS_INLINE_FUNCTION @@ -173,8 +173,9 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { int allocated_flag, last_allocate; int need_dup,prev_last_rows_rank; double* buf; + bigint m_cap_big; - typename AT::t_int_scalar d_mfill_offset; + typename AT::t_bigint_scalar d_mfill_offset; typedef Kokkos::DualView tdual_int_1d; Kokkos::DualView k_params; @@ -197,12 +198,12 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { DAT::tdual_ffloat_2d k_bcut; typename AT::t_ffloat_2d d_bcut; - typename AT::t_int_1d d_firstnbr; + typename AT::t_bigint_1d d_firstnbr; typename AT::t_int_1d d_numnbrs; typename AT::t_int_1d d_jlist; typename AT::t_ffloat_1d d_val; - typename AT::t_int_1d d_firstnbr_X; + typename AT::t_bigint_1d d_firstnbr_X; typename AT::t_int_1d d_numnbrs_X; typename AT::t_int_1d d_jlist_X; typename AT::t_ffloat_1d d_val_X; @@ -264,21 +265,21 @@ class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF, public KokkosBase { template struct FixACKS2ReaxFFKokkosNumNeighFunctor { typedef DeviceType device_type; - typedef int value_type; + typedef bigint value_type; FixACKS2ReaxFFKokkos c; FixACKS2ReaxFFKokkosNumNeighFunctor(FixACKS2ReaxFFKokkos* c_ptr):c(*c_ptr) { c.cleanup_copy(); }; KOKKOS_INLINE_FUNCTION - void operator()(const int ii, int &maxneigh) const { - c.num_neigh_item(ii, maxneigh); + void operator()(const int ii, bigint &totneigh) const { + c.num_neigh_item(ii, totneigh); } }; template struct FixACKS2ReaxFFKokkosComputeHFunctor { int atoms_per_team, vector_length; - typedef int value_type; + typedef bigint value_type; typedef Kokkos::ScratchMemorySpace scratch_space; FixACKS2ReaxFFKokkos c; @@ -293,7 +294,7 @@ struct FixACKS2ReaxFFKokkosComputeHFunctor { }; KOKKOS_INLINE_FUNCTION - void operator()(const int ii, int &m_fill, const bool &final) const { + void operator()(const int ii, bigint &m_fill, const bool &final) const { c.template compute_h_item(ii,m_fill,final); } @@ -325,7 +326,7 @@ struct FixACKS2ReaxFFKokkosComputeHFunctor { template struct FixACKS2ReaxFFKokkosComputeXFunctor { int atoms_per_team, vector_length; - typedef int value_type; + typedef bigint value_type; typedef Kokkos::ScratchMemorySpace scratch_space; FixACKS2ReaxFFKokkos c; @@ -340,7 +341,7 @@ struct FixACKS2ReaxFFKokkosComputeXFunctor { }; KOKKOS_INLINE_FUNCTION - void operator()(const int ii, int &m_fill, const bool &final) const { + void operator()(const int ii, bigint &m_fill, const bool &final) const { c.template compute_x_item(ii,m_fill,final); } diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp index deb41944bc..f93f6cb70e 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp @@ -62,7 +62,8 @@ FixQEqReaxFFKokkos(LAMMPS *lmp, int narg, char **arg) : datamask_read = X_MASK | V_MASK | F_MASK | Q_MASK | MASK_MASK | TYPE_MASK | TAG_MASK; datamask_modify = X_MASK; - nmax = m_cap = 0; + nmax = 0; + m_cap_big = 0; allocated_flag = 0; nprev = 4; maxexchange = nprev*2; @@ -71,7 +72,7 @@ FixQEqReaxFFKokkos(LAMMPS *lmp, int narg, char **arg) : memory->destroy(t_hist); grow_arrays(atom->nmax); - d_mfill_offset = typename AT::t_int_scalar("qeq/kk:mfill_offset"); + d_mfill_offset = typename AT::t_bigint_scalar("qeq/kk:mfill_offset"); converged = 0; } @@ -301,10 +302,10 @@ void FixQEqReaxFFKokkos::pre_force(int /*vflag*/) template KOKKOS_INLINE_FUNCTION -void FixQEqReaxFFKokkos::num_neigh_item(int ii, int &maxneigh) const +void FixQEqReaxFFKokkos::num_neigh_item(int ii, bigint &totneigh) const { const int i = d_ilist[ii]; - maxneigh += d_numneigh[i]; + totneigh += d_numneigh[i]; } /* ---------------------------------------------------------------------- */ @@ -316,25 +317,25 @@ void FixQEqReaxFFKokkos::allocate_matrix() // determine the total space for the H matrix - m_cap = 0; + m_cap_big = 0; // limit scope of functor to allow deallocation of views { FixQEqReaxFFKokkosNumNeighFunctor neigh_functor(this); - Kokkos::parallel_reduce(nn,neigh_functor,m_cap); + Kokkos::parallel_reduce(nn,neigh_functor,m_cap_big); } // deallocate first to reduce memory overhead - d_firstnbr = typename AT::t_int_1d(); + d_firstnbr = typename AT::t_bigint_1d(); d_numnbrs = typename AT::t_int_1d(); d_jlist = typename AT::t_int_1d(); d_val = typename AT::t_ffloat_1d(); - d_firstnbr = typename AT::t_int_1d("qeq/kk:firstnbr",nmax); + d_firstnbr = typename AT::t_bigint_1d("qeq/kk:firstnbr",nmax); d_numnbrs = typename AT::t_int_1d("qeq/kk:numnbrs",nmax); - d_jlist = typename AT::t_int_1d("qeq/kk:jlist",m_cap); - d_val = typename AT::t_ffloat_1d("qeq/kk:val",m_cap); + d_jlist = typename AT::t_int_1d("qeq/kk:jlist",m_cap_big); + d_val = typename AT::t_ffloat_1d("qeq/kk:val",m_cap_big); } /* ---------------------------------------------------------------------- */ @@ -405,7 +406,7 @@ void FixQEqReaxFFKokkos::operator()(TagQEqZero, const int &ii) const template template KOKKOS_INLINE_FUNCTION -void FixQEqReaxFFKokkos::compute_h_item(int ii, int &m_fill, const bool &final) const +void FixQEqReaxFFKokkos::compute_h_item(int ii, bigint &m_fill, const bool &final) const { const int i = d_ilist[ii]; int j,jj,jtype; @@ -458,7 +459,7 @@ void FixQEqReaxFFKokkos::compute_h_item(int ii, int &m_fill, const b m_fill++; } if (final) - d_numnbrs[i] = m_fill - d_firstnbr[i]; + d_numnbrs[i] = int(m_fill - d_firstnbr[i]); } } @@ -537,9 +538,9 @@ void FixQEqReaxFFKokkos::compute_h_team( // calculate the global memory offset from where the H matrix values to be // calculated by the current team will be stored in d_val - int team_firstnbr_idx = 0; + bigint team_firstnbr_idx = 0; Kokkos::single(Kokkos::PerTeam(team), - [=](int &val) { + [=](bigint &val) { int totalnbrs = s_firstnbr[lastatom - firstatom - 1] + s_numnbrs[lastatom - firstatom - 1]; val = Kokkos::atomic_fetch_add(&d_mfill_offset(), totalnbrs); @@ -565,7 +566,7 @@ void FixQEqReaxFFKokkos::compute_h_team( int jnum = s_numnbrs[idx]; // removed "const" to work around GCC 7 bug // calculate the write-offset for atom-i's first neighbor - int atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; + bigint atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; Kokkos::single(Kokkos::PerThread(team), [&]() { d_firstnbr[i] = atomi_firstnbr_idx; }); @@ -578,7 +579,7 @@ void FixQEqReaxFFKokkos::compute_h_team( // are processed in batches and the batch size is vector_length for (int jj_start = 0; jj_start < jnum; jj_start += vector_length) { - int atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; + bigint atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; // count the # of neighbor atoms with non-zero electrostatic // interaction coefficients with atom-i in the current batch @@ -935,7 +936,7 @@ void FixQEqReaxFFKokkos::operator()(TagQEqSparseMatvec2_Half::operator()(TagQEqSparseMatvec2_Full, const const int i = d_ilist[k]; if (mask[i] & groupbit) { F_FLOAT2 doitmp; - Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT2& doi) { + Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const bigint &jj, F_FLOAT2& doi) { const int j = d_jlist(jj); const auto d_val_jj = d_val(jj); if (!(converged & 1)) @@ -1286,8 +1287,8 @@ double FixQEqReaxFFKokkos::memory_usage() bytes = atom->nmax*nprev*2 * sizeof(F_FLOAT); // s_hist & t_hist bytes += (double)atom->nmax*8 * sizeof(F_FLOAT); // storage bytes += (double)n_cap*2 * sizeof(int); // matrix... - bytes += (double)m_cap * sizeof(int); - bytes += (double)m_cap * sizeof(F_FLOAT); + bytes += (double)m_cap_big * sizeof(int); + bytes += (double)m_cap_big * sizeof(F_FLOAT); return bytes; } diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.h b/src/KOKKOS/fix_qeq_reaxff_kokkos.h index 92026b209d..0733a518a2 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.h +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.h @@ -70,7 +70,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { void pre_force(int) override; KOKKOS_INLINE_FUNCTION - void num_neigh_item(int, int&) const; + void num_neigh_item(int, bigint&) const; KOKKOS_INLINE_FUNCTION void operator()(TagQEqZero, const int&) const; @@ -80,7 +80,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { template KOKKOS_INLINE_FUNCTION - void compute_h_item(int, int &, const bool &) const; + void compute_h_item(int, bigint &, const bool &) const; template KOKKOS_INLINE_FUNCTION @@ -201,8 +201,9 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { int allocated_flag, last_allocate; int need_dup; int converged; + bigint m_cap_big; - typename AT::t_int_scalar d_mfill_offset; + typename AT::t_bigint_scalar d_mfill_offset; typedef Kokkos::DualView tdual_int_1d; Kokkos::DualView k_params; @@ -227,7 +228,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { DAT::tdual_ffloat_1d k_tap; typename AT::t_ffloat_1d d_tap; - typename AT::t_int_1d d_firstnbr; + typename AT::t_bigint_1d d_firstnbr; typename AT::t_int_1d d_numnbrs; typename AT::t_int_1d d_jlist; typename AT::t_ffloat_1d d_val; @@ -290,21 +291,21 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { template struct FixQEqReaxFFKokkosNumNeighFunctor { typedef DeviceType device_type; - typedef int value_type; + typedef bigint value_type; FixQEqReaxFFKokkos c; FixQEqReaxFFKokkosNumNeighFunctor(FixQEqReaxFFKokkos* c_ptr):c(*c_ptr) { c.cleanup_copy(); }; KOKKOS_INLINE_FUNCTION - void operator()(const int ii, int &maxneigh) const { - c.num_neigh_item(ii, maxneigh); + void operator()(const int ii, bigint &totneigh) const { + c.num_neigh_item(ii, totneigh); } }; template struct FixQEqReaxFFKokkosComputeHFunctor { int atoms_per_team, vector_length; - typedef int value_type; + typedef bigint value_type; typedef Kokkos::ScratchMemorySpace scratch_space; FixQEqReaxFFKokkos c; @@ -319,7 +320,7 @@ struct FixQEqReaxFFKokkosComputeHFunctor { }; KOKKOS_INLINE_FUNCTION - void operator()(const int ii, int &m_fill, const bool &final) const { + void operator()(const int ii, bigint &m_fill, const bool &final) const { c.template compute_h_item(ii,m_fill,final); } diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index 58b9436af6..7dba47f889 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -638,33 +638,32 @@ void KokkosLMP::accelerator(int narg, char **arg) called by Finish ------------------------------------------------------------------------- */ -int KokkosLMP::neigh_count(int m) +bigint KokkosLMP::neigh_count(int m) { - int inum = 0; - int nneigh = 0; - - ArrayTypes::t_int_1d h_ilist; - ArrayTypes::t_int_1d h_numneigh; + bigint nneigh = 0; NeighborKokkos *nk = (NeighborKokkos *) neighbor; if (nk->lists[m]->execution_space == Host) { NeighListKokkos* nlistKK = (NeighListKokkos*) nk->lists[m]; - inum = nlistKK->inum; - h_ilist = Kokkos::create_mirror_view(nlistKK->d_ilist); - h_numneigh = Kokkos::create_mirror_view(nlistKK->d_numneigh); - Kokkos::deep_copy(h_ilist,nlistKK->d_ilist); - Kokkos::deep_copy(h_numneigh,nlistKK->d_numneigh); + int inum = nlistKK->inum; + auto d_ilist = nlistKK->d_ilist; + auto d_numneigh = nlistKK->d_numneigh; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,inum), LAMMPS_LAMBDA(int ii, bigint &nneigh) { + const int i = d_ilist[ii]; + nneigh += d_numneigh[i]; + },nneigh); + } else if (nk->lists[m]->execution_space == Device) { NeighListKokkos* nlistKK = (NeighListKokkos*) nk->lists[m]; - inum = nlistKK->inum; - h_ilist = Kokkos::create_mirror_view(nlistKK->d_ilist); - h_numneigh = Kokkos::create_mirror_view(nlistKK->d_numneigh); - Kokkos::deep_copy(h_ilist,nlistKK->d_ilist); - Kokkos::deep_copy(h_numneigh,nlistKK->d_numneigh); + int inum = nlistKK->inum; + auto d_ilist = nlistKK->d_ilist; + auto d_numneigh = nlistKK->d_numneigh; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,inum), LAMMPS_LAMBDA(int ii, bigint &nneigh) { + const int i = d_ilist[ii]; + nneigh += d_numneigh[i]; + },nneigh); } - for (int i = 0; i < inum; i++) nneigh += h_numneigh[h_ilist[i]]; - return nneigh; } diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h index 748aff7f83..419de62dec 100644 --- a/src/KOKKOS/kokkos.h +++ b/src/KOKKOS/kokkos.h @@ -64,7 +64,7 @@ class KokkosLMP : protected Pointers { static void initialize(const Kokkos::InitializationSettings&, Error *); static void finalize(); void accelerator(int, char **); - int neigh_count(int); + bigint neigh_count(int); template int need_dup(int qeq_flag = 0) diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index 7f0eb5c105..e4c1bdda6f 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -641,6 +641,14 @@ typedef tdual_int_scalar::t_dev_const t_int_scalar_const; typedef tdual_int_scalar::t_dev_um t_int_scalar_um; typedef tdual_int_scalar::t_dev_const_um t_int_scalar_const_um; +typedef Kokkos:: + DualView tdual_bigint_scalar; +typedef tdual_bigint_scalar::t_dev t_bigint_scalar; +typedef tdual_bigint_scalar::t_dev_const t_bigint_scalar_const; +typedef tdual_bigint_scalar::t_dev_um t_bigint_scalar_um; +typedef tdual_bigint_scalar::t_dev_const_um t_bigint_scalar_const_um; +typedef tdual_bigint_scalar::t_dev_const_randomread t_bigint_scalar_randomread; + typedef Kokkos:: DualView tdual_tagint_scalar; typedef tdual_tagint_scalar::t_dev t_tagint_scalar; @@ -666,6 +674,14 @@ typedef tdual_int_1d::t_dev_um t_int_1d_um; typedef tdual_int_1d::t_dev_const_um t_int_1d_const_um; typedef tdual_int_1d::t_dev_const_randomread t_int_1d_randomread; +typedef Kokkos:: + DualView tdual_bigint_1d; +typedef tdual_bigint_1d::t_dev t_bigint_1d; +typedef tdual_bigint_1d::t_dev_const t_bigint_1d_const; +typedef tdual_bigint_1d::t_dev_um t_bigint_1d_um; +typedef tdual_bigint_1d::t_dev_const_um t_bigint_1d_const_um; +typedef tdual_bigint_1d::t_dev_const_randomread t_bigint_1d_randomread; + typedef Kokkos:: DualView tdual_int_1d_3; typedef tdual_int_1d_3::t_dev t_int_1d_3; @@ -974,6 +990,12 @@ typedef tdual_int_scalar::t_host_const t_int_scalar_const; typedef tdual_int_scalar::t_host_um t_int_scalar_um; typedef tdual_int_scalar::t_host_const_um t_int_scalar_const_um; +typedef Kokkos::DualView tdual_bigint_scalar; +typedef tdual_bigint_scalar::t_host t_bigint_scalar; +typedef tdual_bigint_scalar::t_host_const t_bigint_scalar_const; +typedef tdual_bigint_scalar::t_host_um t_bigint_scalar_um; +typedef tdual_bigint_scalar::t_host_const_um t_bigint_scalar_const_um; + typedef Kokkos::DualView tdual_tagint_scalar; typedef tdual_tagint_scalar::t_host t_tagint_scalar; typedef tdual_tagint_scalar::t_host_const t_tagint_scalar_const; @@ -994,6 +1016,13 @@ typedef tdual_int_1d::t_host_um t_int_1d_um; typedef tdual_int_1d::t_host_const_um t_int_1d_const_um; typedef tdual_int_1d::t_host_const_randomread t_int_1d_randomread; +typedef Kokkos::DualView tdual_bigint_1d; +typedef tdual_bigint_1d::t_host t_bigint_1d; +typedef tdual_bigint_1d::t_host_const t_bigint_1d_const; +typedef tdual_bigint_1d::t_host_um t_bigint_1d_um; +typedef tdual_bigint_1d::t_host_const_um t_bigint_1d_const_um; +typedef tdual_bigint_1d::t_host_const_randomread t_bigint_1d_randomread; + typedef Kokkos::DualView tdual_int_1d_3; typedef tdual_int_1d_3::t_host t_int_1d_3; typedef tdual_int_1d_3::t_host_const t_int_1d_3_const; From 09c121ebbc4c46602580f1cb410ebf44aa56a228 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 26 Jun 2024 14:55:36 -0600 Subject: [PATCH 017/326] Prevent overflow in neighbor output --- src/finish.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/finish.cpp b/src/finish.cpp index 554f250fe1..c774f51e58 100644 --- a/src/finish.cpp +++ b/src/finish.cpp @@ -62,7 +62,8 @@ Finish::Finish(LAMMPS *lmp) : Pointers(lmp) {} void Finish::end(int flag) { - int i,nneigh,nneighfull; + int i; + bigint nneigh,nneighfull; int histo[10]; int minflag,prdflag,tadflag,hyperflag; int timeflag,fftflag,histoflag,neighflag; From 0e706d4dcc99649a3e1f752c8d6c20f029f7345c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 10:37:31 -0400 Subject: [PATCH 018/326] add support for building the PLUMED package as plugin --- cmake/Modules/Packages/PLUMED.cmake | 10 +- .../PACKAGES/plumed/plugin/CMakeLists.txt | 59 +++++++ .../plumed/plugin/LAMMPSInterfacePlugin.cmake | 1 + examples/PACKAGES/plumed/plugin/PLUMED.cmake | 1 + examples/PACKAGES/plumed/plugin/README.txt | 2 + .../plumed/plugin/lammps-text-logo-wide.bmp | Bin 0 -> 25818 bytes examples/PACKAGES/plumed/plugin/lammps.ico | Bin 0 -> 209266 bytes .../PACKAGES/plumed/plugin/plumedplugin.cpp | 28 +++ .../PACKAGES/plumed/plugin/plumedplugin.nsis | 167 ++++++++++++++++++ 9 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 examples/PACKAGES/plumed/plugin/CMakeLists.txt create mode 120000 examples/PACKAGES/plumed/plugin/LAMMPSInterfacePlugin.cmake create mode 120000 examples/PACKAGES/plumed/plugin/PLUMED.cmake create mode 100644 examples/PACKAGES/plumed/plugin/README.txt create mode 100644 examples/PACKAGES/plumed/plugin/lammps-text-logo-wide.bmp create mode 100644 examples/PACKAGES/plumed/plugin/lammps.ico create mode 100644 examples/PACKAGES/plumed/plugin/plumedplugin.cpp create mode 100644 examples/PACKAGES/plumed/plugin/plumedplugin.nsis diff --git a/cmake/Modules/Packages/PLUMED.cmake b/cmake/Modules/Packages/PLUMED.cmake index 8312589478..b411e5d269 100644 --- a/cmake/Modules/Packages/PLUMED.cmake +++ b/cmake/Modules/Packages/PLUMED.cmake @@ -81,6 +81,9 @@ if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (CMAKE_CROSSCOMPILING)) DEPENDS plumed_build COMMENT "Copying Plumed files" ) + if(CMAKE_PROJECT_NAME STREQUAL "lammps") + target_link_libraries(lammps INTERFACE LAMMPS::PLUMED) + endif() else() @@ -155,6 +158,9 @@ else() endif() set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) file(MAKE_DIRECTORY ${INSTALL_DIR}/include) + if(CMAKE_PROJECT_NAME STREQUAL "lammps") + target_link_libraries(lammps PRIVATE LAMMPS::PLUMED) + endif() else() find_package(PkgConfig REQUIRED) pkg_check_modules(PLUMED REQUIRED plumed${PLUMED_SUFFIX}) @@ -169,7 +175,9 @@ else() endif() set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}") set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PLUMED_INCLUDE_DIRS}") + if(CMAKE_PROJECT_NAME STREQUAL "lammps") + target_link_libraries(lammps PUBLIC LAMMPS::PLUMED) + endif() endif() endif() -target_link_libraries(lammps PRIVATE LAMMPS::PLUMED) diff --git a/examples/PACKAGES/plumed/plugin/CMakeLists.txt b/examples/PACKAGES/plumed/plugin/CMakeLists.txt new file mode 100644 index 0000000000..2a8f439c2f --- /dev/null +++ b/examples/PACKAGES/plumed/plugin/CMakeLists.txt @@ -0,0 +1,59 @@ +# -*- CMake -*- build system for plugin examples. +# The is meant to be used as a template for plugins that are +# distributed independent from the LAMMPS package. +########################################## + +cmake_minimum_required(VERSION 3.16) + +project(plumedplugin VERSION 1.0 LANGUAGES CXX) + +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +include(CheckIncludeFileCXX) +include(LAMMPSInterfacePlugin) +include(PLUMED) + +########################## +# building the plugins + +add_library(plumedplugin MODULE plumedplugin.cpp ${LAMMPS_SOURCE_DIR}/PLUMED/fix_plumed.cpp) +target_link_libraries(plumedplugin PRIVATE LAMMPS::PLUMED) +target_link_libraries(plumedplugin PRIVATE lammps) +target_include_directories(plumedplugin PRIVATE ${LAMMPS_SOURCE_DIR}/PLUMED) +set_target_properties(plumedplugin PROPERTIES PREFIX "" SUFFIX ".so") + +# MacOS seems to need this +if(CMAKE_SYSTEM_NAME STREQUAL Darwin) + set_target_properties(plumedplugin PROPERTIES LINK_FLAGS "-Wl,-undefined,dynamic_lookup") +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") +# tell CMake to export all symbols to a .dll on Windows with special case for MinGW cross-compilers + set_target_properties(plumedplugin PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) + if(CMAKE_CROSSCOMPILING) + set_target_properties(plumedplugin PROPERTIES LINK_FLAGS "-Wl,--export-all-symbols") + endif() + + get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h LAMMPS_VERSION) + find_program(MAKENSIS_PATH makensis) + if(MAKENSIS_PATH) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/lammps.ico + ${CMAKE_SOURCE_DIR}/lammps-text-logo-wide.bmp ${CMAKE_SOURCE_DIR}/plumedplugin.nsis + ${CMAKE_SOURCE_DIR}/patches ${CMAKE_BINARY_DIR}) + if(BUILD_MPI) + if(USE_MSMPI) + add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI plumedplugin.nsis + DEPENDS plumedplugin + BYPRODUCTS LAMMPS-PLUMED-plugin-${LAMMPS_VERSION}-MSMPI.exe) + else() + add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MPI plumedplugin.nsis + DEPENDS plumedplugin + BYPRODUCTS LAMMPS-PLUMED-plugin-${LAMMPS_VERSION}-MPI.exe) + endif() + else() + add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION} plumedplugin.nsis + COMMAND ${CMAKE_COMMAND} -E echo ${PWD} + DEPENDS plumedplugin lammps.ico lammps-text-logo-wide.bmp plumedplugin.nsis + BYPRODUCTS LAMMPS-PLUMED-plugin-${LAMMPS_VERSION}.exe) + endif() + endif() +else() + set_target_properties(plumedplugin PROPERTIES LINK_FLAGS "-rdynamic") +endif() diff --git a/examples/PACKAGES/plumed/plugin/LAMMPSInterfacePlugin.cmake b/examples/PACKAGES/plumed/plugin/LAMMPSInterfacePlugin.cmake new file mode 120000 index 0000000000..2ac6d20a54 --- /dev/null +++ b/examples/PACKAGES/plumed/plugin/LAMMPSInterfacePlugin.cmake @@ -0,0 +1 @@ +../../../../cmake/Modules/LAMMPSInterfacePlugin.cmake \ No newline at end of file diff --git a/examples/PACKAGES/plumed/plugin/PLUMED.cmake b/examples/PACKAGES/plumed/plugin/PLUMED.cmake new file mode 120000 index 0000000000..b69e8b04f5 --- /dev/null +++ b/examples/PACKAGES/plumed/plugin/PLUMED.cmake @@ -0,0 +1 @@ +../../../../cmake/Modules/Packages/PLUMED.cmake \ No newline at end of file diff --git a/examples/PACKAGES/plumed/plugin/README.txt b/examples/PACKAGES/plumed/plugin/README.txt new file mode 100644 index 0000000000..2b1971ddbc --- /dev/null +++ b/examples/PACKAGES/plumed/plugin/README.txt @@ -0,0 +1,2 @@ +This folder contains a loader and support files to build the PLUMED package as plugin. +For more information please see: https://docs.lammps.org/Developer_plugins.html diff --git a/examples/PACKAGES/plumed/plugin/lammps-text-logo-wide.bmp b/examples/PACKAGES/plumed/plugin/lammps-text-logo-wide.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b9ec4c35f22ef07acea3256fa80f58b8e9b5f5cc GIT binary patch literal 25818 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 cJb# Date: Thu, 27 Jun 2024 18:52:58 -0400 Subject: [PATCH 019/326] silence warnings --- cmake/CMakeLists.txt | 5 +++++ cmake/Modules/Packages/ML-PACE.cmake | 8 +++++++- cmake/Modules/Packages/PLUMED.cmake | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index d8b4f0a4f6..217d25e476 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -12,6 +12,11 @@ endif() if(POLICY CMP0075) cmake_policy(SET CMP0075 NEW) endif() +# set policy to silence warnings about requiring execute permission for find_program +# we use OLD because the python-config script for the Fedora MinGW cross-compiler requires it currently +if(POLICY CMP0109) + cmake_policy(SET CMP0109 OLD) +endif() # set policy to silence warnings about timestamps of downloaded files. review occasionally if it may be set to NEW if(POLICY CMP0135) cmake_policy(SET CMP0135 OLD) diff --git a/cmake/Modules/Packages/ML-PACE.cmake b/cmake/Modules/Packages/ML-PACE.cmake index 248b8eea76..8660898138 100644 --- a/cmake/Modules/Packages/ML-PACE.cmake +++ b/cmake/Modules/Packages/ML-PACE.cmake @@ -1,5 +1,11 @@ -set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.25.fix.tar.gz" CACHE STRING "URL for PACE evaluator library sources") +# PACE library support for ML-PACE package +# set policy to silence warnings about timestamps of downloaded files. review occasionally if it may be set to NEW +if(POLICY CMP0135) + cmake_policy(SET CMP0135 OLD) +endif() + +set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.25.fix.tar.gz" CACHE STRING "URL for PACE evaluator library sources") set(PACELIB_MD5 "b45de9a633f42ed65422567e3ce56f9f" CACHE STRING "MD5 checksum of PACE evaluator library tarball") mark_as_advanced(PACELIB_URL) mark_as_advanced(PACELIB_MD5) diff --git a/cmake/Modules/Packages/PLUMED.cmake b/cmake/Modules/Packages/PLUMED.cmake index b411e5d269..595b6824c1 100644 --- a/cmake/Modules/Packages/PLUMED.cmake +++ b/cmake/Modules/Packages/PLUMED.cmake @@ -1,5 +1,10 @@ # Plumed2 support for PLUMED package +# set policy to silence warnings about timestamps of downloaded files. review occasionally if it may be set to NEW +if(POLICY CMP0135) + cmake_policy(SET CMP0135 OLD) +endif() + # for supporting multiple concurrent plumed2 installations for debugging and testing set(PLUMED_SUFFIX "" CACHE STRING "Suffix for Plumed2 library") mark_as_advanced(PLUMED_SUFFIX) From 5014e408c0675a165c364c301c6ea7da0b111aff Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 20:07:52 -0400 Subject: [PATCH 020/326] use correct path to (downloaded) plumed source tree --- examples/PACKAGES/plumed/plugin/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PACKAGES/plumed/plugin/CMakeLists.txt b/examples/PACKAGES/plumed/plugin/CMakeLists.txt index 2a8f439c2f..3db479822c 100644 --- a/examples/PACKAGES/plumed/plugin/CMakeLists.txt +++ b/examples/PACKAGES/plumed/plugin/CMakeLists.txt @@ -36,7 +36,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if(MAKENSIS_PATH) execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/lammps.ico ${CMAKE_SOURCE_DIR}/lammps-text-logo-wide.bmp ${CMAKE_SOURCE_DIR}/plumedplugin.nsis - ${CMAKE_SOURCE_DIR}/patches ${CMAKE_BINARY_DIR}) + ${PLUMED_LIBDIR}/plumed${PLUMED_SUFFIX}/patches ${CMAKE_BINARY_DIR}) if(BUILD_MPI) if(USE_MSMPI) add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI plumedplugin.nsis From e75e63c218fbd15a61bcb09faf040ea6da1e5248 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 20:08:15 -0400 Subject: [PATCH 021/326] also package the plumed.exe executable with the plugin --- examples/PACKAGES/plumed/plugin/plumedplugin.nsis | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis index 3fbf0a92e0..9db5a8123a 100644 --- a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis +++ b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis @@ -93,12 +93,15 @@ Section "${PLUMEDPLUGIN}" SecPlumedplugin SetOutPath "$INSTDIR" CreateDirectory "$INSTDIR\patches" + CreateDirectory "$INSTDIR\bin" File lammps.ico File plumedplugin.so SetOutPath "$INSTDIR\patches" File /r patches/* + SetOutPath "$INSTDIR\bin" + File /r *.exe # Register Application and its uninstaller WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-PLUMED" \ @@ -125,6 +128,8 @@ Section "${PLUMEDPLUGIN}" SecPlumedplugin # update path variables EnVar::SetHKCU + # add plumed executable path + EnVar::AddValue "PATH" "$INSTDIR\bin" # add to LAMMPS plugin search path EnVar::AddValue "LAMMPS_PLUGIN_PATH" "$INSTDIR" # add plumed2 patch files @@ -150,12 +155,15 @@ Section "Uninstall" # update path variables EnVar::SetHKCU + # remove plumed executable path + EnVar::DeleteValue "PATH" "$INSTDIR\bin" # remove entry from LAMMPS plugin search path EnVar::DeleteValue "LAMMPS_PLUGIN_PATH" "$INSTDIR" # remove plumed patch environment EnVar::Delete "PLUMED_ROOT" RMDir /r /REBOOTOK "$INSTDIR\patches" + RMDir /r /REBOOTOK "$INSTDIR\bin" Delete /REBOOTOK "$INSTDIR\plumedplugin.so" Delete /REBOOTOK "$INSTDIR\Uninstall.exe" Delete /REBOOTOK "$INSTDIR\lammps.ico" From 42724fda742b1cd7828626392660c3d8c52b7609 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 20:56:20 -0400 Subject: [PATCH 022/326] note the ability to build ML-PACE and PLUMED as plugins --- doc/src/Build_extras.rst | 10 ++++++++++ doc/src/Developer_plugins.rst | 2 +- doc/src/Packages_details.rst | 7 +++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index f66238c3c9..f1526d2934 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -1397,6 +1397,11 @@ in lib/pace or somewhere else, which must be done before building LAMMPS with this package. The code for the library can be found at: `https://github.com/ICAMS/lammps-user-pace/ `_ +Instead of including the ML-PACE package directly into LAMMPS, it +is also possible to skip this step and build the ML-PACE package as +a plugin using the CMake script files in the ``examples/PACKAGE/pace/plugin`` +folder and then load this plugin at runtime with the :doc:`plugin command `. + .. tabs:: .. tab:: CMake build @@ -1561,6 +1566,11 @@ try a different one, switch to a different build system, consider a global PLUMED installation or consider downloading PLUMED during the LAMMPS build. +Instead of including the PLUMED package directly into LAMMPS, it +is also possible to skip this step and build the PLUMED package as +a plugin using the CMake script files in the ``examples/PACKAGE/plumed/plugin`` +folder and then load this plugin at runtime with the :doc:`plugin command `. + .. tabs:: .. tab:: CMake build diff --git a/doc/src/Developer_plugins.rst b/doc/src/Developer_plugins.rst index dd5431507e..4d822130f3 100644 --- a/doc/src/Developer_plugins.rst +++ b/doc/src/Developer_plugins.rst @@ -283,7 +283,7 @@ in the ``examples/kim/plugin`` folder. No changes to the sources of the KIM package themselves are needed; only the plugin interface and loader code needs to be added. This example only supports building with CMake, but is probably a more typical example. To compile you need to run CMake -with -DLAMMPS_SOURCE_DIR=. Other +with ``-DLAMMPS_SOURCE_DIR=``. Other configuration setting are identical to those for compiling LAMMPS. A second example for a plugin from a package is in the diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index e759e3bd18..244e104698 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -1820,7 +1820,8 @@ Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1. **Install:** This package has :ref:`specific installation instructions ` on the -:doc:`Build extras ` page. +:doc:`Build extras ` page. This package may also be compiled +as a plugin to avoid licensing conflicts when distributing binaries. **Supporting info:** @@ -2341,7 +2342,9 @@ and Gareth Tribello. **Install:** -This package has :ref:`specific installation instructions ` on the :doc:`Build extras ` page. +This package has :ref:`specific installation instructions ` on the +:doc:`Build extras ` page. This package may also be compiled +as a plugin to avoid licensing conflicts when distributing binaries. **Supporting info:** From 1f7fb7b6f52268bbb4f81d00791a60fde7e4e4bf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 20:57:35 -0400 Subject: [PATCH 023/326] correct path (again) --- examples/PACKAGES/plumed/plugin/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PACKAGES/plumed/plugin/CMakeLists.txt b/examples/PACKAGES/plumed/plugin/CMakeLists.txt index 3db479822c..caadea9405 100644 --- a/examples/PACKAGES/plumed/plugin/CMakeLists.txt +++ b/examples/PACKAGES/plumed/plugin/CMakeLists.txt @@ -36,7 +36,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if(MAKENSIS_PATH) execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/lammps.ico ${CMAKE_SOURCE_DIR}/lammps-text-logo-wide.bmp ${CMAKE_SOURCE_DIR}/plumedplugin.nsis - ${PLUMED_LIBDIR}/plumed${PLUMED_SUFFIX}/patches ${CMAKE_BINARY_DIR}) + ${PLUMED_LIBDIR}/patches ${CMAKE_BINARY_DIR}) if(BUILD_MPI) if(USE_MSMPI) add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI plumedplugin.nsis From 2ad8119282da2caf28de8f2ff066430746dc0d9d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 21:24:12 -0400 Subject: [PATCH 024/326] do not try to install plumed patches --- examples/PACKAGES/plumed/plugin/CMakeLists.txt | 2 +- examples/PACKAGES/plumed/plugin/plumedplugin.nsis | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/PACKAGES/plumed/plugin/CMakeLists.txt b/examples/PACKAGES/plumed/plugin/CMakeLists.txt index caadea9405..b14d3e5f9b 100644 --- a/examples/PACKAGES/plumed/plugin/CMakeLists.txt +++ b/examples/PACKAGES/plumed/plugin/CMakeLists.txt @@ -36,7 +36,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if(MAKENSIS_PATH) execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/lammps.ico ${CMAKE_SOURCE_DIR}/lammps-text-logo-wide.bmp ${CMAKE_SOURCE_DIR}/plumedplugin.nsis - ${PLUMED_LIBDIR}/patches ${CMAKE_BINARY_DIR}) + ${CMAKE_BINARY_DIR}) if(BUILD_MPI) if(USE_MSMPI) add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI plumedplugin.nsis diff --git a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis index 9db5a8123a..36b820f465 100644 --- a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis +++ b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis @@ -97,9 +97,6 @@ Section "${PLUMEDPLUGIN}" SecPlumedplugin File lammps.ico File plumedplugin.so - SetOutPath "$INSTDIR\patches" - File /r patches/* - SetOutPath "$INSTDIR\bin" File /r *.exe From 185141bd7d8cc5af2c52e23ee52277cefb0d19ec Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2024 23:24:20 -0400 Subject: [PATCH 025/326] use faster compression --- examples/PACKAGES/pace/plugin/paceplugin.nsis | 2 +- examples/PACKAGES/plumed/plugin/plumedplugin.nsis | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/PACKAGES/pace/plugin/paceplugin.nsis b/examples/PACKAGES/pace/plugin/paceplugin.nsis index de8d1d8478..0ca96b95a6 100644 --- a/examples/PACKAGES/pace/plugin/paceplugin.nsis +++ b/examples/PACKAGES/pace/plugin/paceplugin.nsis @@ -39,7 +39,7 @@ InstallDir "$LOCALAPPDATA\${PACEPLUGIN}" ShowInstDetails show ShowUninstDetails show -SetCompressor lzma +SetCompressor zlib !define MUI_ABORTWARNING diff --git a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis index 36b820f465..229473ddeb 100644 --- a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis +++ b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis @@ -39,7 +39,7 @@ InstallDir "$LOCALAPPDATA\${PLUMEDPLUGIN}" ShowInstDetails show ShowUninstDetails show -SetCompressor lzma +SetCompressor zlib !define MUI_ABORTWARNING From d630fc67abb8a1402924b20d61e1b15d1b7a30e4 Mon Sep 17 00:00:00 2001 From: Nick Hagerty Date: Tue, 2 Jul 2024 15:10:44 -0400 Subject: [PATCH 026/326] Updated remap kokkos to remove unused recv_proc and recv_bufloc buffers --- src/KOKKOS/remap_kokkos.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 7ebe35dddb..50d61cc1a3 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -614,7 +614,8 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat malloc(nsend*sizeof(struct pack_plan_3d)); if (plan->send_offset == nullptr || plan->send_size == nullptr || - plan->send_proc == nullptr || plan->packplan == nullptr) return nullptr; + plan->sendcnts == nullptr || plan->sdispls == nullptr || + plan->packplan == nullptr) return nullptr; // recv space @@ -651,8 +652,8 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat malloc(nrecv*sizeof(struct pack_plan_3d)); if (plan->recv_offset == nullptr || plan->recv_size == nullptr || - plan->recv_proc == nullptr || plan->recv_bufloc == nullptr || - plan->request == nullptr || plan->unpackplan == nullptr) return nullptr; + plan->rcvcnts == nullptr || plan->rdispls == nullptr || + plan->unpackplan == nullptr) return nullptr; } // store send info, with self as last entry @@ -708,8 +709,6 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->selfnrecvloc = nrecv; } if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { - //plan->recv_proc[nrecv] = iproc; - plan->recv_bufloc[nrecv] = ibuf; if (permute == 0) { plan->recv_offset[nrecv] = nqty * From 9513c0edac92f67f5ed18d4842f97822e40e502b Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 2 Jul 2024 13:28:46 -0600 Subject: [PATCH 027/326] small cleanup --- src/KOKKOS/remap_kokkos.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/remap_kokkos.cpp b/src/KOKKOS/remap_kokkos.cpp index 50d61cc1a3..573f4c2508 100644 --- a/src/KOKKOS/remap_kokkos.cpp +++ b/src/KOKKOS/remap_kokkos.cpp @@ -283,7 +283,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat struct remap_plan_3d_kokkos *plan; struct extent_3d *inarray, *outarray; struct extent_3d in,out,overlap; - int i,j,iproc,nsend,nrecv,ibuf,size,me,nprocs,isend,irecv; + int i,iproc,nsend,nrecv,ibuf,size,me,nprocs; // query MPI info @@ -552,7 +552,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } // perform an AllReduce to get the counts from all other processors and build sendcnts list - + MPI_Allreduce(local_cnts, global_cnts, 2*nprocs, MPI_INT, MPI_SUM, comm); // now remove procs that are 0 in send or recv to create minimized sendcnts/recvcnts for AlltoAllv @@ -569,11 +569,11 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat } // resize commringlist to final size - + commringlist = (int *) realloc(commringlist, commringlen*sizeof(int)); - + // set the plan->commringlist - + plan->commringlen = commringlen; plan->commringlist = commringlist; @@ -655,9 +655,9 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->rcvcnts == nullptr || plan->rdispls == nullptr || plan->unpackplan == nullptr) return nullptr; } - + // store send info, with self as last entry - + nsend = 0; ibuf = 0; int total_send_size = 0; @@ -697,19 +697,19 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->d_sendbuf = typename FFT_AT::t_FFT_SCALAR_1d("remap3d:sendbuf",total_send_size); if (!plan->d_sendbuf.data()) return nullptr; } - + // store recv info, with self as last entry - + ibuf = 0; nrecv = 0; - + for (i = 0; i < plan->commringlen; i++) { iproc = plan->commringlist[i]; if (iproc == me) { plan->selfnrecvloc = nrecv; } if (remap_3d_collide(&out,&inarray[iproc],&overlap)) { - + if (permute == 0) { plan->recv_offset[nrecv] = nqty * ((overlap.klo-out.klo)*out.jsize*out.isize + @@ -743,7 +743,7 @@ struct remap_plan_3d_kokkos* RemapKokkos::remap_3d_creat plan->unpackplan[nrecv].nstride_plane = nqty*out.isize*out.ksize; plan->unpackplan[nrecv].nqty = nqty; } - + plan->recv_size[i] = nqty*overlap.isize*overlap.jsize*overlap.ksize; plan->rcvcnts[i] = plan->recv_size[i]; plan->rdispls[i] = ibuf; @@ -845,7 +845,7 @@ void RemapKokkos::remap_3d_destroy_plan_kokkos(struct remap_plan_3d_ free(plan->unpackplan); } } else { - + // free arrays used in pt2pt communication if (plan->nsend || plan->self) { From bae822fea776335181d2e61eb0d0871f04c3c278 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Fri, 19 Jul 2024 15:23:49 +0000 Subject: [PATCH 028/326] update Makefiles --- lib/gpu/Makefile.aurora | 31 ++++++ src/MAKE/MACHINES/Makefile.aurora | 121 +++++++++++++++++++++++ src/MAKE/MACHINES/Makefile.aurora_kokkos | 2 + 3 files changed, 154 insertions(+) create mode 100644 lib/gpu/Makefile.aurora create mode 100644 src/MAKE/MACHINES/Makefile.aurora diff --git a/lib/gpu/Makefile.aurora b/lib/gpu/Makefile.aurora new file mode 100644 index 0000000000..c343e061ee --- /dev/null +++ b/lib/gpu/Makefile.aurora @@ -0,0 +1,31 @@ +# /* ---------------------------------------------------------------------- +# Generic Linux Makefile for OpenCL +# ------------------------------------------------------------------------- */ + +# which file will be copied to Makefile.lammps + +EXTRAMAKE = Makefile.lammps.opencl + +# OCL_TUNE = -DFERMI_OCL # -- Uncomment for NVIDIA Fermi +# OCL_TUNE = -DKEPLER_OCL # -- Uncomment for NVIDIA Kepler +# OCL_TUNE = -DCYPRESS_OCL # -- Uncomment for AMD Cypress +OCL_TUNE = -DGENERIC_OCL # -- Uncomment for generic device + +# this setting should match LAMMPS Makefile +# one of LAMMPS_SMALLBIG (default), LAMMPS_BIGBIG and LAMMPS_SMALLSMALL + +LMP_INC = -DLAMMPS_SMALLBIG + +OCL_INC = -I/opt/intel/oneapi/compiler/latest/linux/include/sycl/ # Path to CL directory +OCL_CPP = mpicxx -cxx=icpx -DCUDA_PROXY $(DEFAULT_DEVICE) -xHost -O2 -ffp-model=fast -qoverride-limits -DMPI_GERYON -DGERYON_NUMA_FISSION -DUCL_NO_EXIT -DMPICH_IGNORE_CXX_SEEK $(LMP_INC) $(OCL_INC) -DGERYON_NO_PROF +OCL_LINK = -L/opt/intel/oneapi/compiler/latest/linux/lib/ -lOpenCL +OCL_PREC = -D_SINGLE_DOUBLE + +BIN_DIR = ./ +OBJ_DIR = ./ +LIB_DIR = ./ +AR = ar +BSH = /bin/sh + +include Opencl.makefile + diff --git a/src/MAKE/MACHINES/Makefile.aurora b/src/MAKE/MACHINES/Makefile.aurora new file mode 100644 index 0000000000..1b16025f7c --- /dev/null +++ b/src/MAKE/MACHINES/Makefile.aurora @@ -0,0 +1,121 @@ +# aurora_kokkos = KOKKOS/SYCL, Intel Data Center Max (Ponte Vecchio) GPU, Intel Sapphire Rapids CPU, mpicxx compiler + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +CC = mpicxx +OPTFLAGS = -DSHAKEATOMIC -DCOMMPARA -xSAPPHIRERAPIDS -O2 -ffp-model=fast -qoverride-limits -qopt-zmm-usage=high +CCFLAGS = -qopenmp -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS) +CCFLAGS += -I$(MKLROOT)/include +SHFLAGS = -fPIC +DEPFLAGS = -M + +LINK = mpicxx +LINKFLAGS = -qopenmp $(OPTFLAGS) +LIB = -ltbbmalloc -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 3.5 of the manual + +LMP_INC = -DLAMMPS_GZIP + +# MPI library +# see discussion in Section 3.4 of the manual +# MPI wrapper compiler/linker can provide this info +# can point to dummy MPI library in src/STUBS as in Makefile.serial +# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts +# INC = path for mpi.h, MPI compiler settings +# PATH = path for MPI library +# LIB = name of MPI library + +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = +MPI_LIB = + +# FFT library +# see discussion in Section 3.5.2 of manual +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = -DFFT_MKL -DFFT_SINGLE +FFT_PATH = +FFT_LIB = + +# JPEG and/or PNG library +# see discussion in Section 3.5.4 of manual +# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC +# INC = path(s) for jpeglib.h and/or png.h +# PATH = path(s) for JPEG library and/or PNG library +# LIB = name(s) of JPEG library and/or PNG library + +JPG_INC = +JPG_PATH = +JPG_LIB = + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@ + $(SIZE) $@ + +# Library targets + +$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + @rm -f ../$(ARLIB) + $(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ) + @rm -f $(ARLIB) + @ln -s ../$(ARLIB) $(ARLIB) + +$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + @rm -f $(SHLIB) + @ln -s ../$(SHLIB) $(SHLIB) + +# Compilation rules + +%.o:%.cpp + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< + +sinclude .depend diff --git a/src/MAKE/MACHINES/Makefile.aurora_kokkos b/src/MAKE/MACHINES/Makefile.aurora_kokkos index a263d4cb8c..4aa737346a 100644 --- a/src/MAKE/MACHINES/Makefile.aurora_kokkos +++ b/src/MAKE/MACHINES/Makefile.aurora_kokkos @@ -8,11 +8,13 @@ SHELL = /bin/sh CC = mpicxx CCFLAGS = -g -O3 -DNDEBUG +CCFLAGS += -fsycl-device-code-split=per_kernel SHFLAGS = -fPIC DEPFLAGS = -M LINK = mpicxx LINKFLAGS = -g -O3 +LINKFLAGS += -flink-huge-device-code -fsycl-max-parallel-link-jobs=64 LIB = SIZE = size From 884b9dd9bd855acd55b83a75dfd95a3cf4eaf0f8 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Fri, 19 Jul 2024 15:34:02 +0000 Subject: [PATCH 029/326] add PALS env var --- src/KOKKOS/kokkos.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index 58b9436af6..1c36169002 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -149,6 +149,14 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) set_flag = 1; } } + if ((str = getenv("PALS_LOCAL_RANKID"))) { + if (ngpus > 0) { + int local_rank = atoi(str); + device = local_rank % ngpus; + if (device >= skip_gpu) device++; + set_flag = 1; + } + } if (ngpus > 1 && !set_flag) error->all(FLERR,"Could not determine local MPI rank for multiple " From 27bf4d797466a0c664b593ee6e2a76ac6b30f31e Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Thu, 15 Aug 2024 18:15:30 -0400 Subject: [PATCH 030/326] bond/react: change where to reset mol IDs needs to happen after topology changes communicated --- src/REACTION/fix_bond_react.cpp | 14 ++++++++++---- src/REACTION/fix_bond_react.h | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index 8c241355fd..f2968a2001 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -716,6 +716,7 @@ int FixBondReact::setmask() int mask = 0; mask |= POST_INTEGRATE; mask |= POST_INTEGRATE_RESPA; + mask |= POST_FORCE; return mask; } @@ -3620,10 +3621,6 @@ void FixBondReact::update_everything() atom->natoms -= ndel; // done deleting atoms - - // reset mol ids - if (reset_mol_ids_flag) reset_mol_ids->reset(); - // something to think about: this could done much more concisely if // all atom-level info (bond,angles, etc...) were kinda inherited from a common data struct --JG @@ -4071,6 +4068,8 @@ void FixBondReact::CreateAtoms(char *line, int myrxn) readline(line); rv = sscanf(line,"%d",&tmp); if (rv != 1) error->one(FLERR, "CreateIDs section is incorrectly formatted"); + if (tmp > twomol->natoms) + error->one(FLERR,"Fix bond/react: Invalid atom ID in CreateIDs section of map file"); create_atoms[tmp-1][myrxn] = 1; } if (twomol->xflag == 0) @@ -4331,6 +4330,13 @@ void FixBondReact::post_integrate_respa(int ilevel, int /*iloop*/) /* ---------------------------------------------------------------------- */ +void FixBondReact::post_force(int /*vflag*/) +{ + if (reset_mol_ids_flag) reset_mol_ids->reset(); +} + +/* ---------------------------------------------------------------------- */ + int FixBondReact::pack_forward_comm(int n, int *list, double *buf, int /*pbc_flag*/, int * /*pbc*/) { diff --git a/src/REACTION/fix_bond_react.h b/src/REACTION/fix_bond_react.h index 8c9fc9dce4..d79588c6dd 100644 --- a/src/REACTION/fix_bond_react.h +++ b/src/REACTION/fix_bond_react.h @@ -46,6 +46,7 @@ class FixBondReact : public Fix { void init_list(int, class NeighList *) override; void post_integrate() override; void post_integrate_respa(int, int) override; + void post_force(int) override; int pack_forward_comm(int, int *, double *, int, int *) override; void unpack_forward_comm(int, int, double *) override; From c68ea4fe1e8c409daf26d8b99c2359cea0e8dbfa Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Thu, 15 Aug 2024 19:09:16 -0400 Subject: [PATCH 031/326] better place for error check --- src/REACTION/fix_bond_react.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index f2968a2001..ab9f734a8d 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -486,10 +486,6 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : get_molxspecials(); read_map_file(i); fclose(fp); - if (ncreate == 0 && onemol->natoms != twomol->natoms) - error->all(FLERR,"Fix bond/react: Reaction templates must contain the same number of atoms"); - else if (ncreate > 0 && onemol->natoms + ncreate != twomol->natoms) - error->all(FLERR,"Fix bond/react: Incorrect number of created atoms"); iatomtype[i] = onemol->type[ibonding[i]-1]; jatomtype[i] = onemol->type[jbonding[i]-1]; find_landlocked_atoms(i); @@ -3967,6 +3963,11 @@ void FixBondReact::read_map_file(int myrxn) } else break; } + if (ncreate == 0 && onemol->natoms != twomol->natoms) + error->all(FLERR,"Fix bond/react: Reaction templates must contain the same number of atoms"); + else if (ncreate > 0 && onemol->natoms + ncreate != twomol->natoms) + error->all(FLERR,"Fix bond/react: Incorrect number of created atoms"); + // grab keyword and skip next line parse_keyword(0,line,keyword); From 732be489a330d5872bde1c0f08edac09b17bdd7e Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Thu, 15 Aug 2024 19:48:17 -0400 Subject: [PATCH 032/326] another error check --- src/REACTION/fix_bond_react.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index ab9f734a8d..bd8b3459e2 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -4010,6 +4010,13 @@ void FixBondReact::read_map_file(int myrxn) } + // error check + for (int i = 0; i < onemol->natoms; i++) { + int my_equiv = reverse_equiv[i][1][myrxn]; + if (create_atoms[my_equiv-1][myrxn] == 1) + error->all(FLERR,"Fix bond/react: Created atoms cannot also be listed in Equivalences section\n"); + } + // error check if (bondflag == 0 || equivflag == 0) error->all(FLERR,"Fix bond/react: Map file missing InitiatorIDs or Equivalences section\n"); From 26a0501e6772aeae0d12384ec095fc18eaac981b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 21 Aug 2024 12:07:37 -0400 Subject: [PATCH 033/326] use large logo version with rounded corners and drop shadow --- .../_static/lammps-logo-large.png | Bin 0 -> 729018 bytes doc/utils/sphinx-config/conf.py.in | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 doc/utils/sphinx-config/_static/lammps-logo-large.png diff --git a/doc/utils/sphinx-config/_static/lammps-logo-large.png b/doc/utils/sphinx-config/_static/lammps-logo-large.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f45b2b2625e8c6f5248f59cb21daf809c4223c GIT binary patch literal 729018 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
eYAR*)(gijMbe1~SX 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 Oq_4YVe%#!ZyZ;A&ZxGP{ literal 41615 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%0D|a2{G&G!1^Xw7cYM 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 GuKxq%lD+N# diff --git a/doc/src/JPG/lammps-gui-prefs-general.png b/doc/src/JPG/lammps-gui-prefs-general.png index bfc95569952b40d5bb3154d2f4b6ea977dc96925..7f161284c8a350083a0298e3fe0bf87556cd7d9b 100644 GIT binary patch literal 60580 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 literal 61270 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 diff --git a/doc/src/JPG/lammps-gui-prefs-image.png b/doc/src/JPG/lammps-gui-prefs-image.png index 7dd9e06653f93585c7f56bad9a84dd6e8bd54350..2f830c85f3f73ca7da0b9a40485fc96a8fd47be7 100644 GIT binary patch literal 44816 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 MchQ_%Iu`r>4-2n+i~s-t literal 47477 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 IE1$T(0auYQF#rGn From 5c48a120dd7256cb0c00cd7aaa23d679f7237d65 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 01:54:05 -0400 Subject: [PATCH 046/326] add versionadded entry for smooth plots --- doc/src/Howto_lammps_gui.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 09ec0470a0..4d283cbcc8 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -289,6 +289,10 @@ text area. Charts Window ------------- +.. versionadded:: 1.6 + + Plot smoothing support + By default, when starting a run, a *Charts* window opens that displays a plot of thermodynamic output of the LAMMPS calculation as shown below. From 1494d12b886a27908cfafc265848c53c0eb0a8fe Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 02:27:29 -0400 Subject: [PATCH 047/326] step LAMMPS-GUI version number. update TODO list --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/TODO.md | 2 +- tools/lammps-gui/lammps-gui.appdata.xml | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 3fd2e1e7d8..73e945820b 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.6.8 LANGUAGES CXX) +project(lammps-gui VERSION 1.6.9 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 9485368374..e3782e6446 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -4,7 +4,6 @@ LAMMPS-GUI TODO list: - figure out how widgets can be resized to fraction of available screen size. - figure out stacking order of frames and whether it can be more flexible -- figure out how to avoid corrupted cached thermo data while reading it. - implement a timed "Auto-Save" feature that saves after some idle time. set timeout in Editor preferences. - add a "Colors" menu to the image viewer to adjust color settings for the current image (unlike the defaults in the perferences). Support color by @@ -28,6 +27,7 @@ LAMMPS-GUI TODO list: - call to LAMMPS to create geometries from lattices (with/without molecule files) and STL files - call to LAMMPS to generate visualizations of geometries - edit force field parameters, e.g. apply charmm + - edit / manage labelmap # Long term ideas (v2.x) - rewrite entire application to build the App and its layout manually diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 32028f9ee1..95652129a1 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -54,8 +54,13 @@ + + + + + Support plotting raw and smoothed data From b540f572a35bea57e0095bff99b9e93c735accb4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 08:40:24 -0400 Subject: [PATCH 048/326] 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 049/326] 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 050/326] 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 051/326] 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 052/326] 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 053/326] 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 054/326] 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 055/326] 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 056/326] 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 057/326] 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 058/326] 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 059/326] 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 060/326] 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 061/326] 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 062/326] 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 063/326] 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 064/326] 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 065/326] 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 066/326] 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 067/326] 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 068/326] 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 069/326] 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 070/326] 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 01bbd60568d55abab0b34bb0d775a853dbb33e3a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 17:41:47 -0400 Subject: [PATCH 071/326] avoid INTEL package compilation failure with upcoming Intel compiler releases --- src/INTEL/intel_intrinsics.h | 4 ++++ src/INTEL/intel_intrinsics_airebo.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/INTEL/intel_intrinsics.h b/src/INTEL/intel_intrinsics.h index c106dfd411..a2b5a25a6a 100644 --- a/src/INTEL/intel_intrinsics.h +++ b/src/INTEL/intel_intrinsics.h @@ -123,7 +123,9 @@ struct vector_ops { static fvec recip(const fvec &a) { return _mm512_recip_pd(a); } template static void gather_prefetch_t0(const ivec &idx, bvec mask, const void *base) { +#ifdef __AVX512PF__ _mm512_mask_prefetch_i32gather_ps(idx, mask, base, scale, _MM_HINT_T0); +#endif } template static fvec gather(const fvec &from, bvec mask, const ivec &idx, const void *base) { @@ -262,7 +264,9 @@ struct vector_ops { static fvec recip(const fvec &a) { return _mm512_recip_ps(a); } template static void gather_prefetch_t0(const ivec &idx, bvec mask, const void *base) { +#ifdef __AVX512PF__ _mm512_mask_prefetch_i32gather_ps(idx, mask, base, scale, _MM_HINT_T0); +#endif } template static fvec gather(const fvec &from, bvec mask, const ivec &idx, const void *base) { diff --git a/src/INTEL/intel_intrinsics_airebo.h b/src/INTEL/intel_intrinsics_airebo.h index 04cc78f3d2..41b147ae3c 100644 --- a/src/INTEL/intel_intrinsics_airebo.h +++ b/src/INTEL/intel_intrinsics_airebo.h @@ -639,8 +639,10 @@ public: AVEC_BINOP(-, sub) VEC_INLINE static void gather_prefetch0(const IVEC_NAME &a, void * mem) { +#ifdef __AVX512PF__ _mm512_mask_prefetch_i32gather_ps(a.val_, BVEC_NAME::full().val_, mem, sizeof(FVEC_SCAL_T), _MM_HINT_T0); +#endif } }; @@ -697,8 +699,10 @@ public: AVEC2_BINOP(-, sub) VEC_INLINE static void gather_prefetch0(const IVEC_NAME &a, void * mem) { +#ifdef __AVX512PF__ _mm512_mask_prefetch_i32gather_ps(a.val_, BVEC_NAME::full().val_, mem, sizeof(double), _MM_HINT_T0); +#endif } }; #endif From 42dec6fe6e0b7785a4fd41063c1a15eadfbffbc8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 21:03:29 -0400 Subject: [PATCH 072/326] modernize and remove dead code --- unittest/force-styles/test_angle_style.cpp | 200 +++++++++--------- unittest/force-styles/test_bond_style.cpp | 30 +-- unittest/force-styles/test_dihedral_style.cpp | 26 +-- unittest/force-styles/test_improper_style.cpp | 35 +-- 4 files changed, 150 insertions(+), 141 deletions(-) diff --git a/unittest/force-styles/test_angle_style.cpp b/unittest/force-styles/test_angle_style.cpp index e706cc11ac..e07ec3b689 100644 --- a/unittest/force-styles/test_angle_style.cpp +++ b/unittest/force-styles/test_angle_style.cpp @@ -362,8 +362,9 @@ TEST(AngleStyle, plain) EXPECT_STRESS("run_stress (newton on)", angle->virial, test_config.run_stress, epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(angle->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; @@ -393,8 +394,8 @@ TEST(AngleStyle, plain) EXPECT_STRESS("run_stress (newton off)", angle->virial, test_config.run_stress, epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(angle->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; @@ -480,8 +481,9 @@ TEST(AngleStyle, omp) EXPECT_STRESS("run_stress (newton on)", angle->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with angle style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -515,8 +517,8 @@ TEST(AngleStyle, omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with angle style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -532,124 +534,124 @@ TEST(AngleStyle, omp) TEST(AngleStyle, kokkos_omp) { - if (!LAMMPS::is_installed_pkg("KOKKOS")) GTEST_SKIP(); - if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP(); - if (!Info::has_accelerator_feature("KOKKOS", "api", "openmp")) GTEST_SKIP(); + if (!LAMMPS::is_installed_pkg("KOKKOS")) GTEST_SKIP(); + if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP(); + if (!Info::has_accelerator_feature("KOKKOS", "api", "openmp")) GTEST_SKIP(); - LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite", - "-k", "on", "t", "4", "-sf", "kk"}; + LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite", + "-k", "on", "t", "4", "-sf", "kk"}; - ::testing::internal::CaptureStdout(); - LAMMPS *lmp = init_lammps(args, test_config, true); + ::testing::internal::CaptureStdout(); + LAMMPS *lmp = init_lammps(args, test_config, true); - std::string output = ::testing::internal::GetCapturedStdout(); - if (verbose) std::cout << output; + std::string output = ::testing::internal::GetCapturedStdout(); + if (verbose) std::cout << output; - if (!lmp) { - std::cerr << "One or more prerequisite styles with /kk suffix\n" - "are not available in this LAMMPS configuration:\n"; - for (auto &prerequisite : test_config.prerequisites) { - std::cerr << prerequisite.first << "_style " << prerequisite.second << "\n"; + if (!lmp) { + std::cerr << "One or more prerequisite styles with /kk suffix\n" + "are not available in this LAMMPS configuration:\n"; + for (auto &prerequisite : test_config.prerequisites) { + std::cerr << prerequisite.first << "_style " << prerequisite.second << "\n"; + } + GTEST_SKIP(); } - GTEST_SKIP(); - } - EXPECT_THAT(output, StartsWith("LAMMPS (")); - EXPECT_THAT(output, HasSubstr("Loop time")); + EXPECT_THAT(output, StartsWith("LAMMPS (")); + EXPECT_THAT(output, HasSubstr("Loop time")); - // abort if running in parallel and not all atoms are local - const int nlocal = lmp->atom->nlocal; - ASSERT_EQ(lmp->atom->natoms, nlocal); + // abort if running in parallel and not all atoms are local + const int nlocal = lmp->atom->nlocal; + ASSERT_EQ(lmp->atom->natoms, nlocal); - // relax error a bit for KOKKOS package - double epsilon = 5.0 * test_config.epsilon; + // relax error a bit for KOKKOS package + double epsilon = 5.0 * test_config.epsilon; - ErrorStats stats; - auto angle = lmp->force->angle; + ErrorStats stats; + auto angle = lmp->force->angle; - EXPECT_FORCES("init_forces (newton on)", lmp->atom, test_config.init_forces, epsilon); - EXPECT_STRESS("init_stress (newton on)", angle->virial, test_config.init_stress, epsilon); - - stats.reset(); - EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); - if (print_stats) std::cerr << "init_energy stats, newton on: " << stats << std::endl; - - if (!verbose) ::testing::internal::CaptureStdout(); - run_lammps(lmp); - if (!verbose) ::testing::internal::GetCapturedStdout(); - - EXPECT_FORCES("run_forces (newton on)", lmp->atom, test_config.run_forces, 10 * epsilon); - EXPECT_STRESS("run_stress (newton on)", angle->virial, test_config.run_stress, epsilon); - - stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); - EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); - EXPECT_FP_LE_WITH_EPS(angle->energy, energy, epsilon); - if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; - - if (!verbose) ::testing::internal::CaptureStdout(); - cleanup_lammps(lmp, test_config); - lmp = init_lammps(args, test_config, false); - if (!verbose) ::testing::internal::GetCapturedStdout(); - - // skip over these tests if newton bond is forced to be on - if (lmp->force->newton_bond == 0) { - angle = lmp->force->angle; - - EXPECT_FORCES("init_forces (newton off)", lmp->atom, test_config.init_forces, epsilon); - EXPECT_STRESS("init_stress (newton off)", angle->virial, test_config.init_stress, - 2 * epsilon); + EXPECT_FORCES("init_forces (newton on)", lmp->atom, test_config.init_forces, epsilon); + EXPECT_STRESS("init_stress (newton on)", angle->virial, test_config.init_stress, epsilon); stats.reset(); EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); - if (print_stats) std::cerr << "init_energy stats, newton off:" << stats << std::endl; + if (print_stats) std::cerr << "init_energy stats, newton on: " << stats << std::endl; if (!verbose) ::testing::internal::CaptureStdout(); run_lammps(lmp); if (!verbose) ::testing::internal::GetCapturedStdout(); - EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, 10 * epsilon); - EXPECT_STRESS("run_stress (newton off)", angle->virial, test_config.run_stress, epsilon); + EXPECT_FORCES("run_forces (newton on)", lmp->atom, test_config.run_forces, 10 * epsilon); + EXPECT_STRESS("run_stress (newton on)", angle->virial, test_config.run_stress, epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(angle->energy, energy, epsilon); - if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; - } + if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; - if (!verbose) ::testing::internal::CaptureStdout(); - restart_lammps(lmp, test_config); - if (!verbose) ::testing::internal::GetCapturedStdout(); + if (!verbose) ::testing::internal::CaptureStdout(); + cleanup_lammps(lmp, test_config); + lmp = init_lammps(args, test_config, false); + if (!verbose) ::testing::internal::GetCapturedStdout(); - angle = lmp->force->angle; - EXPECT_FORCES("restart_forces", lmp->atom, test_config.init_forces, epsilon); - EXPECT_STRESS("restart_stress", angle->virial, test_config.init_stress, epsilon); + // skip over these tests if newton bond is forced to be on + if (lmp->force->newton_bond == 0) { + angle = lmp->force->angle; - stats.reset(); - EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); - if (print_stats) std::cerr << "restart_energy stats:" << stats << std::endl; + EXPECT_FORCES("init_forces (newton off)", lmp->atom, test_config.init_forces, epsilon); + EXPECT_STRESS("init_stress (newton off)", angle->virial, test_config.init_stress, + 2 * epsilon); - if (!verbose) ::testing::internal::CaptureStdout(); - data_lammps(lmp, test_config); - if (!verbose) ::testing::internal::GetCapturedStdout(); + stats.reset(); + EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); + if (print_stats) std::cerr << "init_energy stats, newton off:" << stats << std::endl; - angle = lmp->force->angle; - EXPECT_FORCES("data_forces", lmp->atom, test_config.init_forces, epsilon); - EXPECT_STRESS("data_stress", angle->virial, test_config.init_stress, epsilon); + if (!verbose) ::testing::internal::CaptureStdout(); + run_lammps(lmp); + if (!verbose) ::testing::internal::GetCapturedStdout(); - stats.reset(); - EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); - if (print_stats) std::cerr << "data_energy stats:" << stats << std::endl; + EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, 10 * epsilon); + EXPECT_STRESS("run_stress (newton off)", angle->virial, test_config.run_stress, epsilon); - if (!verbose) ::testing::internal::CaptureStdout(); - cleanup_lammps(lmp, test_config); - if (!verbose) ::testing::internal::GetCapturedStdout(); + stats.reset(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); + EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.run_energy, epsilon); + EXPECT_FP_LE_WITH_EPS(angle->energy, energy, epsilon); + if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; + } + + if (!verbose) ::testing::internal::CaptureStdout(); + restart_lammps(lmp, test_config); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + angle = lmp->force->angle; + EXPECT_FORCES("restart_forces", lmp->atom, test_config.init_forces, epsilon); + EXPECT_STRESS("restart_stress", angle->virial, test_config.init_stress, epsilon); + + stats.reset(); + EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); + if (print_stats) std::cerr << "restart_energy stats:" << stats << std::endl; + + if (!verbose) ::testing::internal::CaptureStdout(); + data_lammps(lmp, test_config); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + angle = lmp->force->angle; + EXPECT_FORCES("data_forces", lmp->atom, test_config.init_forces, epsilon); + EXPECT_STRESS("data_stress", angle->virial, test_config.init_stress, epsilon); + + stats.reset(); + EXPECT_FP_LE_WITH_EPS(angle->energy, test_config.init_energy, epsilon); + if (print_stats) std::cerr << "data_energy stats:" << stats << std::endl; + + if (!verbose) ::testing::internal::CaptureStdout(); + cleanup_lammps(lmp, test_config); + if (!verbose) ::testing::internal::GetCapturedStdout(); }; - TEST(AngleStyle, numdiff) { if (!LAMMPS::is_installed_pkg("EXTRA-FIX")) GTEST_SKIP(); @@ -766,11 +768,11 @@ TEST(AngleStyle, single) nangletypes)); if (utils::strmatch(test_config.angle_style, "^spica")) { - command("pair_style lj/spica 8.0"); - command("pair_coeff * * lj9_6 0.02 2.5"); + command("pair_style lj/spica 8.0"); + command("pair_coeff * * lj9_6 0.02 2.5"); } else { - command("pair_style zero 8.0"); - command("pair_coeff * *"); + command("pair_style zero 8.0"); + command("pair_coeff * *"); } command("angle_style " + test_config.angle_style); diff --git a/unittest/force-styles/test_bond_style.cpp b/unittest/force-styles/test_bond_style.cpp index 81b105259d..39316ec035 100644 --- a/unittest/force-styles/test_bond_style.cpp +++ b/unittest/force-styles/test_bond_style.cpp @@ -362,8 +362,9 @@ TEST(BondStyle, plain) EXPECT_STRESS("run_stress (newton on)", bond->virial, test_config.run_stress, epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(bond->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(bond->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; @@ -393,8 +394,8 @@ TEST(BondStyle, plain) EXPECT_STRESS("run_stress (newton off)", bond->virial, test_config.run_stress, epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(bond->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(bond->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; @@ -482,8 +483,9 @@ TEST(BondStyle, omp) EXPECT_STRESS("run_stress (newton on)", bond->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(bond->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with bond style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -517,8 +519,8 @@ TEST(BondStyle, omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(bond->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with bond style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -584,13 +586,13 @@ TEST(BondStyle, kokkos_omp) EXPECT_STRESS("run_stress (newton on)", bond->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(bond->energy, test_config.run_energy, epsilon); // FIXME: this is currently broken ??? for KOKKOS with bond style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. - //if (test_config.bond_style.substr(0, 6) != "hybrid") + // if (test_config.bond_style.substr(0, 6) != "hybrid") // EXPECT_FP_LE_WITH_EPS(bond->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; @@ -621,13 +623,13 @@ TEST(BondStyle, kokkos_omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(bond->energy, test_config.run_energy, epsilon); // FIXME: this is currently broken ??? for KOKKOS with bond style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. - //if (test_config.bond_style.substr(0, 6) != "hybrid") + // if (test_config.bond_style.substr(0, 6) != "hybrid") // EXPECT_FP_LE_WITH_EPS(bond->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; diff --git a/unittest/force-styles/test_dihedral_style.cpp b/unittest/force-styles/test_dihedral_style.cpp index 324745cc41..656a45861e 100644 --- a/unittest/force-styles/test_dihedral_style.cpp +++ b/unittest/force-styles/test_dihedral_style.cpp @@ -363,8 +363,9 @@ TEST(DihedralStyle, plain) EXPECT_STRESS("run_stress (newton on)", dihedral->virial, test_config.run_stress, epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(dihedral->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(dihedral->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; @@ -394,8 +395,8 @@ TEST(DihedralStyle, plain) EXPECT_STRESS("run_stress (newton off)", dihedral->virial, test_config.run_stress, epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(dihedral->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(dihedral->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; @@ -484,8 +485,9 @@ TEST(DihedralStyle, omp) EXPECT_STRESS("run_stress (newton on)", dihedral->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(dihedral->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with dihedral style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -519,8 +521,8 @@ TEST(DihedralStyle, omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(dihedral->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with dihedral style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -587,8 +589,8 @@ TEST(DihedralStyle, kokkos_omp) EXPECT_STRESS("run_stress (newton on)", dihedral->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(dihedral->energy, test_config.run_energy, epsilon); // FIXME: this is currently broken ??? for KOKKOS with dihedral style hybrid @@ -623,8 +625,8 @@ TEST(DihedralStyle, kokkos_omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(dihedral->energy, test_config.run_energy, epsilon); // FIXME: this is currently broken ??? for KOKKOS with dihedral style hybrid diff --git a/unittest/force-styles/test_improper_style.cpp b/unittest/force-styles/test_improper_style.cpp index a65bf438df..bddb986d9c 100644 --- a/unittest/force-styles/test_improper_style.cpp +++ b/unittest/force-styles/test_improper_style.cpp @@ -356,8 +356,9 @@ TEST(ImproperStyle, plain) EXPECT_STRESS("run_stress (newton on)", improper->virial, test_config.run_stress, epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(improper->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(improper->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; @@ -387,8 +388,8 @@ TEST(ImproperStyle, plain) EXPECT_STRESS("run_stress (newton off)", improper->virial, test_config.run_stress, epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(improper->energy, test_config.run_energy, epsilon); EXPECT_FP_LE_WITH_EPS(improper->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; @@ -477,8 +478,9 @@ TEST(ImproperStyle, omp) EXPECT_STRESS("run_stress (newton on)", improper->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + double energy = 0.0; + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(improper->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with improper style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -512,8 +514,8 @@ TEST(ImproperStyle, omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) energy = icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(improper->energy, test_config.run_energy, epsilon); // TODO: this is currently broken for OPENMP with improper style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. @@ -532,8 +534,9 @@ TEST(ImproperStyle, kokkos_omp) if (!LAMMPS::is_installed_pkg("KOKKOS")) GTEST_SKIP(); if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP(); - LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite", - "-k", "on", "t", "4", "-sf", "kk"}; + LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", + "-nocite", "-k", "on", "t", "4", + "-sf", "kk"}; ::testing::internal::CaptureStdout(); LAMMPS *lmp = init_lammps(args, test_config, true); @@ -579,12 +582,12 @@ TEST(ImproperStyle, kokkos_omp) EXPECT_STRESS("run_stress (newton on)", improper->virial, test_config.run_stress, 10 * epsilon); stats.reset(); - int id = lmp->modify->find_compute("sum"); - double energy = lmp->modify->compute[id]->compute_scalar(); + auto *icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(improper->energy, test_config.run_energy, epsilon); // FIXME: this is currently broken ??? for KOKKOS with improper style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. - //if (test_config.improper_style.substr(0, 6) != "hybrid") + // if (test_config.improper_style.substr(0, 6) != "hybrid") // EXPECT_FP_LE_WITH_EPS(improper->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton on: " << stats << std::endl; @@ -614,12 +617,12 @@ TEST(ImproperStyle, kokkos_omp) 10 * epsilon); stats.reset(); - id = lmp->modify->find_compute("sum"); - energy = lmp->modify->compute[id]->compute_scalar(); + icompute = lmp->modify->get_compute_by_id("sum"); + if (icompute) icompute->compute_scalar(); EXPECT_FP_LE_WITH_EPS(improper->energy, test_config.run_energy, epsilon); // FIXME: this is currently broken ??? for KOKKOS with improper style hybrid // needs to be fixed in the main code somewhere. Not sure where, though. - //if (test_config.improper_style.substr(0, 6) != "hybrid") + // if (test_config.improper_style.substr(0, 6) != "hybrid") // EXPECT_FP_LE_WITH_EPS(improper->energy, energy, epsilon); if (print_stats) std::cerr << "run_energy stats, newton off:" << stats << std::endl; } From b300ef29ee3a3d222bd5cc28566d5c9ce29f168e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 23:39:29 -0400 Subject: [PATCH 073/326] simplify; make certain nmax is always initialized --- src/utils.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index dc6ee459a7..59984c8443 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -1005,8 +1005,6 @@ int utils::expand_type_int(const char *file, int line, const std::string &str, i char *typestr = expand_type(file, line, str, mode, lmp); int type = inumeric(file, line, typestr ? typestr : str, false, lmp); if (verify) { - int errorflag = 0; - if (type <= 0) errorflag = 1; int nmax; switch (mode) { case Atom::ATOM: @@ -1024,10 +1022,12 @@ int utils::expand_type_int(const char *file, int line, const std::string &str, i case Atom::IMPROPER: nmax = lmp->atom->nimpropertypes; break; + default: + nmax = 0; } - if (type > nmax) errorflag = 1; - if (errorflag) lmp->error->all(file, line, "{} type {} is out of bounds ({}-{})", - labeltypes[mode], type, 1, nmax); + if ((type <= 0) || (type > nmax)) + lmp->error->all(file, line, "{} type {} is out of bounds ({}-{})", labeltypes[mode], type, 1, + nmax); } delete[] typestr; return type; From 51a78a8a7fe1b2a6b010deb38bd6615ec0c80fb4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 23:55:42 -0400 Subject: [PATCH 074/326] make else branches only for fixes --- src/fix_ave_grid.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fix_ave_grid.cpp b/src/fix_ave_grid.cpp index 53092900b3..ca89c918ba 100644 --- a/src/fix_ave_grid.cpp +++ b/src/fix_ave_grid.cpp @@ -463,7 +463,7 @@ void FixAveGrid::init() if (which[m] == ArgInfo::COMPUTE) { compute = modify->get_compute_by_index(value2index[m]); grid2d = (Grid2d *) compute->get_grid_by_index(value2grid[m]); - } else { + } else if (which[m] == ArgInfo::FIX) { fix = modify->get_fix_by_index(value2index[m]); grid2d = (Grid2d *) fix->get_grid_by_index(value2grid[m]); } @@ -475,7 +475,7 @@ void FixAveGrid::init() if (which[m] == ArgInfo::COMPUTE) { compute = modify->get_compute_by_index(value2index[m]); grid3d = (Grid3d *) compute->get_grid_by_index(value2grid[m]); - } else { + } else if (which[m] == ArgInfo::FIX) { fix = modify->get_fix_by_index(value2index[m]); grid3d = (Grid3d *) fix->get_grid_by_index(value2grid[m]); } @@ -1127,7 +1127,7 @@ void FixAveGrid::grid2grid() ovec2d = (double **) compute->get_griddata_by_index(idata); else oarray2d = (double ***) compute->get_griddata_by_index(idata); - } else { + } else if (which[m] == ArgInfo::FIX) { if (j == 0) ovec2d = (double **) fix->get_griddata_by_index(idata); else @@ -1165,7 +1165,7 @@ void FixAveGrid::grid2grid() ovec3d = (double ***) compute->get_griddata_by_index(idata); else oarray3d = (double ****) compute->get_griddata_by_index(idata); - } else { + } else if (which[m] == ArgInfo::FIX) { if (j == 0) { ovec3d = (double ***) fix->get_griddata_by_index(idata); } else From b28f18106c6c48a0fb3840364ac9d0e9f7da715e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 23:55:59 -0400 Subject: [PATCH 075/326] try to make coverity happy --- src/reader_native.cpp | 4 ++-- src/reader_xyz.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/reader_native.cpp b/src/reader_native.cpp index f0a4976038..9c3a74f36c 100644 --- a/src/reader_native.cpp +++ b/src/reader_native.cpp @@ -139,10 +139,10 @@ void ReaderNative::skip() // invoke read_lines() in chunks no larger than MAXSMALLINT - int nchunk; + bigint nchunk; while (nremain) { nchunk = MIN(nremain,MAXSMALLINT); - read_lines(nchunk); + read_lines((int)nchunk); nremain -= nchunk; } } diff --git a/src/reader_xyz.cpp b/src/reader_xyz.cpp index 385682533c..216651455b 100644 --- a/src/reader_xyz.cpp +++ b/src/reader_xyz.cpp @@ -90,11 +90,11 @@ void ReaderXYZ::skip() { // invoke read_lines() in chunks no larger than MAXSMALLINT - int nchunk; + bigint nchunk; bigint nremain = natoms; while (nremain) { nchunk = MIN(nremain,MAXSMALLINT); - read_lines(nchunk); + read_lines((int)nchunk); nremain -= nchunk; } } From f6d0d91e2b0a0356261927d85f66e64829b31b94 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 00:02:59 -0400 Subject: [PATCH 076/326] make certain local virial storage is initialized --- src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp | 2 +- src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp | 2 +- src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp | 2 +- src/OPENMP/pair_lj_long_tip4p_long_omp.cpp | 2 +- src/OPENMP/pair_tip4p_cut_omp.cpp | 2 +- src/OPENMP/pair_tip4p_long_omp.cpp | 2 +- src/OPENMP/pair_tip4p_long_soft_omp.cpp | 2 +- src/OPT/pair_lj_cut_tip4p_long_opt.cpp | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp b/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp index c54e681686..36033dcaf4 100644 --- a/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp +++ b/src/OPENMP/pair_lj_cut_tip4p_cut_omp.cpp @@ -120,7 +120,7 @@ void PairLJCutTIP4PCutOMP::eval(int iifrom, int iito, ThrData * const thr) double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul; double r,rsq,r2inv,r6inv,forcecoul,forcelj,cforce; double factor_coul,factor_lj; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; dbl3_t x1,x2,xH1,xH2; diff --git a/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp b/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp index 8f824ca272..20d4b9481d 100644 --- a/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp +++ b/src/OPENMP/pair_lj_cut_tip4p_long_omp.cpp @@ -139,7 +139,7 @@ void PairLJCutTIP4PLongOMP::eval(int iifrom, int iito, ThrData * const thr) double r,rsq,r2inv,r6inv,forcecoul,forcelj,cforce; double factor_coul,factor_lj; double grij,expm2,prefactor,t,erfc; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; dbl3_t x1,x2,xH1,xH2; diff --git a/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp b/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp index a646a2dec1..66a1559448 100644 --- a/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp +++ b/src/OPENMP/pair_lj_cut_tip4p_long_soft_omp.cpp @@ -127,7 +127,7 @@ void PairLJCutTIP4PLongSoftOMP::eval(int iifrom, int iito, ThrData * const thr) double factor_coul,factor_lj; double grij,expm2,prefactor,t,erfc; double denc, denlj, r4sig6; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; dbl3_t x1,x2,xH1,xH2; diff --git a/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp b/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp index b8206bd21f..f93c7f480d 100644 --- a/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp +++ b/src/OPENMP/pair_lj_long_tip4p_long_omp.cpp @@ -1614,7 +1614,7 @@ void PairLJLongTIP4PLongOMP::eval_outer(int iifrom, int iito, ThrData * const th double qtmp,xtmp,ytmp,ztmp,delx,dely,delz; double r2inv,forcecoul,forcelj,cforce, respa_coul, respa_lj, frespa; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; dbl3_t x1,x2,xH1,xH2; const auto * _noalias const x = (dbl3_t *) atom->x[0]; diff --git a/src/OPENMP/pair_tip4p_cut_omp.cpp b/src/OPENMP/pair_tip4p_cut_omp.cpp index d43559fc81..a93a10f192 100644 --- a/src/OPENMP/pair_tip4p_cut_omp.cpp +++ b/src/OPENMP/pair_tip4p_cut_omp.cpp @@ -120,7 +120,7 @@ void PairTIP4PCutOMP::eval(int iifrom, int iito, ThrData * const thr) double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul; double r,rsq,r2inv,forcecoul,cforce; double factor_coul; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; dbl3_t x1,x2,xH1,xH2; diff --git a/src/OPENMP/pair_tip4p_long_omp.cpp b/src/OPENMP/pair_tip4p_long_omp.cpp index 186549a999..3d96c6ac2e 100644 --- a/src/OPENMP/pair_tip4p_long_omp.cpp +++ b/src/OPENMP/pair_tip4p_long_omp.cpp @@ -139,7 +139,7 @@ void PairTIP4PLongOMP::eval(int iifrom, int iito, ThrData * const thr) double r,rsq,r2inv,forcecoul,cforce; double factor_coul; double grij,expm2,prefactor,t,erfc; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; dbl3_t x1,x2,xH1,xH2; diff --git a/src/OPENMP/pair_tip4p_long_soft_omp.cpp b/src/OPENMP/pair_tip4p_long_soft_omp.cpp index d2fa95a10c..8799e05b21 100644 --- a/src/OPENMP/pair_tip4p_long_soft_omp.cpp +++ b/src/OPENMP/pair_tip4p_long_soft_omp.cpp @@ -124,7 +124,7 @@ void PairTIP4PLongSoftOMP::eval(int iifrom, int iito, ThrData * const thr) double r,rsq,forcecoul,cforce; double factor_coul,denc; double grij,expm2,prefactor,t,erfc; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; dbl3_t x1,x2,xH1,xH2; diff --git a/src/OPT/pair_lj_cut_tip4p_long_opt.cpp b/src/OPT/pair_lj_cut_tip4p_long_opt.cpp index 9a9e536bfe..e719efe138 100644 --- a/src/OPT/pair_lj_cut_tip4p_long_opt.cpp +++ b/src/OPT/pair_lj_cut_tip4p_long_opt.cpp @@ -107,7 +107,7 @@ void PairLJCutTIP4PLongOpt::eval() double r,rsq,r2inv,r6inv,forcecoul,forcelj,cforce; double factor_coul,factor_lj; double grij,expm2,prefactor,t,erfc; - double v[6]; + double v[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double fdx,fdy,fdz,fOx,fOy,fOz,fHx,fHy,fHz; const double *x1,*x2,*xH1,*xH2; From d8329b30e1560a195a51ff9963a9c9d2008c37da Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 00:09:41 -0400 Subject: [PATCH 077/326] force initialization --- src/region_cylinder.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/region_cylinder.cpp b/src/region_cylinder.cpp index 601f70e66b..11783dc125 100644 --- a/src/region_cylinder.cpp +++ b/src/region_cylinder.cpp @@ -33,6 +33,7 @@ enum { CONSTANT, VARIABLE }; RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg), c1str(nullptr), c2str(nullptr), rstr(nullptr) { + c1style = c2style = CONSTANT; options(narg - 8, &arg[8]); // check open face settings From 4f3004fc408e8931d54875d339ae8883b9421a10 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 00:22:14 -0400 Subject: [PATCH 078/326] we use PNG version of logo --- .../_static/lammps-logo-large.jpg | Bin 175008 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/utils/sphinx-config/_static/lammps-logo-large.jpg diff --git a/doc/utils/sphinx-config/_static/lammps-logo-large.jpg b/doc/utils/sphinx-config/_static/lammps-logo-large.jpg deleted file mode 100644 index 8cb15e77b20354c6c8a7dfd138ac3702066433a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175008 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

QWVeK!EZvub@9~wsm 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 L{>Ntk_Hpblb!+SL From 1b339b84e1c9d2ffa853bd8ef4d40b7dd0408080 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 02:24:18 -0400 Subject: [PATCH 079/326] forgot to store chart update preference --- tools/lammps-gui/preferences.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 2955d37eb1..ab6397f7bd 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -171,6 +171,8 @@ void Preferences::accept() auto *spin = tabWidget->findChild("updfreq"); if (spin) settings->setValue("updfreq", spin->value()); + spin = tabWidget->findChild("updchart"); + if (spin) settings->setValue("updchart", spin->value()); if (need_relaunch) { QMessageBox msg(QMessageBox::Information, QString("Relaunching LAMMPS-GUI"), From a20997b7cdb16dae39acb8accd8a55f0f519279d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 03:16:48 -0400 Subject: [PATCH 080/326] regularize application startup. use Qt's command line parser support --- tools/lammps-gui/lammpsgui.cpp | 12 ----------- tools/lammps-gui/main.cpp | 38 +++++++++++++++++++++++----------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 32b23c9d12..533d13965d 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -76,9 +75,6 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : prefdialog(nullptr), lammpsstatus(nullptr), varwindow(nullptr), wizard(nullptr), runner(nullptr), is_running(false), run_counter(0) { - // enforce using the plain ASCII C locale within the GUI. - QLocale::setDefault(QLocale("C")); - #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // register QList only needed for Qt5 qRegisterMetaTypeStreamOperators>("QList"); @@ -95,14 +91,6 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : if (current_dir == "/") current_dir = QDir::homePath(); inspectList.clear(); -#define stringify(x) myxstr(x) -#define myxstr(x) #x - QCoreApplication::setOrganizationName("The LAMMPS Developers"); - QCoreApplication::setOrganizationDomain("lammps.org"); - QCoreApplication::setApplicationName("LAMMPS-GUI - QT" stringify(QT_VERSION_MAJOR)); -#undef stringify -#undef myxstr - // restore and initialize settings QSettings settings; diff --git a/tools/lammps-gui/main.cpp b/tools/lammps-gui/main.cpp index 4820d48ebb..736a37d58b 100644 --- a/tools/lammps-gui/main.cpp +++ b/tools/lammps-gui/main.cpp @@ -14,28 +14,42 @@ #include "lammpsgui.h" #include +#include +#include +#include #include #include +#define stringify(x) myxstr(x) +#define myxstr(x) #x + int main(int argc, char *argv[]) { - QApplication a(argc, argv); + Q_INIT_RESOURCE(lammpsgui); + QApplication app(argc, argv); + // enforce using the plain ASCII C locale within the GUI. + QLocale::setDefault(QLocale::c()); + QCoreApplication::setOrganizationName("The LAMMPS Developers"); + QCoreApplication::setOrganizationDomain("lammps.org"); + QCoreApplication::setApplicationName("LAMMPS-GUI - QT" stringify(QT_VERSION_MAJOR)); + QCoreApplication::setApplicationVersion(LAMMPS_GUI_VERSION); + QCommandLineParser parser; + parser.setApplicationDescription( + "\nThis is LAMMPS-GUI v" LAMMPS_GUI_VERSION "\n" + "\nA graphical editor for LAMMPS input files with syntax highlighting and\n" + "auto-completion that can run LAMMPS directly. It has built-in capabilities\n" + "for monitoring, visualization, plotting, and capturing console output."); + parser.addHelpOption(); + parser.addVersionOption(); + parser.addPositionalArgument("file", "The LAMMPS input file to open (optional)."); + parser.process(app); // this removes known arguments const char *infile = nullptr; - if (argc > 1) { - infile = argv[1]; - if ((strcmp(infile, "-help") == 0) || (strcmp(infile, "-h") == 0)) { - printf("This is LAMMPS-GUI version " LAMMPS_GUI_VERSION - " using Qt version " QT_VERSION_STR "\n"); - printf("Usage: %s [-h|-help|]\n", argv[0]); - return 1; - } - } - + if (argc > 1) infile = argv[1]; LammpsGui w(nullptr, infile); w.show(); - return QApplication::exec(); + return app.exec(); } // Local Variables: From 2beda14b238d82478c3ada9b720b4b199b8c95ab Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 03:26:46 -0400 Subject: [PATCH 081/326] clear clipboard before exiting --- tools/lammps-gui/imageviewer.cpp | 2 ++ tools/lammps-gui/lammpsgui.cpp | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index ff96967498..725d557606 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -498,7 +498,9 @@ void ImageViewer::cmd_to_clipboard() for (int i = modidx + 1; i < maxidx; ++i) dumpcmd += blank + words[i]; dumpcmd += '\n'; +#if QT_CONFIG(clipboard) QGuiApplication::clipboard()->setText(dumpcmd); +#endif } void ImageViewer::change_group(int) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 533d13965d..fe94df387a 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -904,6 +904,9 @@ void LammpsGui::quit() settings.setValue("mainy", height()); } settings.sync(); +#if QT_CONFIG(clipboard) + QGuiApplication::clipboard()->setText(""); +#endif QCoreApplication::quit(); } @@ -1457,8 +1460,10 @@ void LammpsGui::about() } to_clipboard += info.c_str(); +#if QT_CONFIG(clipboard) QGuiApplication::clipboard()->setText(to_clipboard); info += "(Note: this text has been copied to the clipboard)\n"; +#endif QMessageBox msg; msg.setWindowTitle("About LAMMPS-GUI"); From bc701c20f715d42acd7c3a74927afa4aff5d5e47 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 23 Aug 2024 03:30:56 -0400 Subject: [PATCH 082/326] cleaning clipboard has no effect --- tools/lammps-gui/lammpsgui.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index fe94df387a..8162507d02 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -904,9 +904,6 @@ void LammpsGui::quit() settings.setValue("mainy", height()); } settings.sync(); -#if QT_CONFIG(clipboard) - QGuiApplication::clipboard()->setText(""); -#endif QCoreApplication::quit(); } From 7475e5a5eff1593b823497e10549f2b8c54edaea Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 23 Aug 2024 11:49:20 -0500 Subject: [PATCH 083/326] 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 084/326] 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 085/326] 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 086/326] 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 087/326] 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 088/326] 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 089/326] 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 090/326] 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 091/326] 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 092/326] 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 093/326] 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 094/326] 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 ec0cdb8bdcf90a6e5a94aced5c30872177aaf3ab Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 02:11:18 -0400 Subject: [PATCH 095/326] tweak background color settings --- tools/lammps-gui/codeeditor.cpp | 3 +++ tools/lammps-gui/lammpsgui.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index fd86b5199e..f5ecdd0b0f 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -218,7 +218,10 @@ CodeEditor::CodeEditor(QWidget *parent) : help_index.close(); } + setBackgroundRole(QPalette::Light); lineNumberArea = new LineNumberArea(this); + lineNumberArea->setBackgroundRole(QPalette::Dark); + lineNumberArea->setAutoFillBackground(true); connect(this, &CodeEditor::blockCountChanged, this, &CodeEditor::updateLineNumberAreaWidth); connect(this, &CodeEditor::updateRequest, this, &CodeEditor::updateLineNumberArea); updateLineNumberAreaWidth(0); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 8162507d02..d4705645d2 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -90,6 +90,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // use $HOME if we get dropped to "/" like on macOS if (current_dir == "/") current_dir = QDir::homePath(); inspectList.clear(); + setAutoFillBackground(true); // restore and initialize settings QSettings settings; From 72873b0dca14430af1e7fd1f561c41b4c895558e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 02:56:47 -0400 Subject: [PATCH 096/326] line number area attempts to be dark mode compatible --- tools/lammps-gui/codeeditor.cpp | 2 +- tools/lammps-gui/lammps-gui.appdata.xml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index f5ecdd0b0f..8083f1e2c5 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -672,7 +672,7 @@ void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event) if (block.isVisible() && bottom >= event->rect().top()) { QString number = QString::number(blockNumber + 1) + " "; if ((highlight == NO_HIGHLIGHT) || (blockNumber != std::abs(highlight))) { - painter.setPen(Qt::black); + painter.setPen(palette().color(QPalette::WindowText)); } else { number = QString(">") + QString::number(blockNumber + 1) + "<"; if (highlight < 0) diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 95652129a1..46fcc86125 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -56,6 +56,9 @@ + Added search and replace functionality. + Converged command line argument parsing using Qt facilities + Dark mode compatible From 1b3652583b7e2cb6edb38132f1f32a4101b54289 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 11:39:54 -0400 Subject: [PATCH 097/326] implement text search and replace functionality --- tools/lammps-gui/CMakeLists.txt | 2 + tools/lammps-gui/findandreplace.cpp | 148 ++++++++++++++++++++++++ tools/lammps-gui/findandreplace.h | 46 ++++++++ tools/lammps-gui/icons/search.png | Bin 0 -> 4821 bytes tools/lammps-gui/imageviewer.h | 3 +- tools/lammps-gui/lammps-gui.appdata.xml | 2 +- tools/lammps-gui/lammpsgui.cpp | 10 ++ tools/lammps-gui/lammpsgui.h | 1 + tools/lammps-gui/lammpsgui.qrc | 1 + tools/lammps-gui/lammpsgui.ui | 15 ++- 10 files changed, 225 insertions(+), 3 deletions(-) create mode 100644 tools/lammps-gui/findandreplace.cpp create mode 100644 tools/lammps-gui/findandreplace.h create mode 100644 tools/lammps-gui/icons/search.png diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 73e945820b..1732169bba 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -130,6 +130,8 @@ set(PROJECT_SOURCES chartviewer.h codeeditor.cpp codeeditor.h + findandreplace.cpp + findandreplace.h helpers.cpp highlighter.cpp highlighter.h diff --git a/tools/lammps-gui/findandreplace.cpp b/tools/lammps-gui/findandreplace.cpp new file mode 100644 index 0000000000..d3ef6409b5 --- /dev/null +++ b/tools/lammps-gui/findandreplace.cpp @@ -0,0 +1,148 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "findandreplace.h" + +#include "codeeditor.h" +#include "lammpsgui.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* ---------------------------------------------------------------------- */ + +FindAndReplace::FindAndReplace(CodeEditor *_editor, QWidget *parent) : + QDialog(parent), editor(_editor), search(nullptr), replace(nullptr), withcase(nullptr), + wrap(nullptr), whole(nullptr) +{ + auto *layout = new QGridLayout; + search = new QLineEdit; + replace = new QLineEdit; + withcase = new QCheckBox("Match case"); + wrap = new QCheckBox("Wrap around"); + whole = new QCheckBox("Whole word"); + auto *next = new QPushButton("Next"); + auto *replone = new QPushButton("Replace"); + auto *replall = new QPushButton("Replace All"); + auto *done = new QPushButton("Done"); + + layout->addWidget(new QLabel("Find:"), 0, 0, Qt::AlignRight); + layout->addWidget(search, 0, 1, 1, 2, Qt::AlignLeft); + layout->addWidget(new QLabel("Replace with:"), 1, 0, Qt::AlignRight); + layout->addWidget(replace, 1, 1, 1, 2, Qt::AlignLeft); + layout->addWidget(withcase, 2, 0, Qt::AlignLeft); + layout->addWidget(wrap, 2, 1, Qt::AlignLeft); + layout->addWidget(whole, 2, 2, Qt::AlignLeft); + wrap->setChecked(true); + + auto *buttons = new QHBoxLayout; + buttons->addWidget(next); + buttons->addWidget(replone); + buttons->addWidget(replall); + buttons->addWidget(done); + layout->addLayout(buttons, 3, 0, 1, 3, Qt::AlignHCenter); + + connect(next, &QPushButton::released, this, &FindAndReplace::find_next); + connect(replone, &QPushButton::released, this, &FindAndReplace::replace_next); + connect(replall, &QPushButton::released, this, &FindAndReplace::replace_all); + connect(done, &QPushButton::released, this, &QDialog::accept); + + auto action = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Q), this); + connect(action, &QShortcut::activated, this, &FindAndReplace::quit); + + setLayout(layout); + setWindowIcon(QIcon(":/icons/lammps-icon-128x128.png")); + setWindowTitle("LAMMPS-GUI - Find and Replace"); +} + +/* ---------------------------------------------------------------------- */ + +void FindAndReplace::find_next() +{ + auto text = search->text(); + + int find_flags = 0; + if (withcase->isChecked()) find_flags |= QTextDocument::FindCaseSensitively; + if (whole->isChecked()) find_flags |= QTextDocument::FindWholeWords; + + if (!text.isEmpty()) { + if (!editor->find(text, (QTextDocument::FindFlag)find_flags) && wrap->isChecked()) { + // nothing found from the current position to the end, reposition cursor and beginning + editor->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); + editor->find(text, (QTextDocument::FindFlag)find_flags); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void FindAndReplace::replace_next() +{ + auto text = search->text(); + if (text.isEmpty()) return; + + auto cursor = editor->textCursor(); + auto flag = withcase->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive; + + // if selected text at cursor location matches search text, replace + if (QString::compare(cursor.selectedText(), search->text(), flag) == 0) + cursor.insertText(replace->text()); + + find_next(); +} + +/* ---------------------------------------------------------------------- */ + +void FindAndReplace::replace_all() +{ + auto text = search->text(); + if (text.isEmpty()) return; + + // drop selection if we have one + auto cursor = editor->textCursor(); + if (cursor.hasSelection()) cursor.movePosition(QTextCursor::Left); + + find_next(); + cursor = editor->textCursor(); + + // keep replacing until find_next() does not find anything anymore + while (cursor.hasSelection()) { + cursor.insertText(replace->text()); + find_next(); + cursor = editor->textCursor(); + } +} + +/* ---------------------------------------------------------------------- */ + +void FindAndReplace::quit() +{ + LammpsGui *main = nullptr; + for (QWidget *widget : QApplication::topLevelWidgets()) + if (widget->objectName() == "LammpsGui") main = dynamic_cast(widget); + if (main) main->quit(); +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/findandreplace.h b/tools/lammps-gui/findandreplace.h new file mode 100644 index 0000000000..7c34c50543 --- /dev/null +++ b/tools/lammps-gui/findandreplace.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef FIND_AND_REPLACE_H +#define FIND_AND_REPLACE_H + +#include "codeeditor.h" +#include + +class QLineEdit; +class QCheckBox; + +class FindAndReplace : public QDialog { + Q_OBJECT + +public: + explicit FindAndReplace(CodeEditor *_editor, QWidget *parent = nullptr); + ~FindAndReplace() = default; + +private slots: + void find_next(); + void replace_next(); + void replace_all(); + void quit(); + +private: + CodeEditor *editor; + QLineEdit *search, *replace; + QCheckBox *withcase, *wrap, *whole; +}; + +#endif + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/icons/search.png b/tools/lammps-gui/icons/search.png new file mode 100644 index 0000000000000000000000000000000000000000..1790200d49d94c182df7ce9574617faccdb9edb7 GIT binary patch literal 4821 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 KSPj(b>3;#qPV4Ic literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 8e72cea7bf..94632bde89 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -34,7 +34,8 @@ class ImageViewer : public QDialog { Q_OBJECT public: - explicit ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent = nullptr); + explicit ImageViewer(const QString &fileName, LammpsWrapper *_lammps, + QWidget *parent = nullptr); private slots: void saveAs(); diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 46fcc86125..a6a384af1b 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -58,7 +58,7 @@ Added search and replace functionality. Converged command line argument parsing using Qt facilities - Dark mode compatible + Added dark mode adjustments diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index d4705645d2..362a8f00cb 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -15,6 +15,7 @@ #include "chartviewer.h" #include "fileviewer.h" +#include "findandreplace.h" #include "helpers.h" #include "highlighter.h" #include "imageviewer.h" @@ -206,6 +207,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionPaste, &QAction::triggered, this, &LammpsGui::paste); connect(ui->actionUndo, &QAction::triggered, this, &LammpsGui::undo); connect(ui->actionRedo, &QAction::triggered, this, &LammpsGui::redo); + connect(ui->actionSearchAndReplace, &QAction::triggered, this, &LammpsGui::findandreplace); connect(ui->actionRun_Buffer, &QAction::triggered, this, &LammpsGui::run_buffer); connect(ui->actionRun_File, &QAction::triggered, this, &LammpsGui::run_file); connect(ui->actionStop_LAMMPS, &QAction::triggered, this, &LammpsGui::stop_run); @@ -1863,6 +1865,14 @@ void LammpsGui::edit_variables() } } +void LammpsGui::findandreplace() +{ + FindAndReplace find(ui->textEdit, this); + find.setFont(font()); + find.setObjectName("find"); + find.exec(); +} + void LammpsGui::preferences() { QSettings settings; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 0cf6677149..9185b7a535 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -115,6 +115,7 @@ private slots: void paste(); void undo(); void redo(); + void findandreplace(); void run_buffer() { do_run(true); } void run_file() { do_run(false); } diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index cf9dd20dda..8111edd44b 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -58,6 +58,7 @@ icons/preferences-desktop.png icons/process-stop.png icons/run-file.png + icons/search.png icons/system-box.png icons/system-help.png icons/system-run.png diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index 1517168327..045e0f84a8 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -62,6 +62,8 @@ + + @@ -312,12 +314,23 @@ Ctrl+Shift+H + + + + + + &Find and Replace... + + + Ctrl+F + + - Pre&ferences... + P&references... Ctrl+P From d98a3d61dac278d777e3df6dc09fd7c18b6492fa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 11:40:15 -0400 Subject: [PATCH 098/326] reduce outlier margin from 5 sigma to 4 sigma --- tools/lammps-gui/chartviewer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 71ba07de4c..4ea5449f3f 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -424,7 +424,7 @@ void ChartViewer::add_data(int step, double data) if (last_step < step) { last_step = step; - // do not add data that deviates by more than 5 sigma from the average + // do not add data that deviates by more than 4 sigma from the average // over the last 5 to 20 data items. this is a hack to work around // getting corrupted data from lammps_get_last_thermo() const auto &points = series->points(); @@ -442,7 +442,7 @@ void ChartViewer::add_data(int step, double data) const double num = count - first; const double avg = ysum / num; const double avgsq = ysumsq / num; - if (fabs(data - avg) > (5.0 * sqrt(avgsq - (avg * avg)))) return; + if (fabs(data - avg) > (4.0 * sqrt(avgsq - (avg * avg)))) return; } series->append(step, data); From 35d8a3d68ec218207633abac1bb3194810f05371 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 14:32:01 -0400 Subject: [PATCH 099/326] Document 'Find and Replace' dialog --- cmake/packaging/LAMMPS_DMG_Background.xcf | Bin 0 -> 103808 bytes doc/src/JPG/lammps-gui-find.png | Bin 0 -> 115375 bytes tools/lammps-gui/findandreplace.cpp | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 cmake/packaging/LAMMPS_DMG_Background.xcf create mode 100644 doc/src/JPG/lammps-gui-find.png diff --git a/cmake/packaging/LAMMPS_DMG_Background.xcf b/cmake/packaging/LAMMPS_DMG_Background.xcf new file mode 100644 index 0000000000000000000000000000000000000000..cff3222717940ca4bbec0900386e34daf04e50ad GIT binary patch literal 103808 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

|iRWL6*WV%oZvH-PAM23Bzj8*d^Z63~kbLNs;) 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 O{IP$b_=BfoLjE7ff$wGj literal 0 HcmV?d00001 diff --git a/doc/src/JPG/lammps-gui-find.png b/doc/src/JPG/lammps-gui-find.png new file mode 100644 index 0000000000000000000000000000000000000000..452c5818eb9666418730299877088ce268dd5a3d GIT binary patch literal 115375 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 z?TloaddWidget(new QLabel("Find:"), 0, 0, Qt::AlignRight); layout->addWidget(search, 0, 1, 1, 2, Qt::AlignLeft); From be029a9122f14e364aadf86cda23d7b4deded595 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 14:39:19 -0400 Subject: [PATCH 100/326] tweak layout of keyboard shortcut table --- doc/src/Howto_lammps_gui.rst | 40 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 4d283cbcc8..3dcf5a5f12 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -848,7 +848,7 @@ available (On macOS use the Command key instead of Ctrl/Control). .. list-table:: :header-rows: 1 - :widths: auto + :widths: 16 19 13 16 13 22 * - Shortcut - Function @@ -890,32 +890,32 @@ available (On macOS use the Command key instead of Ctrl/Control). - Quit Application - Ctrl+A - Select All - - Ctrl+P - - Preferences + - Ctrl+F + - Find and Replace * - Ctrl+W - Close Window - - Ctrl+Shift+H - - Quick Help - - Ctrl+Shift+G - - LAMMPS-GUI Howto - * - Ctrl+Shift+A - - About LAMMPS - - Ctrl+? - - Context Help - - Ctrl+Shift+W - - Show Variables - * - Ctrl+Shift+M - - LAMMPS Manual - TAB - Reformat line - Shift+TAB - Show Completions - * - Ctrl+Shift+T - - LAMMPS Tutorial - - Ctrl+Shift+Enter + * - Ctrl+Shift+Enter - Run File - - - - + - Ctrl+Shift+W + - Show Variables + - Ctrl+P + - Preferences + * - Ctrl+Shift+A + - About LAMMPS + - Ctrl+Shift+H + - Quick Help + - Ctrl+Shift+G + - LAMMPS-GUI Howto + * - Ctrl+Shift+M + - LAMMPS Manual + - Ctrl+? + - Context Help + - Ctrl+Shift+T + - LAMMPS Tutorial Further editing keybindings `are documented with the Qt documentation `_. In From 2a84aa80633034f421b41853528e1af1a11ec4e6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 14:39:33 -0400 Subject: [PATCH 101/326] document find and replace dialog --- doc/src/Howto_lammps_gui.rst | 45 +++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 3dcf5a5f12..5c286bcd2d 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -629,9 +629,10 @@ Edit ^^^^ The *Edit* menu offers the usual editor functions like *Undo*, *Redo*, -*Cut*, *Copy*, *Paste*. It can also open a *Preferences* dialog -(keyboard shortcut `Ctrl-P`) and allows deleting all stored preferences -and settings, so they are reset to their default values. +*Cut*, *Copy*, *Paste*, and a *Find and Replace* dialog (keyboard +shortcut `Ctrl-F`). It can also open a *Preferences* dialog (keyboard +shortcut `Ctrl-P`) and allows deleting all stored preferences and +settings, so they are reset to their default values. Run ^^^ @@ -716,6 +717,44 @@ https://lammpstutorials.github.io/ in a web browser window. ----- +Find and Replace +---------------- + +.. versionadded:: 1.6 + +The *Find and Replace* dialog allows searching for and replacing +text in the *Editor* window. + +.. image:: JPG/lammps-gui-find.png + :align: center + :scale: 50% + +The dialog can be opened either from the *Edit* menu or with the +keyboard shortcut `Ctrl-F`. You can enter the text to search for. +Through three check-boxes the search behavior can be adjusted: + +- If checked, "Match case" does a case sensitive search. + +- If checked, "Wrap around" starts searching from the start of the + document, if there is no match found from the current cursor position + until the end of the document. + +- If checked, the "Whole word" setting only finds full word matches + (white space and special characters are word boundaries). + +Clicking on the *Next* button will search for the next occurrence of the +search text and select / highlight it. Clicking on the *Replace* button +will replace an already highlighted search text and find the next one. +If no text is selected, or the selected text does not match the +selection string, then the first click on the *Replace* button will +only search and highlight the next occurrence of the search string. +Clicking on the *Replace All* button will replace all occurrences from +the cursor position to the end of the file; if the *Wrap around* box is +checked, then it will replace **all** occurrences in the **entire** +document. Clicking on the *Done* button will dismiss the dialog. + +------ + Preferences ----------- From 217546ed3ba12adbe2e8c5d7d8da4ce2f67a7696 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 15:11:43 -0400 Subject: [PATCH 102/326] tweak LAMMPS-GUI howto typesetting --- doc/src/Howto_lammps_gui.rst | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 5c286bcd2d..bad4ff85fd 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -391,7 +391,7 @@ below. .. image:: JPG/lammps-gui-variable-info.png :align: center - :scale: 75% + :scale: 50% Like for the *Output* and *Charts* windows, its content is continuously updated during a run. It will show "(none)" if there are no variables @@ -668,7 +668,7 @@ set *before* a run is started. .. image:: JPG/lammps-gui-variables.png :align: center - :scale: 75% + :scale: 50% The *Set Variables* dialog will be pre-populated with entries that are set as index variables in the input and any variables that are @@ -722,22 +722,23 @@ Find and Replace .. versionadded:: 1.6 -The *Find and Replace* dialog allows searching for and replacing -text in the *Editor* window. - .. image:: JPG/lammps-gui-find.png :align: center - :scale: 50% + :scale: 33% + +The *Find and Replace* dialog allows searching for and replacing +text in the *Editor* window. The dialog can be opened either from the *Edit* menu or with the keyboard shortcut `Ctrl-F`. You can enter the text to search for. Through three check-boxes the search behavior can be adjusted: -- If checked, "Match case" does a case sensitive search. +- If checked, "Match case" does a case sensitive search; otherwise + the search is case insensitive. - If checked, "Wrap around" starts searching from the start of the document, if there is no match found from the current cursor position - until the end of the document. + until the end of the document; otherwise the search will stop. - If checked, the "Whole word" setting only finds full word matches (white space and special characters are word boundaries). From baf1511f23ea0a43486fd2994e066bf5380dbf3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 19:19:56 -0400 Subject: [PATCH 103/326] add light/dark mode detection --- tools/lammps-gui/helpers.cpp | 13 +++++++++++++ tools/lammps-gui/helpers.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/tools/lammps-gui/helpers.cpp b/tools/lammps-gui/helpers.cpp index 47d09f4515..cac5d86482 100644 --- a/tools/lammps-gui/helpers.cpp +++ b/tools/lammps-gui/helpers.cpp @@ -13,9 +13,12 @@ #include "helpers.h" +#include +#include #include #include #include +#include #include #include @@ -84,6 +87,16 @@ void purge_directory(const QString &dir) } } +// compare black level of foreground and background color +bool is_light_theme() +{ + QPalette p; + int fg = p.brush(QPalette::Active, QPalette::WindowText).color().black(); + int bg = p.brush(QPalette::Active, QPalette::Window).color().black(); + + return (fg > bg); +} + // Local Variables: // c-basic-offset: 4 // End: diff --git a/tools/lammps-gui/helpers.h b/tools/lammps-gui/helpers.h index b22b6e72c4..b3269e6d61 100644 --- a/tools/lammps-gui/helpers.h +++ b/tools/lammps-gui/helpers.h @@ -28,6 +28,9 @@ extern bool has_exe(const QString &exe); // recursively purge a directory extern void purge_directory(const QString &dir); +// flag if light or dark theme +extern bool is_light_theme(); + #endif // Local Variables: // c-basic-offset: 4 From e19556263c3c62b6a24b920a102aed5523e166a0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 19:20:39 -0400 Subject: [PATCH 104/326] provide syntax highlighting color schemes for light and dark themes --- tools/lammps-gui/highlighter.cpp | 68 ++++++++++++++++++++++---------- tools/lammps-gui/lammpsgui.cpp | 6 ++- 2 files changed, 53 insertions(+), 21 deletions(-) diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index 3f79c7a73e..9846011836 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include "highlighter.h" +#include "helpers.h" Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent), @@ -54,27 +55,54 @@ Highlighter::Highlighter(QTextDocument *parent) : isTriple(QStringLiteral("[^\"]*\"\"\"[^\"]*")), isString(QStringLiteral("(\".+?\"|'.+?'|\"\"\".*\"\"\")")), in_triple(false) { - formatNumber.setForeground(Qt::blue); - formatString.setForeground(Qt::darkGreen); - formatString.setFontWeight(QFont::Normal); - formatComment.setForeground(Qt::red); - formatSpecial.setForeground(Qt::darkMagenta); - formatSpecial.setFontWeight(QFont::Bold); - formatParticle.setForeground(Qt::darkRed); - formatParticle.setFontWeight(QFont::Bold); - formatRun.setForeground(Qt::darkBlue); - formatRun.setFontWeight(QFont::Bold); - formatVariable.setForeground(Qt::darkGray); - formatVariable.setFontWeight(QFont::Bold); + if (is_light_theme()) { + // syntax colors for light themes + formatNumber.setForeground(Qt::blue); + formatString.setForeground(Qt::darkGreen); + formatString.setFontWeight(QFont::Normal); + formatComment.setForeground(Qt::red); + formatSpecial.setForeground(Qt::darkMagenta); + formatSpecial.setFontWeight(QFont::Bold); + formatParticle.setForeground(Qt::darkRed); + formatParticle.setFontWeight(QFont::Bold); + formatRun.setForeground(Qt::darkBlue); + formatRun.setFontWeight(QFont::Bold); + formatVariable.setForeground(Qt::darkGray); + formatVariable.setFontWeight(QFont::Bold); - formatOutput.setForeground(Qt::darkYellow); - formatOutput.setFontWeight(QFont::Bold); - formatRead.setForeground(Qt::magenta); - formatRead.setFontWeight(QFont::Bold); - formatLattice.setForeground(Qt::darkGreen); - formatLattice.setFontWeight(QFont::Bold); - formatSetup.setForeground(Qt::darkCyan); - formatSetup.setFontWeight(QFont::Bold); + formatOutput.setForeground(Qt::darkYellow); + formatOutput.setFontWeight(QFont::Bold); + formatRead.setForeground(Qt::magenta); + formatRead.setFontWeight(QFont::Bold); + formatLattice.setForeground(Qt::darkGreen); + formatLattice.setFontWeight(QFont::Bold); + formatSetup.setForeground(Qt::darkCyan); + formatSetup.setFontWeight(QFont::Bold); + } else { + // syntax colors for dark themes + formatNumber.setForeground(QColorConstants::Svg::dodgerblue); + formatString.setForeground(QColorConstants::Green); + formatString.setFontWeight(QFont::Normal); + formatComment.setForeground(QColorConstants::Red); + formatComment.setFontWeight(QFont::Bold); + formatSpecial.setForeground(QColorConstants::Magenta); + formatSpecial.setFontWeight(QFont::Bold); + formatParticle.setForeground(QColorConstants::Svg::indianred); + formatParticle.setFontWeight(QFont::Bold); + formatRun.setForeground(QColorConstants::Svg::lightskyblue); + formatRun.setFontWeight(QFont::Bold); + formatVariable.setForeground(QColorConstants::Svg::lightgray); + formatVariable.setFontWeight(QFont::Bold); + + formatOutput.setForeground(QColorConstants::Yellow); + formatOutput.setFontWeight(QFont::Bold); + formatRead.setForeground(QColorConstants::Svg::lightcoral); + formatRead.setFontWeight(QFont::Bold); + formatLattice.setForeground(QColorConstants::Svg::lightgreen); + formatLattice.setFontWeight(QFont::Bold); + formatSetup.setForeground(QColorConstants::Cyan); + formatSetup.setFontWeight(QFont::Bold); + } } void Highlighter::highlightBlock(const QString &text) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 362a8f00cb..d75f97da7a 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -1431,7 +1431,11 @@ void LammpsGui::setFont(const QFont &newfont) void LammpsGui::about() { std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; - version += " using Qt version " QT_VERSION_STR "\n"; + version += " using Qt version " QT_VERSION_STR; + if (is_light_theme()) + version += " using light theme\n"; + else + version += " using dark theme\n"; if (lammps.has_plugin()) { version += "LAMMPS library loaded as plugin"; if (!plugin_path.empty()) { From 4507101ec3fefcca7ffe21744911cd1fb6268f87 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Aug 2024 22:51:50 -0400 Subject: [PATCH 105/326] show dark mode screenshot --- check-downloads.py | 18 +++++++ doc/src/Howto_lammps_gui.rst | 86 ++++++++++++++------------------ doc/src/JPG/lammps-gui-main.png | Bin 95633 -> 78873 bytes tools/lammps-gui/TODO.md | 5 +- 4 files changed, 58 insertions(+), 51 deletions(-) create mode 100755 check-downloads.py diff --git a/check-downloads.py b/check-downloads.py new file mode 100755 index 0000000000..57b4af6a19 --- /dev/null +++ b/check-downloads.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +import subprocess +import json + +try: + output = subprocess.run('gh api https://api.github.com/repos/lammps/lammps/releases', + shell=True, capture_output=True) +except subprocess.CalledProcessError as e: + print("API call failed with:", e.output) + +releases = json.loads(output.stdout) +print("Recent releases: ", len(releases)) +for rel in releases: + if len(rel['assets']) > 0: + print("Release: ", rel['name']) + for asset in rel['assets']: + print("Asset: %s Downloads: %d" % (asset['name'], asset['download_count'])) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index bad4ff85fd..364c70d50f 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -19,9 +19,9 @@ to the online LAMMPS documentation for known LAMMPS commands and styles. Pre-compiled, ready-to-use LAMMPS-GUI executables for Linux x86\_64 (Ubuntu 20.04LTS or later and compatible), macOS (version 11 aka Big Sur or later), and Windows (version 10 or later) :ref:`are available - ` for download. None-MPI LAMMPS executables for - running LAMMPS from the command line and :doc:`some LAMMPS tools ` - are also included. + ` for download. Non-MPI LAMMPS executables (as + ``lmp``) for running LAMMPS from the command line and :doc:`some + LAMMPS tools ` compiled executables are also included. The source code for LAMMPS-GUI is included in the LAMMPS source code distribution and can be found in the ``tools/lammps-gui`` folder. It @@ -29,40 +29,50 @@ to the online LAMMPS documentation for known LAMMPS commands and styles. `. LAMMPS-GUI tries to provide an experience similar to what people -traditionally would have running LAMMPS using a command line window -and the console LAMMPS executable but just rolled into a single executable: +traditionally would have running LAMMPS using a command line window and +the console LAMMPS executable but just rolled into a single executable: - writing & editing LAMMPS input files with a text editor - run LAMMPS on those input file with selected command line flags -- use or extract data from the created files and visualize it with - either a molecular visualization program or a plotting program +- extract data from the created files and visualize it with and + external software That procedure is quite effective for people proficient in using the command line, as that allows them to use tools for the individual steps -that they are most comfortable with. It is often *required* to adopt -this workflow when running LAMMPS simulations on high-performance +that they are most comfortable with. In fact, it is often *required* to +adopt this workflow when running LAMMPS simulations on high-performance computing facilities. The main benefit of using LAMMPS-GUI is that many basic tasks can be -done directly from the GUI without switching to a text console window or -using external programs, let alone writing scripts to extract data from -the generated output. It also integrates well with graphical desktop -environments where the `.lmp` filename extension can be registered with -LAMMPS-GUI as the executable to launch when double clicking on such -files. Also, LAMMPS-GUI has support for drag-n-drop, i.e. an input -file can be selected and then moved and dropped on the LAMMPS-GUI -executable, and LAMMPS-GUI will launch and read the file into its -buffer. +done directly from the GUI **without** switching to a text console +window or using external programs, let alone writing scripts to extract +data from the generated output. It also integrates well with graphical +desktop environments where the `.lmp` filename extension can be +registered with LAMMPS-GUI as the executable to launch when double +clicking on such files. Also, LAMMPS-GUI has support for drag-n-drop, +i.e. an input file can be selected and then moved and dropped on the +LAMMPS-GUI executable, and LAMMPS-GUI will launch and read the file into +its buffer. In many cases LAMMPS-GUI will be integrated into the +graphical desktop environment and can be launched like other +applications. LAMMPS-GUI thus makes it easier for beginners to get started running simple LAMMPS simulations. It is very suitable for tutorials on LAMMPS since you only need to learn how to use a single program for most tasks and thus time can be saved and people can focus on learning LAMMPS. -The tutorials at https://lammpstutorials.github.io/ were specifically +The tutorials at https://lammpstutorials.github.io/ are specifically updated for use with LAMMPS-GUI. Another design goal is to keep the barrier low when replacing part of -the functionality of LAMMPS-GUI with external tools. +the functionality of LAMMPS-GUI with external tools. That said, LAMMPS-GUI +has some unique functionality that is not found elsewhere: + +- auto-adapting to features available in the integrated LAMMPS library +- interactive visualization using the :doc:`dump image ` + command with the option to copy-paste the resulting settings +- automatic slide show generation from dump image out at runtime +- automatic plotting of thermodynamics data at runtime +- inspection of binary restart files The following text provides a detailed tour of the features and functionality of LAMMPS-GUI. Suggestions for new features and @@ -134,9 +144,13 @@ When LAMMPS-GUI starts, it shows the main window, labeled *Editor*, with either an empty buffer or the contents of the file used as argument. In the latter case it may look like the following: -.. image:: JPG/lammps-gui-main.png - :align: center - :scale: 50% +.. |gui-main1| image:: JPG/lammps-gui-main.png + :width: 48% + +.. |gui-main2| image:: JPG/lammps-gui-dark.png + :width: 48% + +|gui-main1| |gui-main2| There is the typical menu bar at the top, then the main editor buffer, and a status bar at the bottom. The input file contents are shown @@ -276,8 +290,6 @@ right mouse button into the *Output* window text area. :align: center :scale: 50% -.. versionadded:: 1.6 - Should the *Output* window contain embedded YAML format text (see above for a demonstration), for example from using :doc:`thermo_style yaml ` or :doc:`thermo_modify line yaml `, the @@ -289,10 +301,6 @@ text area. Charts Window ------------- -.. versionadded:: 1.6 - - Plot smoothing support - By default, when starting a run, a *Charts* window opens that displays a plot of thermodynamic output of the LAMMPS calculation as shown below. @@ -327,10 +335,6 @@ corresponds to. Same as for the *Output* window, the chart window is replaced on each new run, but the behavior can be changed in the *Preferences* dialog. -.. versionadded:: 1.6 - - Support for YAML export added - From the *File* menu on the top left, it is possible to save an image of the currently displayed plot or export the data in either plain text columns (for use by plotting tools like `gnuplot @@ -371,8 +375,6 @@ zoom in or zoom out of the displayed images. The button on the very left triggers an export of the slide show animation to a movie file, provided the `FFmpeg program `_ is installed. -.. versionadded:: 1.6 - When clicking on the "garbage can" icon, all image files of the slide show will be deleted. Since their number can be large for long simulations, this option enables to safely and quickly clean up the @@ -446,10 +448,6 @@ diameters are all the same. Visualization of LAMMPS "peptide" example -.. versionchanged:: 1.6 - - Buttons for toggling shininess and re-centering were added. - The default image size, some default image quality settings, the view style and some colors can be changed in the *Preferences* dialog window. From the image viewer window further adjustments can be made: @@ -468,8 +466,6 @@ current image can be saved to a file (keyboard shortcut `Ctrl-S`) or copied to the clipboard (keyboard shortcut `Ctrl-C`) for pasting the image into another application. -.. versionadded:: 1.6 - From the *File* menu it is also possible to copy the current :doc:`dump image ` and :doc:`dump_modify ` commands to the clipboard so they can be pasted into a LAMMPS input file @@ -488,8 +484,6 @@ Paste (`Ctrl-V`), Undo (`Ctrl-Z`), Redo (`Ctrl-Shift-Z`), Select All dialog will pop up asking whether to cancel the exit operation, or to save or not save the buffer contents to a file. -.. versionadded:: 1.6 - The editor has an auto-save mode that can be enabled or disabled in the *Preferences* dialog. In auto-save mode, the editor buffer is automatically saved before running LAMMPS or before exiting LAMMPS-GUI. @@ -553,8 +547,6 @@ context menu that open the corresponding documentation page in the online LAMMPS documentation in a web browser window. When using the keyboard, the first of those entries is chosen. -.. versionadded:: 1.6 - If the word under the cursor is a file, then additionally the context menu has an entry to open the file in a read-only text viewer window. If the file is a LAMMPS restart file, instead the menu entry offers to @@ -572,8 +564,6 @@ will contain a corresponding message. Inspecting a Restart file ^^^^^^^^^^^^^^^^^^^^^^^^^ -.. versionadded:: 1.6 - When LAMMPS-GUI is asked to "Inspect a Restart", it will read the restart file into a LAMMPS instance and then open three different windows. The first window is a text viewer with the output of an @@ -720,8 +710,6 @@ https://lammpstutorials.github.io/ in a web browser window. Find and Replace ---------------- -.. versionadded:: 1.6 - .. image:: JPG/lammps-gui-find.png :align: center :scale: 33% diff --git a/doc/src/JPG/lammps-gui-main.png b/doc/src/JPG/lammps-gui-main.png index 69efe3db68036c1a833af6fee22f1d40089b5a37..c7a1e5a98cb0be3108a4c70e6f267725c20ae3c9 100644 GIT binary patch literal 78873 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 bA^J&d9Z5?0$T4~!{zTYVIGEozJs9&pKT{SD literal 95633 zcmZsC1yEeg67Jc>9YU}WBxr)WdvJogTY%seT!T9S5?lho-QC>@?rwnv7Pmzn|9|hT zdavr8Jyknr>TFeS&-8SE{dI>cDM(?UzCi^507FJvTm=B&A^-q%jtqX8p#T-oy?nu2 zh{}rsKvgW-gE7KC(_baDzN*@re|0lIspVHqL7t(GOE%GVgvUf!_sRy2>y$`8M!(2s2$d<>I_{Tw^xyY%ts7uR*#q zcQcO>MT;b021_Wv{^x$IGw?dT%AcozJ>xSQ%rq!w<>pe=={(*bNdET)$XfyTLHSLM zijoG}qI5xS5^mR(T$uztJ-w%s)AtcMFL$9|()aHhPmj2=Bg6Msk^BziDG1na-wK%Y zo_6rF{QJuLLql1bgt7Kre5{{HfZf@a#C8QSbbI^4P3nJ=csahMjSKU6^p?0LE@r%W zJR2aBGh9PooSJGqU^HULSUrCK5`a3_v-~W@Zva-?v&{I*F>P5j#tv?s=n=WmT9Wg^}>$izZ{$$=( zK1u`s<}!~@KhFRC%Y#v2{bDOdh*d&(G9$}hP7Q;y$uHNmSvn5u*dfMGbFTkUjqBoDH7W!BFCNhPQu$|QN zUDRFq^ud<$d%3)OoDyo`n-yY>k}G>F%>O9Dg%P`MRZaaInO+t>f>$rqD`CYpKIxf0 z{c28q{WOSWlGXXKhihJ=-MVlc?{$JfreBE`{ytfK6^DKE6ii#QW1!-5A=rqFw^RR~ zu>CB!hgE)`?})w=n+;4Q#0%Xnc%txp^{b_z_`JigiWt=KtR;tt*=9szHx3eF{rp6-rg^ly zKUKC9e5ks+UqjC+SrZ&45jCv8L%c(eMFJl;Wl8&&9&JPsinKw(zcR*L%}z2q($oQfeRskJ<^4HXVx5|O400<`#b z{|x%}fxUO3IKi8FRy_OuG7H8gTkL_&0w7_3Dcx%AK0`){P~$reLKUoP@cfGH2+@;r zsm{_}Ly5tUV;#rj!ubLZU?T%xHnTyL!Ncu0?i!0t>=wK+X@WP*@`@zgf4_lIIKa7L zw3x?XA7dYnnF=hErt#%mFh{H<)*Sa;#I2~Ubo1T`Pg7fca??Vv$ zuMP(qJyKuWy?G5{$>A>%Z77A2ygm*Dak#t1&t7Tjnw^XSLpx~ zU=j>K7WXz{mZo?M=wCNUO`u1PhK`vq3a7a?GmYT8ShK{*>KcGi;4zF4AQ)i)I2*O{ zn>t+Cvz1%Pg|45%Xdb7_HN)e*+I8Ht-sE8f2JxZ4<9jMYF~CFvu3#v0rT*xO+o_<1{<+voCf; ze}Hb4=Ev@YhNrM8Yew;V??Gno$ofOm!0V424xyV%l*@I(cWaq)iXOl7f8~(+Q~Zi8 zr>Yt5oY#Ead{^&jFcg+6PQK`ohZ61?rZ-_>f$JaFh%1-z(K18$Rp;eX=G%eUrB>g& zGXeX#-5+z9@W2nNXuyQx2c_vQIw4ro87h5DZ4nc9X{s#=X31%++Qtpkd(+<_dHdt? z21olTMAx5?3iWjdf9%MJR3)czjclJ`FPN?#8D92^LR7f1(Xd&&_ zo0kla^17<1_AI*(=ANoKc0EeT2_BbppUuTzwz3lxTe)Y3wgjL=MyiHj07@Ayg;dN9 z22!P56gcccR*ql9!26CxI5b?÷o$p0gwdL$(xRi!+V+n+?Hu*fUC8C6%ZC9~<- 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

WtlT6#uny@ECb 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 diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index e3782e6446..2c190dc907 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -6,8 +6,9 @@ LAMMPS-GUI TODO list: - figure out stacking order of frames and whether it can be more flexible - implement a timed "Auto-Save" feature that saves after some idle time. set timeout in Editor preferences. - add a "Colors" menu to the image viewer to adjust color settings for the - current image (unlike the defaults in the perferences). Support color by - property (e.g. scan computes or fixes with per-atom data), define colormaps etc. + current image (unlike the defaults in the perferences) including assigning + colors to individual atom types. +- Support color by property (e.g. scan computes or fixes with per-atom data), define colormaps etc. - implement indenting regions for (nested) loops? - implement data file manager GUI with the following features: From 3c2fba111226a423ab694d4c4e322b9a6ae781b0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 00:17:17 -0400 Subject: [PATCH 106/326] add support for extracting the current lattice spacing to library interface --- src/library.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/library.cpp b/src/library.cpp index 097cffd68a..560c26aaaa 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -35,6 +35,7 @@ #include "group.h" #include "info.h" #include "input.h" +#include "lattice.h" #include "lmppython.h" #include "memory.h" #include "modify.h" @@ -1414,6 +1415,9 @@ int lammps_extract_global_datatype(void * /*handle*/, const char *name) if (strcmp(name,"xy") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"xz") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"yz") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"xlattice") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"ylattice") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"zlattice") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"procgrid") == 0) return LAMMPS_INT; if (strcmp(name,"natoms") == 0) return LAMMPS_BIGINT; @@ -1649,6 +1653,18 @@ report the "native" data type. The following tables are provided: - double - 1 - triclinic tilt factor; see :doc:`Howto_triclinic`. + * - xlattice + - double + - 1 + - lattice spacing in x-direction; see :doc:`lattice `. + * - ylattice + - double + - 1 + - lattice spacing in y-direction; see :doc:`lattice `. + * - zlattice + - double + - 1 + - lattice spacing in z-direction; see :doc:`lattice `. * - procgrid - int - 3 @@ -1917,6 +1933,9 @@ void *lammps_extract_global(void *handle, const char *name) if (strcmp(name,"xy") == 0) return (void *) &lmp->domain->xy; if (strcmp(name,"xz") == 0) return (void *) &lmp->domain->xz; if (strcmp(name,"yz") == 0) return (void *) &lmp->domain->yz; + if (strcmp(name,"xlattice") == 0) return (void *) &lmp->domain->lattice->xlattice; + if (strcmp(name,"ylattice") == 0) return (void *) &lmp->domain->lattice->ylattice; + if (strcmp(name,"zlattice") == 0) return (void *) &lmp->domain->lattice->zlattice; if (((lmp->comm->layout == Comm::LAYOUT_UNIFORM) || (lmp->comm->layout == Comm::LAYOUT_NONUNIFORM)) && (strcmp(name,"procgrid") == 0)) return (void *) &lmp->comm->procgrid; From ac91b4fbb333c5f28308505fbbe4f595869cd044 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 00:21:07 -0400 Subject: [PATCH 107/326] add field to set atom size if not determined otherwise. seed by lattice spacing --- tools/lammps-gui/imageviewer.cpp | 48 ++++++++++++++++++++++++++++---- tools/lammps-gui/imageviewer.h | 4 ++- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 725d557606..b1c4207962 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -135,9 +137,10 @@ static const QString blank(" "); ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) : QDialog(parent), menuBar(new QMenuBar), imageLabel(new QLabel), scrollArea(new QScrollArea), - saveAsAct(nullptr), copyAct(nullptr), cmdAct(nullptr), zoomInAct(nullptr), zoomOutAct(nullptr), - normalSizeAct(nullptr), lammps(_lammps), group("all"), filename(fileName), useelements(false), - usediameter(false), usesigma(false) + buttonBox(nullptr), scaleFactor(1.0), atomSize(1.0), saveAsAct(nullptr), copyAct(nullptr), + cmdAct(nullptr), zoomInAct(nullptr), zoomOutAct(nullptr), normalSizeAct(nullptr), + lammps(_lammps), group("all"), filename(fileName), useelements(false), usediameter(false), + usesigma(false) { imageLabel->setBackgroundRole(QPalette::Base); imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); @@ -163,6 +166,11 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge renderstatus->setEnabled(false); renderstatus->setToolTip("Render status"); renderstatus->setObjectName("renderstatus"); + auto *asize = new QLineEdit(QString::number(atomSize)); + auto *valid = new QDoubleValidator(1.0e-10, 1.0e10, 10, asize); + asize->setValidator(valid); + asize->setObjectName("atomSize"); + asize->setEnabled(false); settings.beginGroup("snapshot"); auto *xval = new QSpinBox; xval->setRange(100, 10000); @@ -179,6 +187,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge yval->setToolTip("Set rendered image height"); yval->setMinimumSize(bsize); settings.endGroup(); + connect(asize, &QLineEdit::editingFinished, this, &ImageViewer::set_atom_size); connect(xval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); connect(yval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); @@ -249,6 +258,8 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(menuBar); menuLayout->addWidget(renderstatus); + menuLayout->addWidget(new QLabel(" Atom Size: ")); + menuLayout->addWidget(asize); menuLayout->addWidget(new QLabel(" Width: ")); menuLayout->addWidget(xval); menuLayout->addWidget(new QLabel(" Height: ")); @@ -307,7 +318,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge doanti->setChecked(antialias); scaleFactor = 1.0; - resize(image.width() + 20, image.height() + 75); + resize(image.width() + 25, image.height() + 80); scrollArea->setVisible(true); updateActions(); @@ -356,6 +367,13 @@ void ImageViewer::reset_view() createImage(); } +void ImageViewer::set_atom_size() +{ + auto *field = qobject_cast(sender()); + atomSize = field->text().toDouble(); + createImage(); +} + void ImageViewer::edit_size() { auto *field = qobject_cast(sender()); @@ -560,10 +578,27 @@ void ImageViewer::createImage() if (useelements || usediameter || usesigma) { auto *button = findChild("vdw"); if (button) button->setEnabled(true); + auto *edit = findChild("atomSize"); + if (edit) edit->setEnabled(false); } else { adiams.clear(); auto *button = findChild("vdw"); if (button) button->setEnabled(false); + auto *edit = findChild("atomSize"); + if (edit) { + if (!edit->isEnabled()) { + edit->setEnabled(true); + // initialize with lattice spacing + auto *xlattice = (const double *)lammps->extract_global("xlattice"); + if (xlattice) atomSize = *xlattice; + edit->setText(QString::number(atomSize)); + } + atomSize = edit->text().toDouble(); + } + if (atomSize != 1.0) { + for (int i = 1; i <= ntypes; ++i) + adiams += QString("adiam %1 %2 ").arg(i).arg(atomSize); + } } // color @@ -607,6 +642,7 @@ void ImageViewer::createImage() dumpcmd += " backcolor " + settings.value("background", "black").toString(); if (useelements) dumpcmd += blank + elements + blank + adiams + blank; if (usesigma) dumpcmd += blank + adiams + blank; + if (!useelements && !usesigma && (atomSize != 1.0)) dumpcmd += blank + adiams + blank; settings.endGroup(); last_dump_cmd = dumpcmd; @@ -617,10 +653,10 @@ void ImageViewer::createImage() const QImage newImage = reader.read(); dumpfile.remove(); - // read of new image failed. Don't try to scale and load it. + // read of new image failed. nothing left to do. if (newImage.isNull()) return; - // scale back to achieve antialiasing + // show show image image = newImage; imageLabel->setPixmap(QPixmap::fromImage(image)); imageLabel->adjustSize(); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 94632bde89..0c175bd03f 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -42,6 +42,7 @@ private slots: void copy(); void quit(); + void set_atom_size(); void edit_size(); void reset_view(); void toggle_ssao(); @@ -76,7 +77,8 @@ private: QLabel *imageLabel; QScrollArea *scrollArea; QDialogButtonBox *buttonBox; - double scaleFactor = 1.0; + double scaleFactor; + double atomSize; QAction *saveAsAct; QAction *copyAct; From 6c13e8d0537f210442a0f212fc364710cd777e11 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 00:41:26 -0400 Subject: [PATCH 108/326] tweak docs for better formatting --- src/library.cpp | 66 ++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/library.cpp b/src/library.cpp index 560c26aaaa..78e1557ff1 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -1514,9 +1514,9 @@ The function :cpp:func:`lammps_extract_global_datatype` will directly report the "native" data type. The following tables are provided: * :ref:`Timestep settings ` -* :ref:`Git revision and version settings ` * :ref:`Simulation box settings ` * :ref:`System property settings ` +* :ref:`Git revision and version settings ` * :ref:`Unit settings ` .. _extract_timestep_settings: @@ -1556,35 +1556,6 @@ report the "native" data type. The following tables are provided: - :math:`N_{respa}` - length of the time steps with r-RESPA. See :doc:`run_style`. -.. _extract_git_settings: - -**Git revision and version settings** - -.. list-table:: - :header-rows: 1 - :widths: 16 14 10 60 - - * - Name - - Type - - Length - - Description - * - git_commit - - const char \* - - 1 - - Git commit hash for the LAMMPS version. - * - git_branch - - const char \* - - 1 - - Git branch for the LAMMPS version. - * - git_descriptor - - const char \* - - 1 - - Combined descriptor for the git revision - * - lammps_version - - const char \* - - 1 - - LAMMPS version string. - .. _extract_box_settings: **Simulation box settings** @@ -1656,15 +1627,15 @@ report the "native" data type. The following tables are provided: * - xlattice - double - 1 - - lattice spacing in x-direction; see :doc:`lattice `. + - lattice spacing in x-direction; see :doc:`lattice command `. * - ylattice - double - 1 - - lattice spacing in y-direction; see :doc:`lattice `. + - lattice spacing in y-direction; see :doc:`lattice command `. * - zlattice - double - 1 - - lattice spacing in z-direction; see :doc:`lattice `. + - lattice spacing in z-direction; see :doc:`lattice command `. * - procgrid - int - 3 @@ -1779,6 +1750,35 @@ report the "native" data type. The following tables are provided: - 1 - string with the current KSpace style. +.. _extract_git_settings: + +**Git revision and version settings** + +.. list-table:: + :header-rows: 1 + :widths: 16 14 10 60 + + * - Name + - Type + - Length + - Description + * - git_commit + - const char \* + - 1 + - Git commit hash for the LAMMPS version. + * - git_branch + - const char \* + - 1 + - Git branch for the LAMMPS version. + * - git_descriptor + - const char \* + - 1 + - Combined descriptor for the git revision + * - lammps_version + - const char \* + - 1 + - LAMMPS version string. + .. _extract_unit_settings: **Unit settings** From 67bba08b3df59fdd4532cd596137a5ccbe7f87d6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 00:41:58 -0400 Subject: [PATCH 109/326] add unit tests for extracting lattice spacings --- .../c-library/test_library_properties.cpp | 27 +++++++++++++++++++ unittest/python/python-commands.py | 3 +++ 2 files changed, 30 insertions(+) diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 96d63629df..3d0eeef5ea 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -466,6 +466,33 @@ TEST_F(LibraryProperties, global) if (!verbose) ::testing::internal::GetCapturedStdout(); map_style = *(int *)lammps_extract_global(lmp, "map_style"); EXPECT_EQ(map_style, Atom::MAP_ARRAY); + + EXPECT_EQ(lammps_extract_global_datatype(lmp, "xlattice"), LAMMPS_DOUBLE); + EXPECT_EQ(lammps_extract_global_datatype(lmp, "ylattice"), LAMMPS_DOUBLE); + EXPECT_EQ(lammps_extract_global_datatype(lmp, "zlattice"), LAMMPS_DOUBLE); + auto *xlattice = (double *)lammps_extract_global(lmp, "xlattice"); + auto *ylattice = (double *)lammps_extract_global(lmp, "ylattice"); + auto *zlattice = (double *)lammps_extract_global(lmp, "zlattice"); + EXPECT_NE(xlattice, nullptr); + EXPECT_NE(ylattice, nullptr); + EXPECT_NE(zlattice, nullptr); + EXPECT_DOUBLE_EQ(*xlattice, 1.0); + EXPECT_DOUBLE_EQ(*ylattice, 1.0); + EXPECT_DOUBLE_EQ(*zlattice, 1.0); + if (!verbose) ::testing::internal::CaptureStdout(); + lammps_command(lmp, "clear"); + lammps_command(lmp, "units real"); + lammps_command(lmp, "lattice fcc 2.0"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + xlattice = (double *)lammps_extract_global(lmp, "xlattice"); + ylattice = (double *)lammps_extract_global(lmp, "ylattice"); + zlattice = (double *)lammps_extract_global(lmp, "zlattice"); + EXPECT_NE(xlattice, nullptr); + EXPECT_NE(ylattice, nullptr); + EXPECT_NE(zlattice, nullptr); + EXPECT_DOUBLE_EQ(*xlattice, 2.0); + EXPECT_DOUBLE_EQ(*ylattice, 2.0); + EXPECT_DOUBLE_EQ(*zlattice, 2.0); }; TEST_F(LibraryProperties, pair1) diff --git a/unittest/python/python-commands.py b/unittest/python/python-commands.py index fcf731bf3f..b1432e67b9 100644 --- a/unittest/python/python-commands.py +++ b/unittest/python/python-commands.py @@ -656,6 +656,9 @@ create_atoms 1 single & self.assertEqual(self.lmp.extract_global("map_tag_max"), -1) self.assertEqual(self.lmp.extract_global("sortfreq"), 1000) self.assertEqual(self.lmp.extract_global("nextsort"), 0) + self.assertEqual(self.lmp.extract_global("xlattice"), 1.0) + self.assertEqual(self.lmp.extract_global("ylattice"), 1.0) + self.assertEqual(self.lmp.extract_global("zlattice"), 1.0) # set and initialize r-RESPA self.lmp.command("run_style respa 3 5 2 pair 2 kspace 3") From 180593e53cc42cd19df646f7d0c0a5d5f8513cc1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 00:51:43 -0400 Subject: [PATCH 110/326] add missing picture --- doc/src/JPG/lammps-gui-dark.png | Bin 0 -> 79448 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/src/JPG/lammps-gui-dark.png diff --git a/doc/src/JPG/lammps-gui-dark.png b/doc/src/JPG/lammps-gui-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..31921bf537d0609fb60d24b36517198a9c240603 GIT binary patch literal 79448 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 a7WO}=B=|}E0RWi=fhfo*OIJ#n1pf!JI5)Qd literal 0 HcmV?d00001 From 97c5bcc00c725012b44f8222c37fc0df6037f733 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 00:55:56 -0400 Subject: [PATCH 111/326] update --- doc/utils/sphinx-config/false_positives.txt | 3 +++ tools/lammps-gui/lammps-gui.appdata.xml | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index ae4b52efee..cfbddbe5f6 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -4130,6 +4130,7 @@ Xiaowang Xie xk xlat +xlattice xlo xmax Xmax @@ -4181,6 +4182,7 @@ yflag yhi yi ylat +ylattice ylo ylz ymax @@ -4229,6 +4231,7 @@ Ziegenhain zincblende zj Zj +zlattice zlim zlo Zm diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index a6a384af1b..2139cc6134 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -56,9 +56,10 @@ - Added search and replace functionality. + Added search and replace functionality Converged command line argument parsing using Qt facilities - Added dark mode adjustments + Added dark mode adjustments to syntax highlighting + Add field to enter Atom size, if not determined otherwise From 765212eae267d0108954553bd15a5d4a7899bd39 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 01:18:29 -0400 Subject: [PATCH 112/326] LAMMPS-GUI doc update --- doc/src/Howto_lammps_gui.rst | 19 ++++++++++++------- doc/src/JPG/lammps-gui-funnel.png | Bin 0 -> 333260 bytes doc/src/JPG/lammps-gui-image.png | Bin 117460 -> 87874 bytes 3 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 doc/src/JPG/lammps-gui-funnel.png diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index 364c70d50f..21e6a31ccc 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -437,16 +437,21 @@ instance when using reduced (= 'lj') :doc:`units `, then LAMMPS-GUI will check the current pair style and if it is a Lennard-Jones type potential, it will extract the *sigma* parameter for each atom type and assign atom diameters from those numbers. +For cases where atom diameters are not auto-detected, the *Atom size* field +can be edited and a suitable value set manually. The default value +is inferred from the x-direction lattice spacing. -Otherwise the default sequence of colors of the :doc:`dump image -` command is assigned to the different atom types and the -diameters are all the same. +If elements cannot be detected the default sequence of colors of the +:doc:`dump image ` command is assigned to the different atom +types. -.. figure:: JPG/lammps-gui-image.png - :align: center - :scale: 50% +.. |gui-image1| image:: JPG/lammps-gui-image.png + :width: 48% - Visualization of LAMMPS "peptide" example +.. |gui-image2| image:: JPG/lammps-gui-funnel.png + :width: 48% + +|gui-image1| |gui-image2| The default image size, some default image quality settings, the view style and some colors can be changed in the *Preferences* dialog diff --git a/doc/src/JPG/lammps-gui-funnel.png b/doc/src/JPG/lammps-gui-funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..6f24f8bbd93b2851a0a0d5f5e3faeaf31b2e22bb GIT binary patch literal 333260 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 a_CFk&C;0rfnkrk5YhEjBD^)94efodwrzo)i literal 0 HcmV?d00001 diff --git a/doc/src/JPG/lammps-gui-image.png b/doc/src/JPG/lammps-gui-image.png index 969aadce0b6cdf6a0da8da2de4b4a42fd0ffcd2c..5f71cb2be5229853f3363f2dab97ab98f3a6f8f9 100644 GIT binary patch literal 87874 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�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 literal 117460 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 From e3773cad837aaddd31315e47ad067907f81e0569 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 02:50:47 -0400 Subject: [PATCH 113/326] workaround for Qt 5.12 which is lacking some color constants --- tools/lammps-gui/highlighter.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index 9846011836..ec196438d9 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -13,6 +13,27 @@ #include "highlighter.h" #include "helpers.h" +#include + +// workaround for Qt-5.12 +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +namespace QColorConstants { +const QColor Red = QColor::fromRgb(0xff, 0x00, 0x00); +const QColor Green = QColor::fromRgb(0x00, 0xff, 0x00); +const QColor Blue = QColor::fromRgb(0x00, 0x00, 0xff); +const QColor Cyan = QColor::fromRgb(0x00, 0xff, 0xff); +const QColor Magenta = QColor::fromRgb(0xff, 0x00, 0xff); +const QColor Yellow = QColor::fromRgb(0xff, 0xff, 0x00); +namespace Svg { +const QColor dodgerblue = QColor::fromRgb(0x1e, 0x90, 0xff); +const QColor indianred = QColor::fromRgb(0xcd, 0x5c, 0x5c); +const QColor lightcoral = QColor::fromRgb(0xf0, 0x80, 0x80); +const QColor lightgray = QColor::fromRgb(0xd3, 0xd3, 0xd3); +const QColor lightgreen = QColor::fromRgb(0x90, 0xee, 0x90); +const QColor lightskyblue = QColor::fromRgb(0x87, 0xce, 0xfa); +} // namespace Svg +} // namespace QColorConstants +#endif Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent), From 86975151b2e44c49cf56b3a9db9562c6dfae8cc7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 07:27:37 -0400 Subject: [PATCH 114/326] step LAMMPS-GUI version --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/lammps-gui.appdata.xml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 1732169bba..1dfd8f451d 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.6.9 LANGUAGES CXX) +project(lammps-gui VERSION 1.6.10 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 2139cc6134..312abc66cf 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -54,6 +54,11 @@ + + + + + Added search and replace functionality From 6514dbb4b60824701e4f2365fd7cf70772bcac66 Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Sun, 25 Aug 2024 13:42:51 -0400 Subject: [PATCH 115/326] refactor how to insert atoms --- src/REACTION/fix_bond_react.cpp | 118 +++++++++++++++++++------------- src/REACTION/fix_bond_react.h | 11 ++- 2 files changed, 79 insertions(+), 50 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index bd8b3459e2..63781bfcdd 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -2962,6 +2962,8 @@ void FixBondReact::update_everything() int *type = atom->type; int **nspecial = atom->nspecial; tagint **special = atom->special; + tagint *tag = atom->tag; + AtomVec *avec = atom->avec; int **bond_type = atom->bond_type; tagint **bond_atom = atom->bond_atom; @@ -2974,13 +2976,16 @@ void FixBondReact::update_everything() memory->create(mark,nmark,"bond/react:mark"); for (int i = 0; i < nmark; i++) mark[i] = 0; + // used when creating atoms + addatomtag = 0; + for (int i = 0; i < nlocal; i++) addatomtag = MAX(addatomtag,tag[i]); + MPI_Allreduce(MPI_IN_PLACE,&addatomtag,1,MPI_LMP_TAGINT,MPI_MAX,world); + addatoms.clear(); + // flag used to delete special interactions int *delflag; memory->create(delflag,atom->maxspecial,"bond/react:delflag"); - tagint *tag = atom->tag; - AtomVec *avec = atom->avec; - // used when creating atoms int inserted_atoms_flag = 0; @@ -3029,6 +3034,7 @@ void FixBondReact::update_everything() for (int i = 0; i < local_num_mega; i++) { rxnID = (int) local_mega_glove[0][i]; // reactions already shuffled from dedup procedure, so can skip first N + // wait, this check needs to be after add atoms, because they can also be 'skipped' due to overlap if (iskip[rxnID]++ < nlocalskips[rxnID]) continue; // this will be overwritten if reaction skipped by create_atoms below @@ -3040,7 +3046,7 @@ void FixBondReact::update_everything() if (create_atoms_flag[rxnID] == 1) { onemol = atom->molecules[unreacted_mol[rxnID]]; twomol = atom->molecules[reacted_mol[rxnID]]; - if (insert_atoms(update_mega_glove,update_num_mega)) { + if (insert_atoms_setup(update_mega_glove,update_num_mega)) { inserted_atoms_flag = 1; } else { // create aborted reaction_count_total[rxnID]--; @@ -3068,7 +3074,7 @@ void FixBondReact::update_everything() if (create_atoms_flag[rxnID] == 1) { onemol = atom->molecules[unreacted_mol[rxnID]]; twomol = atom->molecules[reacted_mol[rxnID]]; - if (insert_atoms(update_mega_glove,update_num_mega)) { + if (insert_atoms_setup(update_mega_glove,update_num_mega)) { inserted_atoms_flag = 1; } else { // create aborted reaction_count_total[rxnID]--; @@ -3084,13 +3090,31 @@ void FixBondReact::update_everything() if (update_num_mega == 0) continue; - // if inserted atoms and global map exists, reset map now instead - // of waiting for comm since other pre-exchange fixes may use it - // invoke map_init() b/c atom count has grown - // do this once after all atom insertions - if (inserted_atoms_flag == 1 && atom->map_style != Atom::MAP_NONE) { - atom->map_init(); - atom->map_set(); + // insert all atoms for all rxns here + if (inserted_atoms_flag == 1) { + // clear to-be-overwritten ghost info + atom->nghost = 0; + atom->avec->clear_bonus(); + + for (auto & myaddatom : addatoms) { + atom->avec->create_atom(myaddatom.type,myaddatom.x); + int n = atom->nlocal - 1; + atom->tag[n] = myaddatom.tag; + atom->molecule[n] = myaddatom.molecule; + atom->mask[n] = myaddatom.mask; + atom->image[n] = myaddatom.image; + atom->v[n][0] = myaddatom.v[0]; + atom->v[n][1] = myaddatom.v[1]; + atom->v[n][2] = myaddatom.v[2]; + if (atom->rmass) atom->rmass[n]= myaddatom.rmass; + modify->create_attribute(n); + } + + // reset atom->map + if (atom->map_style != Atom::MAP_NONE) { + atom->map_init(); + atom->map_set(); + } } // mark to-delete atoms @@ -3644,10 +3668,11 @@ void FixBondReact::update_everything() } /* ---------------------------------------------------------------------- -insert created atoms +setup for inserting created atoms +atoms for all rxns are actually created all at once in update_everything ------------------------------------------------------------------------- */ -int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) +int FixBondReact::insert_atoms_setup(tagint **my_update_mega_glove, int iupdate) { // inserting atoms based off fix_deposit->pre_exchange int flag; @@ -3675,14 +3700,9 @@ int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) tagint *molecule = atom->molecule; int nlocal = atom->nlocal; - tagint maxtag_all,maxmol_all; - tagint max = 0; - for (int i = 0; i < nlocal; i++) max = MAX(max,tag[i]); - MPI_Allreduce(&max,&maxtag_all,1,MPI_LMP_TAGINT,MPI_MAX,world); - - max = 0; - for (int i = 0; i < nlocal; i++) max = MAX(max,molecule[i]); - MPI_Allreduce(&max,&maxmol_all,1,MPI_LMP_TAGINT,MPI_MAX,world); + tagint maxmol_all; + for (int i = 0; i < nlocal; i++) maxmol_all = MAX(maxmol_all,molecule[i]); + MPI_Allreduce(MPI_IN_PLACE,&maxmol_all,1,MPI_LMP_TAGINT,MPI_MAX,world); int dimension = domain->dimension; @@ -3776,6 +3796,7 @@ int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) break; } } + // !! need to add check against soon-to-added atoms if (abortflag) break; } } @@ -3787,12 +3808,6 @@ int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) } } - // clear ghost count and any ghost bonus data internal to AtomVec - // same logic as beginning of Comm::exchange() - // do it now b/c inserting atoms will overwrite ghost atoms - atom->nghost = 0; - atom->avec->clear_bonus(); - // check if new atoms are in my sub-box or above it if I am highest proc // if so, add atom to my list via create_atom() // initialize additional info about the atoms @@ -3835,40 +3850,46 @@ int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) } int root = 0; + addatomtag++; if (flag) { + struct AddAtom myaddatom; root = comm->me; - atom->avec->create_atom(twomol->type[m],coords[m]); - int n = atom->nlocal - 1; - atom->tag[n] = maxtag_all + add_count; + myaddatom.type = twomol->type[m]; + myaddatom.x[0] = coords[m][0]; + myaddatom.x[1] = coords[m][1]; + myaddatom.x[2] = coords[m][2]; + myaddatom.tag = addatomtag; // locally update mega_glove - my_update_mega_glove[preID][iupdate] = atom->tag[n]; + my_update_mega_glove[preID][iupdate] = myaddatom.tag; + // could do better job choosing mol ID for added atoms if (atom->molecule_flag) { if (twomol->moleculeflag) { - atom->molecule[n] = maxmol_all + twomol->molecule[m]; + myaddatom.molecule = maxmol_all + twomol->molecule[m]; } else { - atom->molecule[n] = maxmol_all + 1; + myaddatom.molecule = maxmol_all + 1; } } - atom->mask[n] = 1 | groupbit; - atom->image[n] = imageflags[m]; + myaddatom.mask = 1 | groupbit; + myaddatom.image = imageflags[m]; // guess a somewhat reasonable initial velocity based on reaction site // further control is possible using bond_react_MASTER_group // compute |velocity| corresponding to a given temperature t, using specific atom's mass - double mymass = atom->rmass ? atom->rmass[n] : atom->mass[twomol->type[m]]; - double vtnorm = sqrt(t / (force->mvv2e / (dimension * force->boltz)) / mymass); - v[n][0] = random[rxnID]->uniform(); - v[n][1] = random[rxnID]->uniform(); - v[n][2] = random[rxnID]->uniform(); - double vnorm = sqrt(v[n][0]*v[n][0] + v[n][1]*v[n][1] + v[n][2]*v[n][2]); - v[n][0] = v[n][0]/vnorm*vtnorm; - v[n][1] = v[n][1]/vnorm*vtnorm; - v[n][2] = v[n][2]/vnorm*vtnorm; - modify->create_attribute(n); + myaddatom.rmass = atom->rmass ? twomol->rmass[m] : atom->mass[twomol->type[m]]; + double vtnorm = sqrt(t / (force->mvv2e / (dimension * force->boltz)) / myaddatom.rmass); + double myv[3]; + myv[0] = random[rxnID]->uniform(); + myv[1] = random[rxnID]->uniform(); + myv[2] = random[rxnID]->uniform(); + double vnorm = sqrt(myv[0]*myv[0] + myv[1]*myv[1] + myv[2]*myv[2]); + myaddatom.v[0] = myv[0]/vnorm*vtnorm; + myaddatom.v[1] = myv[1]/vnorm*vtnorm; + myaddatom.v[2] = myv[2]/vnorm*vtnorm; + addatoms.push_back(myaddatom); } // globally update mega_glove and equivalences MPI_Allreduce(MPI_IN_PLACE,&root,1,MPI_INT,MPI_SUM,world); @@ -3881,12 +3902,11 @@ int FixBondReact::insert_atoms(tagint **my_update_mega_glove, int iupdate) } // reset global natoms here - // reset atom map elsewhere, after all calls to 'insert_atoms' + // reset atom map elsewhere, after all calls to 'insert_atoms_setup' atom->natoms += add_count; if (atom->natoms < 0) error->all(FLERR,"Too many total atoms"); - maxtag_all += add_count; - if (maxtag_all >= MAXTAGINT) + if (addatomtag >= MAXTAGINT) error->all(FLERR,"New atom IDs exceed maximum allowed ID"); // atom creation successful memory->destroy(coords); diff --git a/src/REACTION/fix_bond_react.h b/src/REACTION/fix_bond_react.h index d79588c6dd..6267d20076 100644 --- a/src/REACTION/fix_bond_react.h +++ b/src/REACTION/fix_bond_react.h @@ -216,7 +216,7 @@ class FixBondReact : public Fix { void glove_ghostcheck(); void ghost_glovecast(); void update_everything(); - int insert_atoms(tagint **, int); + int insert_atoms_setup(tagint **, int); void unlimit_bond(); // removes atoms from stabilization, and other post-reaction every-step operations void dedup_mega_gloves(int); //dedup global mega_glove void write_restart(FILE *) override; @@ -246,6 +246,15 @@ class FixBondReact : public Fix { std::map, int> atoms2bond; // maps atom pair to index of local bond array std::vector> constraints; + tagint addatomtag; + struct AddAtom { + tagint tag, molecule; + int type, mask; + imageint image; + double rmass, x[3], v[3]; + }; + std::vector addatoms; + // DEBUG void print_bb(); From e94d32e7d3e1d854e76c10159e90e5e95f2f61e1 Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Sun, 25 Aug 2024 14:19:17 -0400 Subject: [PATCH 116/326] clean up tiny_nylon example --- .../tiny_nylon/in.tiny_nylon.stabilized | 1 + ...tiny_nylon.stabilized_variable_probability | 2 +- .../tiny_nylon/in.tiny_nylon.unstabilized | 2 +- .../rxn1_stp1_reacted.molecule_template | 21 - .../rxn1_stp2_reacted.molecule_template | 30 +- .../reaction/tiny_nylon/tiny_nylon.data | 1263 ++++++++--------- 6 files changed, 605 insertions(+), 714 deletions(-) diff --git a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized index 60d33aa351..4998ea7d9d 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized +++ b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized @@ -44,6 +44,7 @@ thermo 50 fix myrxns all bond/react stabilization yes statted_grp .03 & react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map rescale_charges yes fix 1 statted_grp_REACT nvt temp 300 300 100 diff --git a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability index 770f4fc3b1..4b268cf0d9 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability +++ b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.stabilized_variable_probability @@ -47,7 +47,7 @@ thermo 50 fix myrxns all bond/react stabilization yes statted_grp .03 & react rxn1 all 1 0.0 5.0 mol1 mol2 rxn1_stp1_map prob v_prob1 1234 & - react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map prob v_prob2 1234 rescale_charges yes fix 1 statted_grp_REACT nvt temp 300 300 100 diff --git a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized index 4ade3f8b99..3ecf552174 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized +++ b/examples/PACKAGES/reaction/tiny_nylon/in.tiny_nylon.unstabilized @@ -44,7 +44,7 @@ thermo 50 fix myrxns all bond/react stabilization no & react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & - react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map + react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map rescale_charges yes fix 1 all nve/limit .03 diff --git a/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp1_reacted.molecule_template b/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp1_reacted.molecule_template index 40f3aa8276..594775b39c 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp1_reacted.molecule_template +++ b/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp1_reacted.molecule_template @@ -48,27 +48,6 @@ Types 17 hc 18 hc -Charges - - 1 -0.300000 - 2 0.000000 - 3 0.000000 - 4 0.000000 - 5 0.000000 - 6 0.000000 - 7 0.000000 - 8 0.000000 - 9 0.000000 - 10 0.300000 - 11 0.000000 - 12 0.000000 - 13 0.000000 - 14 0.000000 - 15 0.000000 - 16 0.000000 - 17 0.000000 - 18 0.000000 - Molecules 1 1 diff --git a/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp2_reacted.molecule_template b/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp2_reacted.molecule_template index 2e91261468..7e1a350d16 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp2_reacted.molecule_template +++ b/examples/PACKAGES/reaction/tiny_nylon/rxn1_stp2_reacted.molecule_template @@ -44,21 +44,21 @@ Types Charges - 1 -0.300000 - 2 0.000000 - 3 0.000000 - 4 0.410000 - 5 0.000000 - 6 0.000000 - 7 0.000000 - 8 0.000000 - 9 0.000000 - 10 0.300000 - 11 0.000000 - 12 -0.820000 - 13 0.000000 - 14 0.000000 - 15 0.410000 + 1 -0.60533 + 2 -0.01149 + 3 -0.76306 + 4 0.38 + 5 0.29346 + 6 0.18360 + 7 0.15396 + 8 -0.72636 + 9 -0.27437 + 10 0.40603 + 11 -0.65530 + 12 -0.76 + 13 0.21423 + 14 0.18949 + 15 0.38 Molecules diff --git a/examples/PACKAGES/reaction/tiny_nylon/tiny_nylon.data b/examples/PACKAGES/reaction/tiny_nylon/tiny_nylon.data index ee8e397956..73c776c430 100644 --- a/examples/PACKAGES/reaction/tiny_nylon/tiny_nylon.data +++ b/examples/PACKAGES/reaction/tiny_nylon/tiny_nylon.data @@ -1,15 +1,15 @@ -this is LAMMPS data file containing two nylon monomers +LAMMPS data file via write_data, version 27 Jun 2024, timestep = 0, units = real 44 atoms 11 atom types 42 bonds -15 bond types +13 bond types 74 angles -29 angle types +26 angle types 100 dihedrals -36 dihedral types -44 impropers -13 improper types +33 dihedral types +16 impropers +5 improper types -25 25 xlo xhi -25 25 ylo yhi @@ -17,15 +17,15 @@ this is LAMMPS data file containing two nylon monomers Atom Type Labels -1 c2 -2 c_1 -3 o -4 hc -5 ho -6 o_1 -7 na -8 hn -9 n +1 c2 +2 c_1 +3 o +4 hc +5 ho +6 o_1 +7 na +8 hn +9 n 10 hw 11 o* @@ -37,102 +37,86 @@ Bond Type Labels 4 c2-c_1 5 c_1-o_1 6 o-ho -7 c2-c2-repeat -8 c2-hc-repeat -9 na-c2 -10 na-hn -11 n-c2 -12 n-hn -13 n-c_1 -14 c2-na -15 hw-o* +7 na-c2 +8 na-hn +9 n-c2 +10 n-hn +11 n-c_1 +12 c2-na +13 hw-o* Angle Type Labels -1 hc-c2-hc -2 c2-c2-hc -3 c2-c2-c2 -4 c2-c_1-o_1 -5 o-c_1-o_1 -6 c2-c_1-o -7 c_1-o-ho -8 c2-c2-c_1 -9 c_1-c2-hc -10 c2-c2-hc-repeat -11 c2-c2-c2-repeat -12 hc-c2-hc-repeat -13 c2-c2-na -14 na-c2-hc -15 c2-na-hn -16 hn-na-hn -17 c2-n-hn -18 c2-n-c_1 -19 hn-n-hn -20 hn-n-c_1 -21 n-c2-c2 -22 n-c2-hc -23 hc-c2-c_1 -24 n-c_1-c2 -25 o_1-c_1-o -26 n-c_1-o_1 -27 n-c_1-o -28 na-c2-c2 -29 hw-o*-hw +1 hc-c2-hc +2 c2-c2-hc +3 c2-c2-c2 +4 c2-c_1-o_1 +5 o-c_1-o_1 +6 c2-c_1-o +7 c_1-o-ho +8 c2-c2-c_1 +9 c_1-c2-hc +10 c2-c2-na +11 na-c2-hc +12 c2-na-hn +13 hn-na-hn +14 c2-n-hn +15 c2-n-c_1 +16 hn-n-hn +17 hn-n-c_1 +18 n-c2-c2 +19 n-c2-hc +20 hc-c2-c_1 +21 n-c_1-c2 +22 o_1-c_1-o +23 n-c_1-o_1 +24 n-c_1-o +25 na-c2-c2 +26 hw-o*-hw Dihedral Type Labels -1 c_1-c2-c2-hc -2 hc-c2-c2-hc -3 c2-c2-c2-c_1 -4 c2-c2-c2-hc -5 c2-c2-c2-c2 -6 c2-c_1-o-ho -7 o_1-c_1-o-ho -8 c2-c2-c_1-o -9 hc-c2-c_1-o +1 c_1-c2-c2-hc +2 hc-c2-c2-hc +3 c2-c2-c2-c_1 +4 c2-c2-c2-hc +5 c2-c2-c2-c2 +6 c2-c_1-o-ho +7 o_1-c_1-o-ho +8 c2-c2-c_1-o +9 hc-c2-c_1-o 10 c2-c2-c_1-o_1 11 hc-c2-c_1-o_1 12 na-c2-c2-hc -13 hc-c2-c2-hc-repeat -14 c2-c2-c2-na -15 c2-c2-c2-hc-repeat -16 c2-c2-c2-c2-repeat -17 c2-c2-na-hn -18 hn-na-c2-hc -19 hn-n-c2-c2 -20 hn-n-c2-hc -21 c_1-n-c2-c2 -22 c_1-n-c2-hc -23 c2-n-c_1-c2 -24 c2-n-c_1-o_1 -25 c2-n-c_1-o -26 hn-n-c_1-c2 -27 hn-n-c_1-o_1 -28 hn-n-c_1-o -29 n-c2-c2-c2 -30 n-c2-c2-hc -31 c2-c2-c_1-n -32 hc-c2-c_1-n -33 n-c_1-o-ho -34 hn-na-c2-c2 -35 hc-c2-na-hn -36 na-c2-c2-c2 +13 c2-c2-c2-na +14 c2-c2-na-hn +15 hn-na-c2-hc +16 hn-n-c2-c2 +17 hn-n-c2-hc +18 c_1-n-c2-c2 +19 c_1-n-c2-hc +20 c2-n-c_1-c2 +21 c2-n-c_1-o_1 +22 c2-n-c_1-o +23 hn-n-c_1-c2 +24 hn-n-c_1-o_1 +25 hn-n-c_1-o +26 n-c2-c2-c2 +27 n-c2-c2-hc +28 c2-c2-c_1-n +29 hc-c2-c_1-n +30 n-c_1-o-ho +31 hn-na-c2-c2 +32 hc-c2-na-hn +33 na-c2-c2-c2 Improper Type Labels -1 c2-c_1-o-o_1 -2 c2-na-hn-hn -3 c2-c_1-o_1-o -4 c2-n-hn-c_1 -5 zero5 -6 zero6 -7 zero7 -8 zero8 -9 zero9 -10 zero10 -11 zero11 -12 zero12 -13 n-c_1-c2-o_1 +1 c2-c_1-o-o_1 +2 c2-na-hn-hn +3 c2-c_1-o_1-o +4 c2-n-hn-c_1 +5 n-c_1-c2-o_1 Masses @@ -148,7 +132,7 @@ Masses 10 1.00797 11 15.9994 -Pair Coeffs # lj/class2/coul/cut +Pair Coeffs # lj/class2/coul/long 1 0.054 4.01 2 0.12 3.81 @@ -170,15 +154,13 @@ Bond Coeffs # class2 4 1.5202 253.707 -423.037 396.9 5 1.202 851.14 -1918.49 2160.77 6 0.965 532.506 -1282.9 2004.77 -7 1.53 299.67 -501.77 679.81 -8 1.101 345 -691.89 844.6 -9 1.457 365.805 -699.637 998.484 -10 1.006 466.74 -1073.6 1251.11 -11 1.452 327.166 -547.899 526.5 -12 1.01 462.75 -1053.63 1545.76 -13 1.416 359.159 -558.473 1146.38 -14 1.457 365.805 -699.637 998.484 -15 0.97 563.28 -1428.22 1902.12 +7 1.457 365.805 -699.637 998.484 +8 1.006 466.74 -1073.6 1251.11 +9 1.452 327.166 -547.899 526.5 +10 1.01 462.75 -1053.63 1545.76 +11 1.416 359.159 -558.473 1146.38 +12 1.457 365.805 -699.637 998.484 +13 0.97 563.28 -1428.22 1902.12 Angle Coeffs # class2 @@ -191,26 +173,23 @@ Angle Coeffs # class2 7 111.254 53.5303 -11.8454 -11.5405 8 108.53 51.9747 -9.4851 -10.9985 9 107.734 40.6099 -28.8121 0 -10 110.77 41.453 -10.604 5.129 -11 112.67 39.516 -7.443 -9.5583 -12 107.66 39.641 -12.921 -2.4318 -13 111.91 60.7147 -13.3366 -13.0785 -14 110.62 51.3137 -6.7198 -2.6003 -15 110.954 50.8652 -4.4522 -10.0298 -16 107.067 45.252 -7.5558 -9.512 -17 113.868 45.9271 -20.0824 0 -18 111.037 31.8958 -6.6942 -6.837 -19 116.94 37.5749 -8.6676 0 -20 117.961 37.4964 -8.1837 0 -21 114.302 42.6589 -10.5464 -9.3243 -22 108.937 57.401 2.9374 0 -23 107.734 40.6099 -28.8121 0 -24 116.926 39.4193 -10.9945 -8.7733 -25 118.986 98.6813 -22.2485 10.3673 -26 125.542 92.572 -34.48 -11.1871 -27 125.542 92.572 -34.48 -11.1871 -28 111.91 60.7147 -13.3366 -13.0785 -29 103.7 49.84 -11.6 -8 +10 111.91 60.7147 -13.3366 -13.0785 +11 110.62 51.3137 -6.7198 -2.6003 +12 110.954 50.8652 -4.4522 -10.0298 +13 107.067 45.252 -7.5558 -9.512 +14 113.868 45.9271 -20.0824 0 +15 111.037 31.8958 -6.6942 -6.837 +16 116.94 37.5749 -8.6676 0 +17 117.961 37.4964 -8.1837 0 +18 114.302 42.6589 -10.5464 -9.3243 +19 108.937 57.401 2.9374 0 +20 107.734 40.6099 -28.8121 0 +21 116.926 39.4193 -10.9945 -8.7733 +22 118.986 98.6813 -22.2485 10.3673 +23 125.542 92.572 -34.48 -11.1871 +24 125.542 92.572 -34.48 -11.1871 +25 111.91 60.7147 -13.3366 -13.0785 +26 103.7 49.84 -11.6 -8 BondBond Coeffs @@ -223,26 +202,23 @@ BondBond Coeffs 7 0 1.3649 0.965 8 5.4199 1.53 1.5202 9 0.7115 1.5202 1.101 -10 3.3872 1.53 1.101 -11 0 1.53 1.53 -12 5.3316 1.101 1.101 -13 4.6217 1.53 1.457 -14 12.426 1.457 1.101 -15 -6.4168 1.457 1.006 -16 -1.8749 1.006 1.006 -17 -3.471 1.452 1.01 -18 12.1186 1.452 1.416 -19 -0.5655 1.01 1.01 -20 -4.3126 1.01 1.416 -21 3.5446 1.452 1.53 -22 15.2994 1.452 1.101 -23 0.7115 1.101 1.5202 -24 0 1.416 1.5202 -25 0 1.202 1.3649 -26 138.495 1.416 1.202 -27 0 1.416 1.3649 -28 4.6217 1.457 1.53 -29 -9.5 0.97 0.97 +10 4.6217 1.53 1.457 +11 12.426 1.457 1.101 +12 -6.4168 1.457 1.006 +13 -1.8749 1.006 1.006 +14 -3.471 1.452 1.01 +15 12.1186 1.452 1.416 +16 -0.5655 1.01 1.01 +17 -4.3126 1.01 1.416 +18 3.5446 1.452 1.53 +19 15.2994 1.452 1.101 +20 0.7115 1.101 1.5202 +21 0 1.416 1.5202 +22 0 1.202 1.3649 +23 138.495 1.416 1.202 +24 0 1.416 1.3649 +25 4.6217 1.457 1.53 +26 -9.5 0.97 0.97 BondAngle Coeffs @@ -255,26 +231,23 @@ BondAngle Coeffs 7 0 0 1.3649 0.965 8 18.1678 15.8758 1.53 1.5202 9 12.4632 9.1765 1.5202 1.101 -10 20.754 11.421 1.53 1.101 -11 8.016 8.016 1.53 1.53 -12 18.103 18.103 1.101 1.101 -13 6.0876 16.5702 1.53 1.457 -14 42.4332 13.4582 1.457 1.101 -15 31.8096 20.5799 1.457 1.006 -16 28.0322 28.0322 1.006 1.006 -17 11.8828 5.9339 1.452 1.01 -18 3.7812 14.8633 1.452 1.416 -19 19.8125 19.8125 1.01 1.01 -20 10.8422 29.5743 1.01 1.416 -21 4.6031 -5.479 1.452 1.53 -22 34.8907 10.6917 1.452 1.101 -23 9.1765 12.4632 1.101 1.5202 -24 0 0 1.416 1.5202 -25 0 0 1.202 1.3649 -26 62.7124 52.4045 1.416 1.202 -27 0 0 1.416 1.3649 -28 16.5702 6.0876 1.457 1.53 -29 22.35 22.35 0.97 0.97 +10 6.0876 16.5702 1.53 1.457 +11 42.4332 13.4582 1.457 1.101 +12 31.8096 20.5799 1.457 1.006 +13 28.0322 28.0322 1.006 1.006 +14 11.8828 5.9339 1.452 1.01 +15 3.7812 14.8633 1.452 1.416 +16 19.8125 19.8125 1.01 1.01 +17 10.8422 29.5743 1.01 1.416 +18 4.6031 -5.479 1.452 1.53 +19 34.8907 10.6917 1.452 1.101 +20 9.1765 12.4632 1.101 1.5202 +21 0 0 1.416 1.5202 +22 0 0 1.202 1.3649 +23 62.7124 52.4045 1.416 1.202 +24 0 0 1.416 1.3649 +25 16.5702 6.0876 1.457 1.53 +26 22.35 22.35 0.97 0.97 Dihedral Coeffs # class2 @@ -290,30 +263,27 @@ Dihedral Coeffs # class2 10 0.0442 0 0.0292 0 0.0562 0 11 -0.1804 0 0.0012 0 0.0371 0 12 -0.2428 0 0.4065 0 -0.3079 0 -13 -0.1432 0 0.0617 0 -0.1083 0 -14 0.1764 0 0.1766 0 -0.5206 0 -15 0 0 0.0316 0 -0.1681 0 -16 0 0 0.0514 0 -0.143 0 -17 -1.1506 0 -0.6344 0 -0.1845 0 -18 -0.5187 0 -0.4837 0 -0.1692 0 -19 -0.0483 0 -0.0077 0 -0.0014 0 -20 -0.0148 0 -0.0791 0 -0.0148 0 -21 0.0143 0 -0.0132 0 0.0091 0 -22 0.0219 0 -0.026 0 0.0714 0 -23 -0.7532 0 2.7392 0 0.0907 0 -24 0.8297 0 3.7234 0 -0.0495 0 +13 0.1764 0 0.1766 0 -0.5206 0 +14 -1.1506 0 -0.6344 0 -0.1845 0 +15 -0.5187 0 -0.4837 0 -0.1692 0 +16 -0.0483 0 -0.0077 0 -0.0014 0 +17 -0.0148 0 -0.0791 0 -0.0148 0 +18 0.0143 0 -0.0132 0 0.0091 0 +19 0.0219 0 -0.026 0 0.0714 0 +20 -0.7532 0 2.7392 0 0.0907 0 +21 0.8297 0 3.7234 0 -0.0495 0 +22 0 0 0 0 0 0 +23 0 0 0 0 0 0 +24 -1.6938 0 2.7386 0 -0.336 0 25 0 0 0 0 0 0 -26 0 0 0 0 0 0 -27 -1.6938 0 2.7386 0 -0.336 0 -28 0 0 0 0 0 0 -29 0.0972 0 0.0722 0 -0.2581 0 -30 -0.0228 0 0.028 0 -0.1863 0 -31 0.1693 0 -0.009 0 -0.0687 0 -32 0.1693 0 -0.009 0 -0.0687 0 -33 0 0 0 0 0 0 -34 -1.1506 0 -0.6344 0 -0.1845 0 -35 -0.5187 0 -0.4837 0 -0.1692 0 -36 0.1764 0 0.1766 0 -0.5206 0 +26 0.0972 0 0.0722 0 -0.2581 0 +27 -0.0228 0 0.028 0 -0.1863 0 +28 0.1693 0 -0.009 0 -0.0687 0 +29 0.1693 0 -0.009 0 -0.0687 0 +30 0 0 0 0 0 0 +31 -1.1506 0 -0.6344 0 -0.1845 0 +32 -0.5187 0 -0.4837 0 -0.1692 0 +33 0.1764 0 0.1766 0 -0.5206 0 AngleAngleTorsion Coeffs @@ -329,30 +299,27 @@ AngleAngleTorsion Coeffs 10 -8.019 108.53 123.145 11 -15.3496 107.734 123.145 12 -15.7572 111.91 110.77 -13 -12.564 110.77 110.77 -14 -27.3953 112.67 111.91 -15 -16.164 112.67 110.77 -16 -22.045 112.67 112.67 -17 -7.5499 111.91 110.954 -18 -10.4258 110.62 110.954 -19 -4.6337 113.868 114.302 -20 -6.659 113.868 108.937 -21 -7.4314 111.037 114.302 -22 -8.1335 111.037 108.937 -23 -6.5335 111.037 116.926 -24 -15.5547 111.037 125.542 -25 0 111.037 0 -26 -1.3234 117.961 116.926 -27 -7.3186 117.961 125.542 -28 0 117.961 0 -29 -1.0631 114.302 112.67 -30 -12.7974 114.302 110.77 -31 -5.4514 108.53 116.926 -32 -12.2417 107.734 116.926 -33 0 0 111.254 -34 -7.5499 110.954 111.91 -35 -10.4258 110.954 110.62 -36 -27.3953 111.91 112.67 +13 -27.3953 112.67 111.91 +14 -7.5499 111.91 110.954 +15 -10.4258 110.62 110.954 +16 -4.6337 113.868 114.302 +17 -6.659 113.868 108.937 +18 -7.4314 111.037 114.302 +19 -8.1335 111.037 108.937 +20 -6.5335 111.037 116.926 +21 -15.5547 111.037 125.542 +22 0 111.037 0 +23 -1.3234 117.961 116.926 +24 -7.3186 117.961 125.542 +25 0 117.961 0 +26 -1.0631 114.302 112.67 +27 -12.7974 114.302 110.77 +28 -5.4514 108.53 116.926 +29 -12.2417 107.734 116.926 +30 0 0 111.254 +31 -7.5499 110.954 111.91 +32 -10.4258 110.954 110.62 +33 -27.3953 111.91 112.67 EndBondTorsion Coeffs @@ -368,30 +335,27 @@ EndBondTorsion Coeffs 10 0.2654 0.0503 0.1046 -0.281 0.0816 -0.1522 1.53 1.202 11 1.2143 0.2831 0.3916 -0.2298 0.0354 0.3853 1.101 1.202 12 0.1022 0.209 0.6433 0.196 0.7056 0.112 1.457 1.101 -13 0.213 0.312 0.0777 0.213 0.312 0.0777 1.101 1.101 -14 0.1032 0.5896 -0.4836 0.0579 -0.0043 -0.1906 1.53 1.457 -15 0.2486 0.2422 -0.0925 0.0814 0.0591 0.2219 1.53 1.101 -16 -0.0732 0 0 -0.0732 0 0 1.53 1.53 -17 -0.9466 0.9356 -0.5542 0.057 0.0625 0.4112 1.53 1.006 -18 -1.1685 0.9266 -0.0993 0.085 0.3061 0.2104 1.101 1.006 -19 -0.0992 -0.0727 -0.4139 0.132 0.0015 0.1324 1.01 1.53 -20 -0.4894 0.1644 0.3105 -0.8983 0.2826 0.0881 1.01 1.101 -21 -0.1245 -0.9369 0.7781 -0.2033 0.0035 0.056 1.416 1.53 -22 0.2292 1.1732 -0.058 -0.3667 0.8197 0.1335 1.416 1.101 -23 0.2299 -0.1141 -0.1424 0.0933 -0.4631 0.2883 1.452 1.5202 -24 0.1598 0.7253 -0.1007 0.1226 -2.1326 0.5581 1.452 1.202 -25 0 0 0 0 0 0 1.452 1.3649 -26 0.6413 0.1676 0.144 -0.6979 0.5619 0.4212 1.01 1.5202 -27 0.1214 0.1936 0.0816 -0.7604 -2.6431 1.2467 1.01 1.202 -28 0 0 0 0 0 0 1.01 1.3649 -29 -0.0797 -0.0406 0.0255 0.0742 0.0105 0.0518 1.452 1.53 -30 0.3022 0.2513 0.4641 -0.0601 -0.3763 -0.1876 1.452 1.101 -31 -0.2631 -0.0076 -0.1145 -0.2751 -0.3058 -0.1767 1.53 1.416 -32 -0.0268 0.7836 0.0035 0.3552 -0.2685 0.5834 1.101 1.416 -33 0 0 0 0 0 0 1.416 0.965 -34 0.057 0.0625 0.4112 -0.9466 0.9356 -0.5542 1.006 1.53 -35 0.085 0.3061 0.2104 -1.1685 0.9266 -0.0993 1.006 1.101 -36 0.0579 -0.0043 -0.1906 0.1032 0.5896 -0.4836 1.457 1.53 +13 0.1032 0.5896 -0.4836 0.0579 -0.0043 -0.1906 1.53 1.457 +14 -0.9466 0.9356 -0.5542 0.057 0.0625 0.4112 1.53 1.006 +15 -1.1685 0.9266 -0.0993 0.085 0.3061 0.2104 1.101 1.006 +16 -0.0992 -0.0727 -0.4139 0.132 0.0015 0.1324 1.01 1.53 +17 -0.4894 0.1644 0.3105 -0.8983 0.2826 0.0881 1.01 1.101 +18 -0.1245 -0.9369 0.7781 -0.2033 0.0035 0.056 1.416 1.53 +19 0.2292 1.1732 -0.058 -0.3667 0.8197 0.1335 1.416 1.101 +20 0.2299 -0.1141 -0.1424 0.0933 -0.4631 0.2883 1.452 1.5202 +21 0.1598 0.7253 -0.1007 0.1226 -2.1326 0.5581 1.452 1.202 +22 0 0 0 0 0 0 1.452 1.3649 +23 0.6413 0.1676 0.144 -0.6979 0.5619 0.4212 1.01 1.5202 +24 0.1214 0.1936 0.0816 -0.7604 -2.6431 1.2467 1.01 1.202 +25 0 0 0 0 0 0 1.01 1.3649 +26 -0.0797 -0.0406 0.0255 0.0742 0.0105 0.0518 1.452 1.53 +27 0.3022 0.2513 0.4641 -0.0601 -0.3763 -0.1876 1.452 1.101 +28 -0.2631 -0.0076 -0.1145 -0.2751 -0.3058 -0.1767 1.53 1.416 +29 -0.0268 0.7836 0.0035 0.3552 -0.2685 0.5834 1.101 1.416 +30 0 0 0 0 0 0 1.416 0.965 +31 0.057 0.0625 0.4112 -0.9466 0.9356 -0.5542 1.006 1.53 +32 0.085 0.3061 0.2104 -1.1685 0.9266 -0.0993 1.006 1.101 +33 0.0579 -0.0043 -0.1906 0.1032 0.5896 -0.4836 1.457 1.53 MiddleBondTorsion Coeffs @@ -407,30 +371,27 @@ MiddleBondTorsion Coeffs 10 0.3388 -0.1096 0.1219 1.5202 11 0.2359 0.9139 0.9594 1.5202 12 -10.4959 -0.7647 -0.0545 1.53 -13 -14.261 -0.5322 -0.4864 1.53 -14 -15.4174 -7.3055 -1.0749 1.53 -15 -14.879 -3.6581 -0.3138 1.53 -16 -17.787 -7.1877 0 1.53 -17 -2.2208 0.5479 -0.3527 1.457 -18 -3.4611 1.6996 -0.6007 1.457 -19 -3.5406 -3.3866 0.0352 1.452 -20 -1.1752 2.8058 0.8083 1.452 -21 -3.9501 -0.4002 -0.6798 1.452 -22 -0.6899 -2.2646 1.1579 1.452 +13 -15.4174 -7.3055 -1.0749 1.53 +14 -2.2208 0.5479 -0.3527 1.457 +15 -3.4611 1.6996 -0.6007 1.457 +16 -3.5406 -3.3866 0.0352 1.452 +17 -1.1752 2.8058 0.8083 1.452 +18 -3.9501 -0.4002 -0.6798 1.452 +19 -0.6899 -2.2646 1.1579 1.452 +20 0 0 0 1.416 +21 -8.8301 14.3079 -1.7716 1.416 +22 0 0 0 1.416 23 0 0 0 1.416 -24 -8.8301 14.3079 -1.7716 1.416 +24 -0.9084 6.1447 -0.4852 1.416 25 0 0 0 1.416 -26 0 0 0 1.416 -27 -0.9084 6.1447 -0.4852 1.416 -28 0 0 0 1.416 -29 -4.2324 -3.3023 -1.3244 1.53 -30 -4.1028 -0.5941 -0.047 1.53 -31 0 0 0 1.5202 -32 0 0 0 1.5202 -33 0 0 0 1.3649 -34 -2.2208 0.5479 -0.3527 1.457 -35 -3.4611 1.6996 -0.6007 1.457 -36 -15.4174 -7.3055 -1.0749 1.53 +26 -4.2324 -3.3023 -1.3244 1.53 +27 -4.1028 -0.5941 -0.047 1.53 +28 0 0 0 1.5202 +29 0 0 0 1.5202 +30 0 0 0 1.3649 +31 -2.2208 0.5479 -0.3527 1.457 +32 -3.4611 1.6996 -0.6007 1.457 +33 -15.4174 -7.3055 -1.0749 1.53 BondBond13 Coeffs @@ -446,30 +407,27 @@ BondBond13 Coeffs 10 0 1.53 1.202 11 0 1.101 1.202 12 0 1.457 1.101 -13 0 1.101 1.101 -14 0 1.53 1.457 -15 0 1.53 1.101 -16 0 1.53 1.53 -17 0 1.53 1.006 -18 0 1.101 1.006 -19 0 1.01 1.53 -20 0 1.01 1.101 -21 0 1.416 1.53 -22 0 1.416 1.101 -23 0 1.452 1.5202 -24 0 1.452 1.202 -25 0 1.452 1.3649 -26 0 1.01 1.5202 -27 0 1.01 1.202 -28 0 1.01 1.3649 -29 0 1.452 1.53 -30 0 1.452 1.101 -31 0 1.53 1.416 -32 0 1.101 1.416 -33 0 1.416 0.965 -34 0 1.006 1.53 -35 0 1.006 1.101 -36 0 1.457 1.53 +13 0 1.53 1.457 +14 0 1.53 1.006 +15 0 1.101 1.006 +16 0 1.01 1.53 +17 0 1.01 1.101 +18 0 1.416 1.53 +19 0 1.416 1.101 +20 0 1.452 1.5202 +21 0 1.452 1.202 +22 0 1.452 1.3649 +23 0 1.01 1.5202 +24 0 1.01 1.202 +25 0 1.01 1.3649 +26 0 1.452 1.53 +27 0 1.452 1.101 +28 0 1.53 1.416 +29 0 1.101 1.416 +30 0 1.416 0.965 +31 0 1.006 1.53 +32 0 1.006 1.101 +33 0 1.457 1.53 AngleTorsion Coeffs @@ -485,30 +443,27 @@ AngleTorsion Coeffs 10 0.0885 -1.3703 -0.5452 0.675 0.5965 0.6725 108.53 123.145 11 9.1299 -0.4847 0.3582 -1.4946 0.7308 -0.2083 107.734 123.145 12 -1.1075 0.282 0.8318 0.5111 1.6328 -1.0155 111.91 110.77 -13 -0.8085 0.5569 -0.2466 -0.8085 0.5569 -0.2466 110.77 110.77 -14 -1.9225 -1.345 0.221 2.0125 0.944 -2.7612 112.67 111.91 -15 -0.2454 0 -0.1136 0.3113 0.4516 -0.1988 112.67 110.77 -16 0.3886 -0.3139 0.1389 0.3886 -0.3139 0.1389 112.67 112.67 -17 -3.343 4.4558 -0.0346 0.2873 -0.8072 -0.096 111.91 110.954 -18 -3.9582 2.0063 0.3213 -0.4294 -0.4442 -0.6141 110.62 110.954 -19 -0.5807 0.2041 -0.1384 -2.8967 2.7084 -0.0375 113.868 114.302 -20 -0.3868 0.2041 0.0445 -3.7022 1.3876 0.2393 113.868 108.937 -21 -1.523 1.1296 0.7167 -0.7555 0.0564 1.2177 111.037 114.302 -22 0.0372 -0.3418 -0.0775 -1.5157 2.0781 0.5364 111.037 108.937 -23 5.916 1.7856 0.4052 4.2133 2.9302 3.2903 111.037 116.926 -24 7.4427 2.1505 -0.2206 4.4466 4.0317 1.7129 111.037 125.542 -25 0 0 0 0 0 0 111.037 0 -26 1.9306 0.2105 0.0557 -2.2134 1.2909 0.9726 117.961 116.926 -27 2.3848 0.703 0.1399 -2.6238 0.3606 0.5474 117.961 125.542 -28 0 0 0 0 0 0 117.961 0 -29 0.2039 0.1602 -0.7946 -0.5501 -1.6982 0.2485 114.302 112.67 -30 -1.982 0.2325 -0.3928 -1.2469 1.6933 -1.2081 114.302 110.77 -31 2.1802 -0.0335 -1.3816 2.1221 0.5032 -0.0767 108.53 116.926 -32 7.095 0.0075 0.691 2.0013 0.5068 0.8406 107.734 116.926 -33 0 0 0 0 0 0 0 111.254 -34 0.2873 -0.8072 -0.096 -3.343 4.4558 -0.0346 110.954 111.91 -35 -0.4294 -0.4442 -0.6141 -3.9582 2.0063 0.3213 110.954 110.62 -36 2.0125 0.944 -2.7612 -1.9225 -1.345 0.221 111.91 112.67 +13 -1.9225 -1.345 0.221 2.0125 0.944 -2.7612 112.67 111.91 +14 -3.343 4.4558 -0.0346 0.2873 -0.8072 -0.096 111.91 110.954 +15 -3.9582 2.0063 0.3213 -0.4294 -0.4442 -0.6141 110.62 110.954 +16 -0.5807 0.2041 -0.1384 -2.8967 2.7084 -0.0375 113.868 114.302 +17 -0.3868 0.2041 0.0445 -3.7022 1.3876 0.2393 113.868 108.937 +18 -1.523 1.1296 0.7167 -0.7555 0.0564 1.2177 111.037 114.302 +19 0.0372 -0.3418 -0.0775 -1.5157 2.0781 0.5364 111.037 108.937 +20 5.916 1.7856 0.4052 4.2133 2.9302 3.2903 111.037 116.926 +21 7.4427 2.1505 -0.2206 4.4466 4.0317 1.7129 111.037 125.542 +22 0 0 0 0 0 0 111.037 0 +23 1.9306 0.2105 0.0557 -2.2134 1.2909 0.9726 117.961 116.926 +24 2.3848 0.703 0.1399 -2.6238 0.3606 0.5474 117.961 125.542 +25 0 0 0 0 0 0 117.961 0 +26 0.2039 0.1602 -0.7946 -0.5501 -1.6982 0.2485 114.302 112.67 +27 -1.982 0.2325 -0.3928 -1.2469 1.6933 -1.2081 114.302 110.77 +28 2.1802 -0.0335 -1.3816 2.1221 0.5032 -0.0767 108.53 116.926 +29 7.095 0.0075 0.691 2.0013 0.5068 0.8406 107.734 116.926 +30 0 0 0 0 0 0 0 111.254 +31 0.2873 -0.8072 -0.096 -3.343 4.4558 -0.0346 110.954 111.91 +32 -0.4294 -0.4442 -0.6141 -3.9582 2.0063 0.3213 110.954 110.62 +33 2.0125 0.944 -2.7612 -1.9225 -1.345 0.221 111.91 112.67 Improper Coeffs # class2 @@ -516,15 +471,7 @@ Improper Coeffs # class2 2 0 0 3 0 0 4 0 0 -5 0 0 -6 0 0 -7 0 0 -8 0 0 -9 0 0 -10 0 0 -11 0 0 -12 0 0 -13 24.3329 0 +5 24.3329 0 AngleAngle Coeffs @@ -532,378 +479,342 @@ AngleAngle Coeffs 2 0.2738 -0.4825 0.2738 110.77 107.66 110.77 3 -1.3199 -1.3199 0.1184 112.67 110.77 110.77 4 2.0403 -1.8202 1.0827 108.53 107.734 110.77 -5 -3.3867 -3.4976 -3.3867 107.734 107.66 107.734 -6 0 0 0 110.954 107.067 110.954 -7 0.2738 -0.4825 0.2738 110.77 107.66 110.77 -8 -1.3199 -1.3199 0.1184 112.67 110.77 110.77 -9 -2.5301 0.5381 2.4286 111.91 110.62 110.77 -10 2.4321 -3.5496 2.4321 110.62 107.66 110.62 -11 0 0 0 123.145 118.985 0 -12 0 0 0 113.868 117.961 111.037 -13 0 0 0 116.926 123.145 125.542 +5 0 0 0 116.926 123.145 125.542 Atoms # full -1 1 1 0.0000000000000000e+00 12.288168 0.738732 4.374280 0 0 0 -2 1 2 2.9999999999999999e-01 13.959928 -0.883144 5.090597 0 0 0 -3 1 3 0.0000000000000000e+00 14.411288 -1.994419 5.682160 0 0 0 -4 1 4 0.0000000000000000e+00 12.881083 0.872503 3.506176 0 0 0 -5 1 4 0.0000000000000000e+00 11.232775 0.801641 3.998777 0 0 0 -6 1 5 0.0000000000000000e+00 13.704366 -2.470396 6.130105 0 0 0 -7 1 1 0.0000000000000000e+00 12.489752 -0.793693 4.710639 0 0 0 -8 1 1 0.0000000000000000e+00 12.455071 1.866388 5.385870 0 0 0 -9 1 1 0.0000000000000000e+00 11.248961 1.901849 6.347664 0 0 0 -10 1 2 2.9999999999999999e-01 10.005971 2.466710 5.772840 -1 1 0 -11 1 6 0.0000000000000000e+00 14.795360 -0.034436 4.807367 0 0 0 -12 1 6 0.0000000000000000e+00 9.115239 1.654547 5.617002 -1 0 0 -13 1 3 0.0000000000000000e+00 9.745096 3.807654 5.573585 -1 1 0 -14 1 4 0.0000000000000000e+00 12.248215 -1.371492 3.808598 0 0 0 -15 1 4 0.0000000000000000e+00 11.715755 -1.036825 5.500449 0 0 0 -16 1 4 0.0000000000000000e+00 12.559724 2.807687 4.858452 0 1 0 -17 1 4 0.0000000000000000e+00 13.299968 1.616570 6.123781 0 0 0 -18 1 4 0.0000000000000000e+00 11.650505 2.330454 7.282410 0 1 0 -19 1 4 0.0000000000000000e+00 10.888420 0.913219 6.637162 -1 0 0 -20 1 5 0.0000000000000000e+00 10.550073 4.294209 5.758192 -1 1 0 -21 2 1 0.0000000000000000e+00 5.851425 1.929552 6.038335 0 0 0 -22 2 1 0.0000000000000000e+00 6.741509 3.160751 6.233074 0 0 0 -23 2 7 -2.9999999999999999e-01 7.957761 3.121780 5.252257 1 0 0 -24 2 7 -2.9999999999999999e-01 2.599653 -2.258940 5.985863 0 -1 0 -25 2 1 0.0000000000000000e+00 3.834337 -1.907078 5.441528 0 -1 0 -26 2 1 0.0000000000000000e+00 4.810793 -1.083699 6.310184 0 -1 0 -27 2 4 0.0000000000000000e+00 6.505912 1.182799 5.449104 0 0 0 -28 2 4 0.0000000000000000e+00 5.156429 2.256468 5.348423 0 0 0 -29 2 4 0.0000000000000000e+00 7.232782 3.178785 7.181911 0 0 0 -30 2 4 0.0000000000000000e+00 6.251671 4.103621 6.222913 0 0 0 -31 2 8 0.0000000000000000e+00 8.249909 4.070668 4.881297 1 0 0 -32 2 8 0.0000000000000000e+00 7.813025 2.623184 4.400744 1 0 0 -33 2 8 0.0000000000000000e+00 2.626695 -2.857547 6.817247 0 -1 0 -34 2 8 0.0000000000000000e+00 1.955281 -2.684319 5.328460 0 -1 0 -35 2 4 0.0000000000000000e+00 3.637708 -1.322842 4.469265 0 -1 0 -36 2 4 0.0000000000000000e+00 4.415570 -2.739689 4.997336 0 -1 0 -37 2 4 0.0000000000000000e+00 5.710714 -1.010014 5.642798 0 -1 0 -38 2 4 0.0000000000000000e+00 5.103831 -1.696423 7.160345 0 -1 0 -39 2 1 0.0000000000000000e+00 5.270763 1.286629 7.308822 0 0 0 -40 2 4 0.0000000000000000e+00 4.834381 2.168531 7.931687 0 0 1 -41 2 4 0.0000000000000000e+00 6.118354 0.786724 7.794709 0 0 1 -42 2 1 0.0000000000000000e+00 4.273849 0.167695 6.957862 0 -1 0 -43 2 4 0.0000000000000000e+00 3.792544 -0.081782 7.904418 0 -1 1 -44 2 4 0.0000000000000000e+00 3.527495 0.674238 6.348869 0 0 0 +1 1 c2 -0.37128 12.288168 0.738732 4.37428 +2 1 c_1 0.77363 13.959928 -0.883144 5.090597 +3 1 o -0.68333 14.411288 -1.994419 5.68216 +4 1 hc 0.20049 12.881083 0.872503 3.506176 +5 1 hc 0.19609 11.232775 0.801641 3.998777 +6 1 ho 0.48328 13.704366 -2.470396 6.130105 +7 1 c2 -0.46692 12.489752 -0.793693 4.710639 +8 1 c2 -0.38182 12.455071 1.866388 5.38587 +9 1 c2 -0.47583 11.248961 1.901849 6.347664 +10 1 c_1 0.78608 10.005971 2.46671 5.77284 +11 1 o_1 -0.56991 14.79536 -0.034436 4.807367 +12 1 o_1 -0.58244 9.115239 1.654547 5.617002 +13 1 o -0.68598 9.745096 3.807654 5.573585 +14 1 hc 0.20664 12.248215 -1.371492 3.808598 +15 1 hc 0.21572 11.715755 -1.036825 5.500449 +16 1 hc 0.18182 12.559724 2.807687 4.858452 +17 1 hc 0.21541 13.299968 1.61657 6.123781 +18 1 hc 0.20587 11.650505 2.330454 7.28241 +19 1 hc 0.22795 10.88842 0.913219 6.637162 +20 1 ho 0.48600 10.550073 4.294209 5.758192 +21 2 c2 -0.38667 5.851425 1.929552 6.038335 +22 2 c2 -0.17544 6.741509 3.160751 6.233074 +23 2 na -0.79903 7.957761 3.12178 5.252257 +24 2 na -0.79111 2.599653 -2.25894 5.985863 +25 2 c2 -0.17576 3.834337 -1.907078 5.441528 +26 2 c2 -0.38091 4.810793 -1.083699 6.310184 +27 2 hc 0.19062 6.505912 1.182799 5.449104 +28 2 hc 0.18951 5.156429 2.256468 5.348423 +29 2 hc 0.17321 7.232782 3.178785 7.181911 +30 2 hc 0.16772 6.251671 4.103621 6.222913 +31 2 hn 0.33245 8.249909 4.070668 4.881297 +32 2 hn 0.34480 7.813025 2.623184 4.400744 +33 2 hn 0.33793 2.626695 -2.857547 6.817247 +34 2 hn 0.33306 1.955281 -2.684319 5.32846 +35 2 hc 0.17708 3.637708 -1.322842 4.469265 +36 2 hc 0.15806 4.41557 -2.739689 4.997336 +37 2 hc 0.18117 5.710714 -1.010014 5.642798 +38 2 hc 0.18224 5.103831 -1.696423 7.160345 +39 2 c2 -0.38394 5.270763 1.286629 7.308822 +40 2 hc 0.17720 4.834381 2.168531 7.931687 +41 2 hc 0.18425 6.118354 0.786724 7.794709 +42 2 c2 -0.37058 4.273849 0.167695 6.957862 +43 2 hc 0.18777 3.792544 -0.081782 7.904418 +44 2 hc 0.18490 3.527495 0.674238 6.348869 Velocities -1 -2.4626989626218821e-03 -1.5920230003311222e-03 -3.0621927786115238e-03 -2 9.5082416704385837e-03 -6.9903166167507250e-03 1.3702671335945608e-02 -3 2.3431518493187576e-03 -2.9261683108242173e-03 1.4269399726982105e-03 -4 -1.8184451408256214e-02 3.1103803691687960e-02 -1.3358827768357973e-02 -5 2.6084132471017967e-02 -1.0819576493517332e-02 3.0403384454794881e-02 -6 -4.7312115958218744e-03 -1.9111462399478338e-02 -3.6793354156497558e-02 -7 -7.5068797595949869e-03 6.5661422055962489e-03 1.3226575122695422e-03 -8 3.3807881380161281e-03 3.0458732663557089e-03 2.2368826795446284e-03 -9 -3.1113905793879316e-03 8.2908867720754773e-03 -1.7561238039496530e-03 -10 2.4685206571693056e-03 1.3194776209841030e-03 -2.8041877032800441e-03 -11 -3.4945605770565296e-03 3.2323777135621814e-03 1.6223017668450866e-03 -12 -6.1153483612847778e-03 -5.1534857074262185e-03 1.7735747357354274e-03 -13 2.1384296781859011e-04 -4.5398902942729667e-03 6.1649769894413760e-03 -14 2.5004619864373401e-03 -1.5709184283264888e-03 2.0837548254667757e-02 -15 6.0547939205643532e-03 -1.2650704436910937e-02 -5.4430753266962190e-03 -16 -1.0374605775698001e-02 9.1408658463889240e-03 -1.1306875858287088e-02 -17 -1.2736499128987409e-02 -9.1726811852506501e-03 5.1136502685461254e-03 -18 7.6741778607048112e-03 1.8629856635459279e-02 -1.1300096447670932e-02 -19 -1.8616138775281121e-02 1.0848388547730185e-03 -5.7118433687798576e-03 -20 5.4137572241479059e-03 -1.4564578166395727e-02 -1.2618420441909540e-02 -21 5.8473521452312256e-03 -4.0595286000332086e-03 -6.2517801580146415e-03 -22 3.6402033824753104e-03 -1.4629540504663154e-03 -4.0030712318898046e-03 -23 9.0266305019107689e-03 -2.7511425384659687e-03 4.5576402565437142e-03 -24 -1.3102302415548614e-02 -4.7286703965305791e-03 -1.8966887841189517e-03 -25 7.8621682621103171e-03 -4.2046313540949568e-03 9.6887957374751301e-04 -26 -4.7380176438337968e-03 9.6090441940775827e-03 -8.7592431387039336e-03 -27 5.4311658811632517e-03 2.0032224663495989e-02 -9.4952076489808503e-03 -28 -2.9056381493904374e-03 3.3317109723156875e-03 1.6650350064426677e-02 -29 -6.4569944033489122e-03 2.8423983541959541e-03 -2.6066912906505167e-02 -30 -2.2173867823429387e-02 1.4628839880961319e-02 -2.3330833961402380e-02 -31 9.1925713381983114e-03 -2.5697556639281928e-03 -1.2822203161488303e-02 -32 -8.3206975051927905e-03 -2.2538429924858707e-03 7.7620244118580314e-03 -33 1.9920685674825727e-02 5.0317764848494097e-03 -2.1106672824976403e-02 -34 1.4118463330250982e-02 1.7455545466840316e-02 -1.2482101375598437e-02 -35 -6.1116505640437966e-03 1.3353021777303568e-02 -2.5492434283827668e-02 -36 9.1001521565859649e-03 5.5737774505222404e-03 1.4573768978939985e-02 -37 1.6523593470528035e-03 -2.2107518020000917e-02 2.0311423445130115e-02 -38 -1.0346275393471860e-02 1.6055856586351790e-02 5.5489127019262424e-03 -39 -3.2054811383248638e-03 1.6779208962376315e-03 2.9390509537535661e-03 -40 1.9649219364916443e-02 4.0815776523222859e-03 -9.8422441166041274e-03 -41 5.6961697588160361e-04 7.1361132234741477e-04 4.6335764220256257e-03 -42 2.2221300208006252e-03 3.6217319632558197e-03 -6.3299398503455151e-03 -43 2.5710172734841170e-03 8.0029179814482924e-03 1.9992986928468189e-02 -44 -6.0827581822674656e-03 -1.1834273655641976e-02 2.0526923045885208e-02 +1 -0.002462698962621882 -0.0015920230003311222 -0.003062192778611524 +2 0.009508241670438584 -0.006990316616750725 0.013702671335945608 +3 0.0023431518493187576 -0.0029261683108242173 0.0014269399726982105 +4 -0.018184451408256214 0.03110380369168796 -0.013358827768357973 +5 0.026084132471017967 -0.010819576493517332 0.03040338445479488 +6 -0.004731211595821874 -0.01911146239947834 -0.03679335415649756 +7 -0.007506879759594987 0.006566142205596249 0.0013226575122695422 +8 0.003380788138016128 0.003045873266355709 0.0022368826795446284 +9 -0.0031113905793879316 0.008290886772075477 -0.001756123803949653 +10 0.0024685206571693056 0.001319477620984103 -0.002804187703280044 +11 -0.0034945605770565296 0.0032323777135621814 0.0016223017668450866 +12 -0.006115348361284778 -0.0051534857074262185 0.0017735747357354274 +13 0.0002138429678185901 -0.004539890294272967 0.006164976989441376 +14 0.00250046198643734 -0.0015709184283264888 0.020837548254667757 +15 0.006054793920564353 -0.012650704436910937 -0.005443075326696219 +16 -0.010374605775698001 0.009140865846388924 -0.011306875858287088 +17 -0.01273649912898741 -0.00917268118525065 0.005113650268546125 +18 0.007674177860704811 0.01862985663545928 -0.011300096447670932 +19 -0.01861613877528112 0.0010848388547730185 -0.005711843368779858 +20 0.005413757224147906 -0.014564578166395727 -0.01261842044190954 +21 0.005847352145231226 -0.004059528600033209 -0.0062517801580146415 +22 0.0036402033824753104 -0.0014629540504663154 -0.004003071231889805 +23 0.009026630501910769 -0.0027511425384659687 0.004557640256543714 +24 -0.013102302415548614 -0.004728670396530579 -0.0018966887841189517 +25 0.007862168262110317 -0.004204631354094957 0.000968879573747513 +26 -0.004738017643833797 0.009609044194077583 -0.008759243138703934 +27 0.005431165881163252 0.02003222466349599 -0.00949520764898085 +28 -0.0029056381493904374 0.0033317109723156875 0.016650350064426677 +29 -0.006456994403348912 0.002842398354195954 -0.026066912906505167 +30 -0.022173867823429387 0.014628839880961319 -0.02333083396140238 +31 0.009192571338198311 -0.0025697556639281928 -0.012822203161488303 +32 -0.00832069750519279 -0.0022538429924858707 0.007762024411858031 +33 0.019920685674825727 0.00503177648484941 -0.021106672824976403 +34 0.014118463330250982 0.017455545466840316 -0.012482101375598437 +35 -0.006111650564043797 0.013353021777303568 -0.025492434283827668 +36 0.009100152156585965 0.00557377745052224 0.014573768978939985 +37 0.0016523593470528035 -0.022107518020000917 0.020311423445130115 +38 -0.01034627539347186 0.01605585658635179 0.005548912701926242 +39 -0.0032054811383248638 0.0016779208962376315 0.002939050953753566 +40 0.019649219364916443 0.004081577652322286 -0.009842244116604127 +41 0.0005696169758816036 0.0007136113223474148 0.004633576422025626 +42 0.0022221300208006252 0.0036217319632558197 -0.006329939850345515 +43 0.002571017273484117 0.008002917981448292 0.01999298692846819 +44 -0.006082758182267466 -0.011834273655641976 0.020526923045885208 Bonds -1 1 1 5 -2 1 1 4 -3 2 1 7 -4 2 1 8 -5 3 2 3 -6 5 2 11 -7 6 3 6 -8 4 7 2 -9 1 7 14 -10 1 7 15 -11 2 8 9 -12 1 8 16 -13 1 8 17 -14 4 9 10 -15 1 9 18 -16 1 9 19 -17 5 10 12 -18 3 10 13 -19 6 13 20 -20 7 21 22 -21 8 21 27 -22 8 21 28 -23 7 21 39 -24 9 22 23 -25 8 22 29 -26 8 22 30 -27 10 23 31 -28 10 23 32 -29 10 24 33 -30 10 24 34 -31 9 25 24 -32 7 25 26 -33 8 25 35 -34 8 25 36 -35 8 26 37 -36 8 26 38 -37 7 26 42 -38 8 39 40 -39 8 39 41 -40 7 39 42 -41 8 42 43 -42 8 42 44 +1 c2-hc 1 5 +2 c2-hc 1 4 +3 c2-c2 1 7 +4 c2-c2 1 8 +5 c_1-o 2 3 +6 c_1-o_1 2 11 +7 o-ho 3 6 +8 c2-c_1 7 2 +9 c2-hc 7 14 +10 c2-hc 7 15 +11 c2-c2 8 9 +12 c2-hc 8 16 +13 c2-hc 8 17 +14 c2-c_1 9 10 +15 c2-hc 9 18 +16 c2-hc 9 19 +17 c_1-o_1 10 12 +18 c_1-o 10 13 +19 o-ho 13 20 +20 c2-c2 21 22 +21 c2-hc 21 27 +22 c2-hc 21 28 +23 c2-c2 21 39 +24 na-c2 22 23 +25 c2-hc 22 29 +26 c2-hc 22 30 +27 na-hn 23 31 +28 na-hn 23 32 +29 na-hn 24 33 +30 na-hn 24 34 +31 na-c2 25 24 +32 c2-c2 25 26 +33 c2-hc 25 35 +34 c2-hc 25 36 +35 c2-hc 26 37 +36 c2-hc 26 38 +37 c2-c2 26 42 +38 c2-hc 39 40 +39 c2-hc 39 41 +40 c2-c2 39 42 +41 c2-hc 42 43 +42 c2-hc 42 44 Angles -1 1 5 1 4 -2 2 7 1 5 -3 2 8 1 5 -4 2 7 1 4 -5 2 8 1 4 -6 3 7 1 8 -7 4 7 2 3 -8 5 3 2 11 -9 6 7 2 11 -10 7 2 3 6 -11 8 1 7 2 -12 2 1 7 14 -13 2 1 7 15 -14 9 2 7 14 -15 9 2 7 15 -16 1 14 7 15 -17 3 1 8 9 -18 2 1 8 16 -19 2 1 8 17 -20 2 9 8 16 -21 2 9 8 17 -22 1 16 8 17 -23 8 8 9 10 -24 2 8 9 18 -25 2 8 9 19 -26 9 10 9 18 -27 9 10 9 19 -28 1 18 9 19 -29 6 9 10 12 -30 4 9 10 13 -31 5 13 10 12 -32 7 10 13 20 -33 10 22 21 27 -34 10 22 21 28 -35 11 22 21 39 -36 12 27 21 28 -37 10 39 21 27 -38 10 39 21 28 -39 13 21 22 23 -40 10 21 22 29 -41 10 21 22 30 -42 14 23 22 29 -43 14 23 22 30 -44 12 29 22 30 -45 15 22 23 31 -46 15 22 23 32 -47 16 31 23 32 -48 15 25 24 33 -49 15 25 24 34 -50 16 33 24 34 -51 13 26 25 24 -52 14 24 25 35 -53 14 24 25 36 -54 10 26 25 35 -55 10 26 25 36 -56 12 35 25 36 -57 10 25 26 37 -58 10 25 26 38 -59 11 25 26 42 -60 12 37 26 38 -61 10 42 26 37 -62 10 42 26 38 -63 10 21 39 40 -64 10 21 39 41 -65 11 21 39 42 -66 12 40 39 41 -67 10 42 39 40 -68 10 42 39 41 -69 11 26 42 39 -70 10 26 42 43 -71 10 26 42 44 -72 10 39 42 43 -73 10 39 42 44 -74 12 43 42 44 +1 hc-c2-hc 5 1 4 +2 c2-c2-hc 7 1 5 +3 c2-c2-hc 8 1 5 +4 c2-c2-hc 7 1 4 +5 c2-c2-hc 8 1 4 +6 c2-c2-c2 7 1 8 +7 c2-c_1-o_1 7 2 3 +8 o-c_1-o_1 3 2 11 +9 c2-c_1-o 7 2 11 +10 c_1-o-ho 2 3 6 +11 c2-c2-c_1 1 7 2 +12 c2-c2-hc 1 7 14 +13 c2-c2-hc 1 7 15 +14 c_1-c2-hc 2 7 14 +15 c_1-c2-hc 2 7 15 +16 hc-c2-hc 14 7 15 +17 c2-c2-c2 1 8 9 +18 c2-c2-hc 1 8 16 +19 c2-c2-hc 1 8 17 +20 c2-c2-hc 9 8 16 +21 c2-c2-hc 9 8 17 +22 hc-c2-hc 16 8 17 +23 c2-c2-c_1 8 9 10 +24 c2-c2-hc 8 9 18 +25 c2-c2-hc 8 9 19 +26 c_1-c2-hc 10 9 18 +27 c_1-c2-hc 10 9 19 +28 hc-c2-hc 18 9 19 +29 c2-c_1-o 9 10 12 +30 c2-c_1-o_1 9 10 13 +31 o-c_1-o_1 13 10 12 +32 c_1-o-ho 10 13 20 +33 c2-c2-hc 22 21 27 +34 c2-c2-hc 22 21 28 +35 c2-c2-c2 22 21 39 +36 hc-c2-hc 27 21 28 +37 c2-c2-hc 39 21 27 +38 c2-c2-hc 39 21 28 +39 c2-c2-na 21 22 23 +40 c2-c2-hc 21 22 29 +41 c2-c2-hc 21 22 30 +42 na-c2-hc 23 22 29 +43 na-c2-hc 23 22 30 +44 hc-c2-hc 29 22 30 +45 c2-na-hn 22 23 31 +46 c2-na-hn 22 23 32 +47 hn-na-hn 31 23 32 +48 c2-na-hn 25 24 33 +49 c2-na-hn 25 24 34 +50 hn-na-hn 33 24 34 +51 c2-c2-na 26 25 24 +52 na-c2-hc 24 25 35 +53 na-c2-hc 24 25 36 +54 c2-c2-hc 26 25 35 +55 c2-c2-hc 26 25 36 +56 hc-c2-hc 35 25 36 +57 c2-c2-hc 25 26 37 +58 c2-c2-hc 25 26 38 +59 c2-c2-c2 25 26 42 +60 hc-c2-hc 37 26 38 +61 c2-c2-hc 42 26 37 +62 c2-c2-hc 42 26 38 +63 c2-c2-hc 21 39 40 +64 c2-c2-hc 21 39 41 +65 c2-c2-c2 21 39 42 +66 hc-c2-hc 40 39 41 +67 c2-c2-hc 42 39 40 +68 c2-c2-hc 42 39 41 +69 c2-c2-c2 26 42 39 +70 c2-c2-hc 26 42 43 +71 c2-c2-hc 26 42 44 +72 c2-c2-hc 39 42 43 +73 c2-c2-hc 39 42 44 +74 hc-c2-hc 43 42 44 Dihedrals -1 2 5 1 7 14 -2 2 5 1 7 15 -3 2 4 1 7 14 -4 2 4 1 7 15 -5 3 8 1 7 2 -6 4 8 1 7 14 -7 4 8 1 7 15 -8 2 5 1 8 16 -9 2 5 1 8 17 -10 2 4 1 8 16 -11 2 4 1 8 17 -12 5 7 1 8 9 -13 4 7 1 8 16 -14 4 7 1 8 17 -15 6 7 2 3 6 -16 7 11 2 3 6 -17 1 2 7 1 5 -18 1 2 7 1 4 -19 8 1 7 2 3 -20 9 14 7 2 3 -21 9 15 7 2 3 -22 10 1 7 2 11 -23 11 14 7 2 11 -24 11 15 7 2 11 -25 4 9 8 1 5 -26 4 9 8 1 4 -27 3 1 8 9 10 -28 4 1 8 9 18 -29 4 1 8 9 19 -30 2 16 8 9 18 -31 2 16 8 9 19 -32 2 17 8 9 18 -33 2 17 8 9 19 -34 1 10 9 8 16 -35 1 10 9 8 17 -36 10 8 9 10 12 -37 8 8 9 10 13 -38 11 18 9 10 12 -39 9 18 9 10 13 -40 11 19 9 10 12 -41 9 19 9 10 13 -42 6 9 10 13 20 -43 7 12 10 13 20 -44 13 27 21 22 29 -45 13 27 21 22 30 -46 13 28 21 22 29 -47 13 28 21 22 30 -48 14 39 21 22 23 -49 15 39 21 22 29 -50 15 39 21 22 30 -51 15 22 21 39 40 -52 15 22 21 39 41 -53 16 22 21 39 42 -54 13 27 21 39 40 -55 13 27 21 39 41 -56 13 28 21 39 40 -57 13 28 21 39 41 -58 12 23 22 21 27 -59 12 23 22 21 28 -60 17 21 22 23 31 -61 17 21 22 23 32 -62 18 29 22 23 31 -63 18 29 22 23 32 -64 18 30 22 23 31 -65 18 30 22 23 32 -66 17 26 25 24 33 -67 18 35 25 24 33 -68 18 36 25 24 33 -69 17 26 25 24 34 -70 18 35 25 24 34 -71 18 36 25 24 34 -72 12 24 25 26 37 -73 12 24 25 26 38 -74 13 35 25 26 37 -75 13 35 25 26 38 -76 13 36 25 26 37 -77 13 36 25 26 38 -78 14 42 26 25 24 -79 15 42 26 25 35 -80 15 42 26 25 36 -81 16 25 26 42 39 -82 15 25 26 42 43 -83 15 25 26 42 44 -84 13 37 26 42 43 -85 13 37 26 42 44 -86 13 38 26 42 43 -87 13 38 26 42 44 -88 15 42 39 21 27 -89 15 42 39 21 28 -90 16 21 39 42 26 -91 15 21 39 42 43 -92 15 21 39 42 44 -93 13 40 39 42 43 -94 13 40 39 42 44 -95 13 41 39 42 43 -96 13 41 39 42 44 -97 15 39 42 26 37 -98 15 39 42 26 38 -99 15 26 42 39 40 -100 15 26 42 39 41 +1 hc-c2-c2-hc 5 1 7 14 +2 hc-c2-c2-hc 5 1 7 15 +3 hc-c2-c2-hc 4 1 7 14 +4 hc-c2-c2-hc 4 1 7 15 +5 c2-c2-c2-c_1 8 1 7 2 +6 c2-c2-c2-hc 8 1 7 14 +7 c2-c2-c2-hc 8 1 7 15 +8 hc-c2-c2-hc 5 1 8 16 +9 hc-c2-c2-hc 5 1 8 17 +10 hc-c2-c2-hc 4 1 8 16 +11 hc-c2-c2-hc 4 1 8 17 +12 c2-c2-c2-c2 7 1 8 9 +13 c2-c2-c2-hc 7 1 8 16 +14 c2-c2-c2-hc 7 1 8 17 +15 c2-c_1-o-ho 7 2 3 6 +16 o_1-c_1-o-ho 11 2 3 6 +17 c_1-c2-c2-hc 2 7 1 5 +18 c_1-c2-c2-hc 2 7 1 4 +19 c2-c2-c_1-o 1 7 2 3 +20 hc-c2-c_1-o 14 7 2 3 +21 hc-c2-c_1-o 15 7 2 3 +22 c2-c2-c_1-o_1 1 7 2 11 +23 hc-c2-c_1-o_1 14 7 2 11 +24 hc-c2-c_1-o_1 15 7 2 11 +25 c2-c2-c2-hc 9 8 1 5 +26 c2-c2-c2-hc 9 8 1 4 +27 c2-c2-c2-c_1 1 8 9 10 +28 c2-c2-c2-hc 1 8 9 18 +29 c2-c2-c2-hc 1 8 9 19 +30 hc-c2-c2-hc 16 8 9 18 +31 hc-c2-c2-hc 16 8 9 19 +32 hc-c2-c2-hc 17 8 9 18 +33 hc-c2-c2-hc 17 8 9 19 +34 c_1-c2-c2-hc 10 9 8 16 +35 c_1-c2-c2-hc 10 9 8 17 +36 c2-c2-c_1-o_1 8 9 10 12 +37 c2-c2-c_1-o 8 9 10 13 +38 hc-c2-c_1-o_1 18 9 10 12 +39 hc-c2-c_1-o 18 9 10 13 +40 hc-c2-c_1-o_1 19 9 10 12 +41 hc-c2-c_1-o 19 9 10 13 +42 c2-c_1-o-ho 9 10 13 20 +43 o_1-c_1-o-ho 12 10 13 20 +44 hc-c2-c2-hc 27 21 22 29 +45 hc-c2-c2-hc 27 21 22 30 +46 hc-c2-c2-hc 28 21 22 29 +47 hc-c2-c2-hc 28 21 22 30 +48 c2-c2-c2-na 39 21 22 23 +49 c2-c2-c2-hc 39 21 22 29 +50 c2-c2-c2-hc 39 21 22 30 +51 c2-c2-c2-hc 22 21 39 40 +52 c2-c2-c2-hc 22 21 39 41 +53 c2-c2-c2-c2 22 21 39 42 +54 hc-c2-c2-hc 27 21 39 40 +55 hc-c2-c2-hc 27 21 39 41 +56 hc-c2-c2-hc 28 21 39 40 +57 hc-c2-c2-hc 28 21 39 41 +58 na-c2-c2-hc 23 22 21 27 +59 na-c2-c2-hc 23 22 21 28 +60 c2-c2-na-hn 21 22 23 31 +61 c2-c2-na-hn 21 22 23 32 +62 hn-na-c2-hc 29 22 23 31 +63 hn-na-c2-hc 29 22 23 32 +64 hn-na-c2-hc 30 22 23 31 +65 hn-na-c2-hc 30 22 23 32 +66 c2-c2-na-hn 26 25 24 33 +67 hn-na-c2-hc 35 25 24 33 +68 hn-na-c2-hc 36 25 24 33 +69 c2-c2-na-hn 26 25 24 34 +70 hn-na-c2-hc 35 25 24 34 +71 hn-na-c2-hc 36 25 24 34 +72 na-c2-c2-hc 24 25 26 37 +73 na-c2-c2-hc 24 25 26 38 +74 hc-c2-c2-hc 35 25 26 37 +75 hc-c2-c2-hc 35 25 26 38 +76 hc-c2-c2-hc 36 25 26 37 +77 hc-c2-c2-hc 36 25 26 38 +78 c2-c2-c2-na 42 26 25 24 +79 c2-c2-c2-hc 42 26 25 35 +80 c2-c2-c2-hc 42 26 25 36 +81 c2-c2-c2-c2 25 26 42 39 +82 c2-c2-c2-hc 25 26 42 43 +83 c2-c2-c2-hc 25 26 42 44 +84 hc-c2-c2-hc 37 26 42 43 +85 hc-c2-c2-hc 37 26 42 44 +86 hc-c2-c2-hc 38 26 42 43 +87 hc-c2-c2-hc 38 26 42 44 +88 c2-c2-c2-hc 42 39 21 27 +89 c2-c2-c2-hc 42 39 21 28 +90 c2-c2-c2-c2 21 39 42 26 +91 c2-c2-c2-hc 21 39 42 43 +92 c2-c2-c2-hc 21 39 42 44 +93 hc-c2-c2-hc 40 39 42 43 +94 hc-c2-c2-hc 40 39 42 44 +95 hc-c2-c2-hc 41 39 42 43 +96 hc-c2-c2-hc 41 39 42 44 +97 c2-c2-c2-hc 39 42 26 37 +98 c2-c2-c2-hc 39 42 26 38 +99 c2-c2-c2-hc 26 42 39 40 +100 c2-c2-c2-hc 26 42 39 41 Impropers -1 2 7 1 4 5 -2 2 8 1 4 5 -3 3 7 1 8 5 -4 3 7 1 8 4 -5 1 7 2 3 11 -6 4 1 7 2 14 -7 4 1 7 2 15 -8 2 1 7 14 15 -9 5 2 7 14 15 -10 3 1 8 9 16 -11 3 1 8 9 17 -12 2 1 8 16 17 -13 2 9 8 16 17 -14 4 8 9 10 18 -15 4 8 9 10 19 -16 2 8 9 18 19 -17 5 10 9 18 19 -18 1 9 10 13 12 -19 7 22 21 27 28 -20 8 22 21 39 27 -21 8 22 21 39 28 -22 7 39 21 28 27 -23 9 21 22 23 29 -24 9 21 22 23 30 -25 7 21 22 29 30 -26 10 23 22 29 30 -27 6 22 23 31 32 -28 6 25 24 33 34 -29 9 26 25 24 35 -30 9 26 25 24 36 -31 10 24 25 35 36 -32 7 26 25 35 36 -33 7 25 26 37 38 -34 8 25 26 42 37 -35 8 25 26 42 38 -36 7 42 26 38 37 -37 7 21 39 40 41 -38 8 21 39 42 40 -39 8 21 39 42 41 -40 7 42 39 41 40 -41 8 26 42 39 43 -42 8 26 42 39 44 -43 7 26 42 43 44 -44 7 39 42 43 44 +1 c2-na-hn-hn 7 1 4 5 +2 c2-na-hn-hn 8 1 4 5 +3 c2-c_1-o_1-o 7 1 8 5 +4 c2-c_1-o_1-o 7 1 8 4 +5 c2-c_1-o-o_1 7 2 3 11 +6 c2-n-hn-c_1 1 7 2 14 +7 c2-n-hn-c_1 1 7 2 15 +8 c2-na-hn-hn 1 7 14 15 +9 c2-c_1-o_1-o 1 8 9 16 +10 c2-c_1-o_1-o 1 8 9 17 +11 c2-na-hn-hn 1 8 16 17 +12 c2-na-hn-hn 9 8 16 17 +13 c2-n-hn-c_1 8 9 10 18 +14 c2-n-hn-c_1 8 9 10 19 +15 c2-na-hn-hn 8 9 18 19 +16 c2-c_1-o-o_1 9 10 13 12 From a1a72f741a0436cd7b45a7645faa3dc5318825e4 Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Sun, 25 Aug 2024 14:54:51 -0400 Subject: [PATCH 117/326] update docs with recent paper --- doc/src/fix_bond_react.rst | 4 ++++ src/REACTION/fix_bond_react.cpp | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index af3ee0fd48..08c2f5fb9d 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -785,3 +785,7 @@ reset_mol_ids = yes, custom_charges = no, molecule = off, modify_create = *fit a .. _Gissinger2020: **(Gissinger2020)** Gissinger, Jensen and Wise, Macromolecules, 53, 22, 9953-9961 (2020). + +.. _Gissinger2024: + +**(Gissinger2024)** Gissinger, Jensen and Wise, Computer Physics Communications, 304, 109287 (2024). diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index 63781bfcdd..5a4f6bea7d 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -58,7 +58,7 @@ using namespace MathConst; static const char cite_fix_bond_react[] = "fix bond/react: reacter.org doi:10.1016/j.polymer.2017.09.038, " - "doi:10.1021/acs.macromol.0c02012\n\n" + "doi:10.1021/acs.macromol.0c02012, doi:10.1016/j.cpc.2024.109287\n\n" "@Article{Gissinger17,\n" " author = {J. R. Gissinger and B. D. Jensen and K. E. Wise},\n" " title = {Modeling Chemical Reactions in Classical Molecular Dynamics Simulations},\n" @@ -75,6 +75,14 @@ static const char cite_fix_bond_react[] = " volume = 53,\n" " number = 22,\n" " pages = {9953--9961}\n" + "}\n\n" + "@Article{Gissinger24,\n" + " author = {J. R. Gissinger, B. D. Jensen, K. E. Wise},\n" + " title = {Molecular Modeling of Reactive Systems with REACTER},\n" + " journal = {Computer Physics Communications},\n" + " year = 2024,\n" + " volume = 304,\n" + " number = 109287\n" "}\n\n"; static constexpr double BIG = 1.0e20; From 586e5db7578a52151d7705593e954a020a05b94f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 15:49:42 -0400 Subject: [PATCH 118/326] completely hide inactive atom size field instead of only disabling them --- tools/lammps-gui/imageviewer.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index b1c4207962..0b3c58abd3 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -170,7 +170,9 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge auto *valid = new QDoubleValidator(1.0e-10, 1.0e10, 10, asize); asize->setValidator(valid); asize->setObjectName("atomSize"); + asize->setToolTip("Set Atom size"); asize->setEnabled(false); + asize->hide(); settings.beginGroup("snapshot"); auto *xval = new QSpinBox; xval->setRange(100, 10000); @@ -260,6 +262,9 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(renderstatus); menuLayout->addWidget(new QLabel(" Atom Size: ")); menuLayout->addWidget(asize); + // hide item initially + menuLayout->itemAt(2)->widget()->setObjectName("AtomLabel"); + menuLayout->itemAt(2)->widget()->hide(); menuLayout->addWidget(new QLabel(" Width: ")); menuLayout->addWidget(xval); menuLayout->addWidget(new QLabel(" Height: ")); @@ -579,15 +584,31 @@ void ImageViewer::createImage() auto *button = findChild("vdw"); if (button) button->setEnabled(true); auto *edit = findChild("atomSize"); - if (edit) edit->setEnabled(false); + if (edit) { + edit->setEnabled(false); + edit->hide(); + } + auto *label = findChild("AtomLabel"); + if (label) { + label->setEnabled(false); + label->hide(); + } + } else { adiams.clear(); auto *button = findChild("vdw"); if (button) button->setEnabled(false); + + auto *label = findChild("AtomLabel"); + if (label) { + label->setEnabled(true); + label->show(); + } auto *edit = findChild("atomSize"); if (edit) { if (!edit->isEnabled()) { edit->setEnabled(true); + edit->show(); // initialize with lattice spacing auto *xlattice = (const double *)lammps->extract_global("xlattice"); if (xlattice) atomSize = *xlattice; From cfcbad9e388068d6935846d40fa2bd3add0b49ae Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 16:07:22 -0400 Subject: [PATCH 119/326] back to 5 sigma --- tools/lammps-gui/chartviewer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 4ea5449f3f..eb5444de8e 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -442,7 +442,7 @@ void ChartViewer::add_data(int step, double data) const double num = count - first; const double avg = ysum / num; const double avgsq = ysumsq / num; - if (fabs(data - avg) > (4.0 * sqrt(avgsq - (avg * avg)))) return; + if (fabs(data - avg) > (5.0 * sqrt(avgsq - (avg * avg)))) return; } series->append(step, data); From d59d31b44508938963a58f9c78f319df95e990a2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 16:14:36 -0400 Subject: [PATCH 120/326] remove accidental commit --- check-downloads.py | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100755 check-downloads.py diff --git a/check-downloads.py b/check-downloads.py deleted file mode 100755 index 57b4af6a19..0000000000 --- a/check-downloads.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import json - -try: - output = subprocess.run('gh api https://api.github.com/repos/lammps/lammps/releases', - shell=True, capture_output=True) -except subprocess.CalledProcessError as e: - print("API call failed with:", e.output) - -releases = json.loads(output.stdout) -print("Recent releases: ", len(releases)) -for rel in releases: - if len(rel['assets']) > 0: - print("Release: ", rel['name']) - for asset in rel['assets']: - print("Asset: %s Downloads: %d" % (asset['name'], asset['download_count'])) From 9e5e1af125728bf761a64f11d788a2c10fcb0552 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 16:25:42 -0400 Subject: [PATCH 121/326] update TODO list for LAMMPS-GUI --- tools/lammps-gui/TODO.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index 2c190dc907..b36f0a4ce8 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,13 +2,21 @@ LAMMPS-GUI TODO list: # Short term goals (v1.x) -- figure out how widgets can be resized to fraction of available screen size. -- figure out stacking order of frames and whether it can be more flexible - implement a timed "Auto-Save" feature that saves after some idle time. set timeout in Editor preferences. +- add a "Filter data" checkbox to the "Charts" window to select whether data should be dropped. +- add a "Charts tab" to the preferences with the following (default) settings: + - default filter data yes/no + - default smooth parameters + - default plot colors + - enable "raw" or "smooth" or "both" +- add QLineEdit field to enter plot title - add a "Colors" menu to the image viewer to adjust color settings for the current image (unlike the defaults in the perferences) including assigning colors to individual atom types. - Support color by property (e.g. scan computes or fixes with per-atom data), define colormaps etc. +- Add a "Diameters" dialog where diamaters can by specified by atom type +- figure out how widgets can be resized to fraction of available screen size. +- figure out stacking order of frames and whether it can be more flexible - implement indenting regions for (nested) loops? - implement data file manager GUI with the following features: From b8b103df283c5cfa9a240e3ca0dd3a6ad828f1e4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 16:37:25 -0400 Subject: [PATCH 122/326] update version strings --- doc/lammps.1 | 4 ++-- src/version.h | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/lammps.1 b/doc/lammps.1 index 00d8a4f61f..75581bd008 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,7 +1,7 @@ -.TH LAMMPS "1" "27 June 2024" "2024-06-27" +.TH LAMMPS "1" "29 August 2024" "2024-08-29" .SH NAME .B LAMMPS -\- Molecular Dynamics Simulator. Version 27 June 2024 +\- Molecular Dynamics Simulator. Version 29 August 2024 .SH SYNOPSIS .B lmp diff --git a/src/version.h b/src/version.h index af7e87b61f..7ef4ade45e 100644 --- a/src/version.h +++ b/src/version.h @@ -1,2 +1 @@ -#define LAMMPS_VERSION "27 Jun 2024" -#define LAMMPS_UPDATE "Development" +#define LAMMPS_VERSION "29 Aug 2024" From c68981c7fc141164f180da6335dc5c2eca93ff27 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 16:37:49 -0400 Subject: [PATCH 123/326] build LAMMPS-GUI flatpack from release branch of the official repo --- tools/lammps-gui/org.lammps.lammps-gui.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/lammps-gui/org.lammps.lammps-gui.yml b/tools/lammps-gui/org.lammps.lammps-gui.yml index 26f35531ce..548c4ce93e 100644 --- a/tools/lammps-gui/org.lammps.lammps-gui.yml +++ b/tools/lammps-gui/org.lammps.lammps-gui.yml @@ -108,5 +108,5 @@ modules: - -D BUILD_TOOLS=yes sources: - type: git - url: https://github.com/akohlmey/lammps.git - branch: collected-small-fixes + url: https://github.com/lammps/lammps.git + branch: release From fa373eb6852f96366de109bac7679d7fe9cea547 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 25 Aug 2024 16:39:13 -0400 Subject: [PATCH 124/326] update pending version tags with planned release date --- doc/src/Build_settings.rst | 2 +- doc/src/Commands_removed.rst | 2 +- doc/src/Packages_details.rst | 2 +- doc/src/Run_options.rst | 2 +- doc/src/bond_rheo_shell.rst | 2 +- doc/src/compute_rheo_property_atom.rst | 2 +- doc/src/fix_meso_move.rst | 2 +- doc/src/fix_mvv_dpd.rst | 2 +- doc/src/fix_rheo.rst | 2 +- doc/src/fix_rheo_oxidation.rst | 2 +- doc/src/fix_rheo_pressure.rst | 2 +- doc/src/fix_rheo_thermal.rst | 2 +- doc/src/fix_rheo_viscosity.rst | 2 +- doc/src/fix_rigid_meso.rst | 2 +- doc/src/fix_shake.rst | 2 +- doc/src/fix_smd_integrate_tlsph.rst | 2 +- doc/src/fix_smd_integrate_ulsph.rst | 2 +- doc/src/geturl.rst | 2 +- doc/src/neigh_modify.rst | 2 +- doc/src/pair_rheo.rst | 2 +- doc/src/pair_rheo_solid.rst | 2 +- doc/src/variable.rst | 2 +- python/lammps/core.py | 4 ++-- src/library.cpp | 6 +++--- 24 files changed, 27 insertions(+), 27 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index dc79cc3ed9..9d31f6b431 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -492,7 +492,7 @@ during a run. Support for downloading files ----------------------------- -.. versionadded:: TBD +.. versionadded:: 29Aug2024 The :doc:`geturl command ` command uses the `the libcurl library `_ to download files. This requires that diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index f902a61515..ea8b3d4b03 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -171,7 +171,7 @@ instructions to install i-PI from PyPI via pip are provided. LAMMPS shell ------------ -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 The LAMMPS shell has been removed from the LAMMPS distribution. Users are encouraged to use the :ref:`LAMMPS-GUI ` tool instead. diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 4483601a88..e87610fb31 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -2642,7 +2642,7 @@ This package has :ref:`specific installation instructions ` on the :doc:`B **Authors:** Joel T. Clemmer (Sandia National Labs), Thomas C. O'Connor (Carnegie Mellon University) -.. versionadded:: TBD +.. versionadded:: 29Aug2024 **Supporting info:** diff --git a/doc/src/Run_options.rst b/doc/src/Run_options.rst index 86e8e47626..4f7021cd53 100644 --- a/doc/src/Run_options.rst +++ b/doc/src/Run_options.rst @@ -508,7 +508,7 @@ e.g. the *nfile* and *fileper* keywords. See the **-restart2info restartfile keyword ...** -.. versionadded:: TBD +.. versionadded:: 29Aug2024 Write out some info about the restart file and and immediately exit. This is the same operation as if the following 2-line input script were diff --git a/doc/src/bond_rheo_shell.rst b/doc/src/bond_rheo_shell.rst index 992917c104..090f5ab7aa 100644 --- a/doc/src/bond_rheo_shell.rst +++ b/doc/src/bond_rheo_shell.rst @@ -38,7 +38,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 The *rheo/shell* bond style is designed to work with :doc:`fix rheo/oxidation ` which creates candidate diff --git a/doc/src/compute_rheo_property_atom.rst b/doc/src/compute_rheo_property_atom.rst index f34b2225f5..2e905b97be 100644 --- a/doc/src/compute_rheo_property_atom.rst +++ b/doc/src/compute_rheo_property_atom.rst @@ -55,7 +55,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 Define a computation that stores atom attributes specific to the RHEO package for each atom in the group. This is useful so that the values diff --git a/doc/src/fix_meso_move.rst b/doc/src/fix_meso_move.rst index 64b451b7f1..d5e1bba446 100644 --- a/doc/src/fix_meso_move.rst +++ b/doc/src/fix_meso_move.rst @@ -247,7 +247,7 @@ defined by the :doc:`atom_style sph ` command. All particles in the group must be mesoscopic SPH/SDPD particles. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 This fix is incompatible with deformation controls that remap velocity, for instance the *remap v* option of :doc:`fix deform `. diff --git a/doc/src/fix_mvv_dpd.rst b/doc/src/fix_mvv_dpd.rst index e64a162bf4..44883e92ad 100644 --- a/doc/src/fix_mvv_dpd.rst +++ b/doc/src/fix_mvv_dpd.rst @@ -97,7 +97,7 @@ These fixes are part of the DPD-MESO package. They are only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 This fix is incompatible with deformation controls that remap velocity, for instance the *remap v* option of :doc:`fix deform `. diff --git a/doc/src/fix_rheo.rst b/doc/src/fix_rheo.rst index 3c7f8449c7..2977662238 100644 --- a/doc/src/fix_rheo.rst +++ b/doc/src/fix_rheo.rst @@ -44,7 +44,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 Perform time integration for RHEO particles, updating positions, velocities, and densities. For an overview of other features available in the RHEO package, diff --git a/doc/src/fix_rheo_oxidation.rst b/doc/src/fix_rheo_oxidation.rst index ba3ead3f1f..dc22ed304a 100644 --- a/doc/src/fix_rheo_oxidation.rst +++ b/doc/src/fix_rheo_oxidation.rst @@ -27,7 +27,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 This fix dynamically creates bonds on the surface of fluids to represent physical processes such as oxidation. It is intended diff --git a/doc/src/fix_rheo_pressure.rst b/doc/src/fix_rheo_pressure.rst index 40d623ae07..2a714b298b 100644 --- a/doc/src/fix_rheo_pressure.rst +++ b/doc/src/fix_rheo_pressure.rst @@ -33,7 +33,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 This fix defines a pressure equation of state for RHEO particles. One can define different equations of state for different atom types. An equation diff --git a/doc/src/fix_rheo_thermal.rst b/doc/src/fix_rheo_thermal.rst index cf245cbdca..214bc1db86 100644 --- a/doc/src/fix_rheo_thermal.rst +++ b/doc/src/fix_rheo_thermal.rst @@ -48,7 +48,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 This fix performs time integration of temperature for atom style rheo/thermal. In addition, it defines multiple thermal properties of particles and handles diff --git a/doc/src/fix_rheo_viscosity.rst b/doc/src/fix_rheo_viscosity.rst index 5bc1b2a210..804059e6f8 100644 --- a/doc/src/fix_rheo_viscosity.rst +++ b/doc/src/fix_rheo_viscosity.rst @@ -38,7 +38,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 This fix defines a viscosity for RHEO particles. One can define different viscosities for different atom types, but a viscosity must be specified for diff --git a/doc/src/fix_rigid_meso.rst b/doc/src/fix_rigid_meso.rst index 3f734e3fef..6a9a85a865 100644 --- a/doc/src/fix_rigid_meso.rst +++ b/doc/src/fix_rigid_meso.rst @@ -353,7 +353,7 @@ defined by the :doc:`atom_style sph ` command. All particles in the group must be mesoscopic SPH/SDPD particles. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 This fix is incompatible with deformation controls that remap velocity, for instance the *remap v* option of :doc:`fix deform `. diff --git a/doc/src/fix_shake.rst b/doc/src/fix_shake.rst index 339d0fd68c..434415eecf 100644 --- a/doc/src/fix_shake.rst +++ b/doc/src/fix_shake.rst @@ -137,7 +137,7 @@ constrained (within a fudge factor of MASSDELTA specified in both bonds in the angle are constrained then the angle will also be constrained if its type is in the list. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 The types may be given as type labels *only* if there is no atom, bond, or angle type label named *b*, *a*, *t*, or *m* defined in the diff --git a/doc/src/fix_smd_integrate_tlsph.rst b/doc/src/fix_smd_integrate_tlsph.rst index 44d4bab3a5..fce4c057c3 100644 --- a/doc/src/fix_smd_integrate_tlsph.rst +++ b/doc/src/fix_smd_integrate_tlsph.rst @@ -53,7 +53,7 @@ Restrictions This fix is part of the MACHDYN package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 This fix is incompatible with deformation controls that remap velocity, for instance the *remap v* option of :doc:`fix deform `. diff --git a/doc/src/fix_smd_integrate_ulsph.rst b/doc/src/fix_smd_integrate_ulsph.rst index 6b1e070763..60dfb06a0e 100644 --- a/doc/src/fix_smd_integrate_ulsph.rst +++ b/doc/src/fix_smd_integrate_ulsph.rst @@ -61,7 +61,7 @@ Restrictions This fix is part of the MACHDYN package. It is only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 This fix is incompatible with deformation controls that remap velocity, for instance the *remap v* option of :doc:`fix deform `. diff --git a/doc/src/geturl.rst b/doc/src/geturl.rst index 0ca0ce0cd3..acf1e21a3e 100644 --- a/doc/src/geturl.rst +++ b/doc/src/geturl.rst @@ -32,7 +32,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 Download a file from an URL to the local disk. This is implemented with the `libcurl library `_ which supports a diff --git a/doc/src/neigh_modify.rst b/doc/src/neigh_modify.rst index 753990c93f..bf87c8452c 100644 --- a/doc/src/neigh_modify.rst +++ b/doc/src/neigh_modify.rst @@ -159,7 +159,7 @@ sample scenarios where this is useful: * When one or more rigid bodies are specified, interactions within each body can be turned off to save needless computation. See the :doc:`fix rigid ` command for more details. -.. versionchanged:: TBD +.. versionchanged:: 29Aug2024 Support for type labels was added. diff --git a/doc/src/pair_rheo.rst b/doc/src/pair_rheo.rst index 993ec3cee3..927d2f0266 100644 --- a/doc/src/pair_rheo.rst +++ b/doc/src/pair_rheo.rst @@ -31,7 +31,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 Pair style *rheo* computes pressure and viscous forces between particles in the :doc:`rheo package `. If thermal evolution is turned diff --git a/doc/src/pair_rheo_solid.rst b/doc/src/pair_rheo_solid.rst index 0b1ed47fb8..f71cba7bdb 100644 --- a/doc/src/pair_rheo_solid.rst +++ b/doc/src/pair_rheo_solid.rst @@ -21,7 +21,7 @@ Examples Description """"""""""" -.. versionadded:: TBD +.. versionadded:: 29Aug2024 Style *rheo/solid* is effectively a copy of pair style :doc:`bpm/spring ` except it only applies forces diff --git a/doc/src/variable.rst b/doc/src/variable.rst index 330e44139e..1867532efa 100644 --- a/doc/src/variable.rst +++ b/doc/src/variable.rst @@ -1042,7 +1042,7 @@ label2type(), but returns 1 if the type label has been assigned, otherwise it returns 0. This function can be used to check if a particular type label already exists in the simulation. -.. versionadded:: TBD +.. versionadded:: 29Aug2024 The is_timeout() function returns 1 when the :doc:`timer timeout ` has expired otherwise it returns 0. This function can be used diff --git a/python/lammps/core.py b/python/lammps/core.py index 4fcda37d5d..9e6329fe3c 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -941,7 +941,7 @@ class lammps(object): def extract_pair_dimension(self, name): """Retrieve pair style property dimensionality from LAMMPS - .. versionadded:: TBD + .. versionadded:: 29Aug2024 This is a wrapper around the :cpp:func:`lammps_extract_pair_dimension` function of the C-library interface. The list of supported keywords @@ -970,7 +970,7 @@ class lammps(object): def extract_pair(self, name): """Extract pair style data from LAMMPS. - .. versionadded:: TBD + .. versionadded:: 29Aug2024 This is a wrapper around the :cpp:func:`lammps_extract_pair` function of the C-library interface. Since there are no pointers in Python, this diff --git a/src/library.cpp b/src/library.cpp index 097cffd68a..324bfc5b9f 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -1972,7 +1972,7 @@ void *lammps_extract_global(void *handle, const char *name) * \verbatim embed:rst -.. versionadded:: TBD +.. versionadded:: 29Aug2024 This function returns an integer that specified the dimensionality of the data that can be extracted from the current pair style with ``Pair::extract()``. @@ -2005,7 +2005,7 @@ int lammps_extract_pair_dimension(void * handle, const char *name) * \verbatim embed:rst -.. versionadded:: TBD +.. versionadded:: 29Aug2024 This function returns a pointer to data available from the current pair style with ``Pair::extract()``. The dimensionality of the returned @@ -5859,7 +5859,7 @@ int lammps_config_has_ffmpeg_support() { \verbatim embed:rst -.. versionadded::TBD +.. versionadded::29Aug2024 The LAMMPS :doc:`geturl command ` supports downloading files through using `the libcurl library `_. From 04400e10a8f3c27a57089598806c8c356415d586 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 25 Aug 2024 16:02:16 -0500 Subject: [PATCH 125/326] 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 126/326] 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 127/326] 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 99153f20becaa00df9b9cf6e21c53e6761e64a4d Mon Sep 17 00:00:00 2001 From: Jacob Gissinger Date: Sun, 25 Aug 2024 21:55:19 -0400 Subject: [PATCH 128/326] refactor how reactions are skipped better treatment of allowing all possible reactions when using 'overlap' keyword of 'create_atoms' feature --- src/REACTION/fix_bond_react.cpp | 85 +++++++++++++++++++++------------ src/REACTION/fix_bond_react.h | 2 +- 2 files changed, 56 insertions(+), 31 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index 5a4f6bea7d..b80231cf44 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -233,8 +233,8 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(reacted_mol,nreacts,"bond/react:reacted_mol"); memory->create(fraction,nreacts,"bond/react:fraction"); memory->create(max_rxn,nreacts,"bond/react:max_rxn"); - memory->create(nlocalskips,nreacts,"bond/react:nlocalskips"); - memory->create(nghostlyskips,nreacts,"bond/react:nghostlyskips"); + memory->create(nlocalkeep,nreacts,"bond/react:nlocalkeep"); + memory->create(nghostlykeep,nreacts,"bond/react:nghostlykeep"); memory->create(seed,nreacts,"bond/react:seed"); memory->create(limit_duration,nreacts,"bond/react:limit_duration"); memory->create(rate_limit,3,nreacts,"bond/react:rate_limit"); @@ -648,8 +648,8 @@ FixBondReact::~FixBondReact() memory->destroy(fraction); memory->destroy(seed); memory->destroy(max_rxn); - memory->destroy(nlocalskips); - memory->destroy(nghostlyskips); + memory->destroy(nlocalkeep); + memory->destroy(nghostlykeep); memory->destroy(limit_duration); memory->destroy(var_flag); memory->destroy(var_id); @@ -877,8 +877,8 @@ void FixBondReact::post_integrate() reaction_count[i] = 0; local_rxn_count[i] = 0; ghostly_rxn_count[i] = 0; - nlocalskips[i] = 0; - nghostlyskips[i] = 0; + nlocalkeep[i] = INT_MAX; + nghostlykeep[i] = INT_MAX; // update reaction probability if (var_flag[PROB][i]) fraction[i] = input->variable->compute_equal(var_id[PROB][i]); @@ -1429,10 +1429,13 @@ void FixBondReact::superimpose_algorithm() MPI_Allreduce(&local_rxn_count[0],&reaction_count[0],nreacts,MPI_INT,MPI_SUM,world); int rxnflag = 0; + int *delta_rxn; + memory->create(delta_rxn,nreacts,"bond/react:delta_rxn"); if (comm->me == 0) for (int i = 0; i < nreacts; i++) { - reaction_count_total[i] += reaction_count[i] + ghostly_rxn_count[i]; - rxnflag += reaction_count[i] + ghostly_rxn_count[i]; + delta_rxn[i] = reaction_count[i] + ghostly_rxn_count[i]; + reaction_count_total[i] += delta_rxn[i]; + rxnflag += delta_rxn[i]; } MPI_Bcast(&reaction_count_total[0], nreacts, MPI_INT, 0, world); @@ -1465,42 +1468,43 @@ void FixBondReact::superimpose_algorithm() if (overstep > 0) { // let's randomly choose rxns to skip, unbiasedly from local and ghostly int *local_rxncounts; - int *all_localskips; + int *all_localkeep; memory->create(local_rxncounts,nprocs,"bond/react:local_rxncounts"); - memory->create(all_localskips,nprocs,"bond/react:all_localskips"); + memory->create(all_localkeep,nprocs,"bond/react:all_localkeep"); MPI_Gather(&local_rxn_count[i],1,MPI_INT,local_rxncounts,1,MPI_INT,0,world); if (comm->me == 0) { - int delta_rxn = reaction_count[i] + ghostly_rxn_count[i]; // when using variable input for rate_limit, rate_limit_overstep could be > delta_rxn (below) // we need to limit overstep to the number of reactions on this timestep // essentially skipping all reactions, would be more efficient to use a skip_all flag - if (overstep > delta_rxn) overstep = delta_rxn; + if (overstep > delta_rxn[i]) overstep = delta_rxn[i]; + int nkeep = delta_rxn[i] - overstep; int *rxn_by_proc; - memory->create(rxn_by_proc,delta_rxn,"bond/react:rxn_by_proc"); - for (int j = 0; j < delta_rxn; j++) + memory->create(rxn_by_proc,delta_rxn[i],"bond/react:rxn_by_proc"); + for (int j = 0; j < delta_rxn[i]; j++) rxn_by_proc[j] = -1; // corresponds to ghostly int itemp = 0; for (int j = 0; j < nprocs; j++) for (int k = 0; k < local_rxncounts[j]; k++) rxn_by_proc[itemp++] = j; - std::shuffle(&rxn_by_proc[0],&rxn_by_proc[delta_rxn], park_rng); + std::shuffle(&rxn_by_proc[0],&rxn_by_proc[delta_rxn[i]], park_rng); for (int j = 0; j < nprocs; j++) - all_localskips[j] = 0; - nghostlyskips[i] = 0; - for (int j = 0; j < overstep; j++) { - if (rxn_by_proc[j] == -1) nghostlyskips[i]++; - else all_localskips[rxn_by_proc[j]]++; + all_localkeep[j] = 0; + nghostlykeep[i] = 0; + for (int j = 0; j < nkeep; j++) { + if (rxn_by_proc[j] == -1) nghostlykeep[i]++; + else all_localkeep[rxn_by_proc[j]]++; } memory->destroy(rxn_by_proc); reaction_count_total[i] -= overstep; } - MPI_Scatter(&all_localskips[0],1,MPI_INT,&nlocalskips[i],1,MPI_INT,0,world); - MPI_Bcast(&nghostlyskips[i],1,MPI_INT,0,world); + MPI_Scatter(&all_localkeep[0],1,MPI_INT,&nlocalkeep[i],1,MPI_INT,0,world); + MPI_Bcast(&nghostlykeep[i],1,MPI_INT,0,world); memory->destroy(local_rxncounts); - memory->destroy(all_localskips); + memory->destroy(all_localkeep); } } MPI_Bcast(&reaction_count_total[0], nreacts, MPI_INT, 0, world); + memory->destroy(delta_rxn); // this updates topology next step next_reneighbor = update->ntimestep; @@ -3036,14 +3040,14 @@ void FixBondReact::update_everything() for (int pass = 0; pass < 2; pass++) { update_num_mega = 0; - int *iskip = new int[nreacts]; - for (int i = 0; i < nreacts; i++) iskip[i] = 0; + int *noccur = new int[nreacts]; + for (int i = 0; i < nreacts; i++) noccur[i] = 0; if (pass == 0) { for (int i = 0; i < local_num_mega; i++) { rxnID = (int) local_mega_glove[0][i]; // reactions already shuffled from dedup procedure, so can skip first N // wait, this check needs to be after add atoms, because they can also be 'skipped' due to overlap - if (iskip[rxnID]++ < nlocalskips[rxnID]) continue; + if (noccur[rxnID] >= nlocalkeep[rxnID]) continue; // this will be overwritten if reaction skipped by create_atoms below update_mega_glove[0][update_num_mega] = (tagint) local_mega_glove[0][i]; @@ -3061,6 +3065,7 @@ void FixBondReact::update_everything() continue; } } + noccur[rxnID]++; if (rescale_charges_flag[rxnID]) sim_total_charges[update_num_mega] = local_mega_glove[1][i]; update_num_mega++; @@ -3069,7 +3074,7 @@ void FixBondReact::update_everything() for (int i = 0; i < global_megasize; i++) { rxnID = (int) global_mega_glove[0][i]; // reactions already shuffled from dedup procedure, so can skip first N - if (iskip[rxnID]++ < nghostlyskips[rxnID]) continue; + if (noccur[rxnID] >= nghostlykeep[rxnID]) continue; // this will be overwritten if reaction skipped by create_atoms below update_mega_glove[0][update_num_mega] = (tagint) global_mega_glove[0][i]; @@ -3089,12 +3094,13 @@ void FixBondReact::update_everything() continue; } } + noccur[rxnID]++; if (rescale_charges_flag[rxnID]) sim_total_charges[update_num_mega] = global_mega_glove[1][i]; update_num_mega++; } } - delete [] iskip; + delete [] noccur; if (update_num_mega == 0) continue; @@ -3804,10 +3810,29 @@ int FixBondReact::insert_atoms_setup(tagint **my_update_mega_glove, int iupdate) break; } } - // !! need to add check against soon-to-added atoms if (abortflag) break; } } + // also check against previous to-be-added atoms + if (!abortflag) { + for (auto & myaddatom : addatoms) { + for (int m = 0; m < twomol->natoms; m++) { + if (create_atoms[m][rxnID] == 1) { + delx = coords[m][0] - myaddatom.x[0]; + dely = coords[m][1] - myaddatom.x[1]; + delz = coords[m][2] - myaddatom.x[2]; + domain->minimum_image(delx,dely,delz); + rsq = delx*delx + dely*dely + delz*delz; + if (rsq < overlapsq[rxnID]) { + abortflag = 1; + break; + } + } + } + if (abortflag) break; + } + } + MPI_Allreduce(MPI_IN_PLACE,&abortflag,1,MPI_INT,MPI_MAX,world); if (abortflag) { memory->destroy(coords); @@ -3872,7 +3897,7 @@ int FixBondReact::insert_atoms_setup(tagint **my_update_mega_glove, int iupdate) // locally update mega_glove my_update_mega_glove[preID][iupdate] = myaddatom.tag; - // could do better job choosing mol ID for added atoms + // !! could do better job choosing mol ID for added atoms if (atom->molecule_flag) { if (twomol->moleculeflag) { myaddatom.molecule = maxmol_all + twomol->molecule[m]; diff --git a/src/REACTION/fix_bond_react.h b/src/REACTION/fix_bond_react.h index 6267d20076..c3a92d91a0 100644 --- a/src/REACTION/fix_bond_react.h +++ b/src/REACTION/fix_bond_react.h @@ -63,7 +63,7 @@ class FixBondReact : public Fix { int *iatomtype, *jatomtype; int *seed; double **cutsq, *fraction; - int *max_rxn, *nlocalskips, *nghostlyskips; + int *max_rxn, *nlocalkeep, *nghostlykeep; tagint lastcheck; int stabilization_flag; int reset_mol_ids_flag; From d9a2fd9f3601ff2590ab61a7ef8ebfd19ab2e939 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 23 Aug 2024 14:49:47 -0600 Subject: [PATCH 129/326] kokkos: move #endif to correct location --- src/KOKKOS/fft3d_kokkos.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 202d46e788..9d5347f173 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -43,7 +43,6 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int #if defined(LMP_KOKKOS_GPU) int ngpus = lmp->kokkos->ngpus; ExecutionSpace execution_space = ExecutionSpaceFromDevice::space; -#endif #if defined(FFT_KOKKOS_MKL) if (ngpus > 0 && execution_space == Device) @@ -69,6 +68,8 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int if (stack_size < 2048) cudaDeviceSetLimit(cudaLimitStackSize,2048); #endif +#endif + #endif plan = fft_3d_create_plan_kokkos(comm,nfast,nmid,nslow, From ac90dca5a1661a92c8632988f6067f8612878873 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 26 Aug 2024 11:38:26 -0400 Subject: [PATCH 130/326] whitespace --- doc/src/compute_temp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/compute_temp.rst b/doc/src/compute_temp.rst index 4c7a46b822..2638a1ae11 100644 --- a/doc/src/compute_temp.rst +++ b/doc/src/compute_temp.rst @@ -59,7 +59,7 @@ factor, these tensor components are twice those of the traditional kinetic energy tensor. The six components of the vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. - + The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the :doc:`compute_modify ` command if this is not the case. From a59ac7ec86587a5420e21f74ee178545f0b15442 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 26 Aug 2024 17:43:36 -0500 Subject: [PATCH 131/326] 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 2ebe1f019fb370251e4c932dd1d06ba7c4d705a2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 26 Aug 2024 21:14:44 -0400 Subject: [PATCH 132/326] avoid uninitialized data access in case there are no atoms owned by a process --- src/REACTION/fix_bond_react.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index b80231cf44..8ed21ce2ba 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -3714,7 +3714,7 @@ int FixBondReact::insert_atoms_setup(tagint **my_update_mega_glove, int iupdate) tagint *molecule = atom->molecule; int nlocal = atom->nlocal; - tagint maxmol_all; + tagint maxmol_all = 0;; for (int i = 0; i < nlocal; i++) maxmol_all = MAX(maxmol_all,molecule[i]); MPI_Allreduce(MPI_IN_PLACE,&maxmol_all,1,MPI_LMP_TAGINT,MPI_MAX,world); From 5fbdf155e5ab725a82dc8cdf4cb6c9d907c991fa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 08:57:42 -0400 Subject: [PATCH 133/326] remove unused variables --- src/REACTION/fix_bond_react.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index 8ed21ce2ba..1e4ae33ee6 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -3693,7 +3693,6 @@ int FixBondReact::insert_atoms_setup(tagint **my_update_mega_glove, int iupdate) imageint *imageflags; double **coords,lamda[3],rotmat[3][3]; double *newcoord; - double **v = atom->v; double t,delx,dely,delz,rsq; memory->create(coords,twomol->natoms,3,"bond/react:coords"); @@ -3709,7 +3708,6 @@ int FixBondReact::insert_atoms_setup(tagint **my_update_mega_glove, int iupdate) } // find current max atom and molecule IDs - tagint *tag = atom->tag; double **x = atom->x; tagint *molecule = atom->molecule; int nlocal = atom->nlocal; From d8b9679b8702940b22c5f7e48640af6cc5a2c470 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 10:10:29 -0400 Subject: [PATCH 134/326] fix cut-n-paste issue --- tools/lammps-gui/lammpswrapper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index ed2bde1c9f..70d271f547 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -115,7 +115,7 @@ double LammpsWrapper::extract_variable(const char *keyword) } double val = *((double *)ptr); #if defined(LAMMPS_GUI_USE_PLUGIN) - ptr = ((liblammpsplugin_t *)plugin_handle)->free(ptr); + ((liblammpsplugin_t *)plugin_handle)->free(ptr); #else lammps_free(ptr); #endif From 83aab0f425f3988b49ec3eea40fdb2be3e952601 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 10:40:24 -0400 Subject: [PATCH 135/326] add option to set plugin path from the command line --- tools/lammps-gui/main.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tools/lammps-gui/main.cpp b/tools/lammps-gui/main.cpp index 736a37d58b..abd5f6d099 100644 --- a/tools/lammps-gui/main.cpp +++ b/tools/lammps-gui/main.cpp @@ -17,6 +17,9 @@ #include #include #include +#include +#include +#include #include #include @@ -40,11 +43,27 @@ int main(int argc, char *argv[]) "\nA graphical editor for LAMMPS input files with syntax highlighting and\n" "auto-completion that can run LAMMPS directly. It has built-in capabilities\n" "for monitoring, visualization, plotting, and capturing console output."); +#if defined(LAMMPS_GUI_USE_PLUGIN) + QCommandLineOption plugindir(QStringList() << "p" + << "pluginpath", + "Path to LAMMPS shared library", "path"); + parser.addOption(plugindir); +#endif + parser.addHelpOption(); parser.addVersionOption(); parser.addPositionalArgument("file", "The LAMMPS input file to open (optional)."); parser.process(app); // this removes known arguments +#if defined(LAMMPS_GUI_USE_PLUGIN) + if (parser.isSet(plugindir)) { + QString pluginpath = parser.value(plugindir); + QSettings settings; + settings.setValue("plugin_path", pluginpath); + settings.sync(); + } +#endif + const char *infile = nullptr; if (argc > 1) infile = argv[1]; LammpsGui w(nullptr, infile); From 4060de6a9cd6a70f32f58b98a9d0b7be17075d6d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 14:27:39 -0400 Subject: [PATCH 136/326] make handling of plugin path and recent files more consistent --- tools/lammps-gui/lammpsgui.cpp | 28 +++++++++++++++------------- tools/lammps-gui/lammpsgui.h | 4 ++-- tools/lammps-gui/main.cpp | 17 ++++++++++------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index d75f97da7a..e695d44c56 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -69,7 +69,7 @@ static const QString blank(" "); static constexpr int BUFLEN = 256; -LammpsGui::LammpsGui(QWidget *parent, const char *filename) : +LammpsGui::LammpsGui(QWidget *parent, const QString &filename) : QMainWindow(parent), ui(new Ui::LammpsGui), highlighter(nullptr), capturer(nullptr), status(nullptr), logwindow(nullptr), imagewindow(nullptr), chartwindow(nullptr), slideshow(nullptr), logupdater(nullptr), dirstatus(nullptr), progress(nullptr), @@ -98,21 +98,21 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : #if defined(LAMMPS_GUI_USE_PLUGIN) plugin_path.clear(); - std::string deffile = settings.value("plugin_path", "liblammps.so").toString().toStdString(); - for (const char *libfile : {deffile.c_str(), "./liblammps.so", "liblammps.dylib", + QString deffile = settings.value("plugin_path", "liblammps.so").toString(); + for (const char *libfile : {deffile.toStdString().c_str(), "./liblammps.so", "liblammps.dylib", "./liblammps.dylib", "liblammps.dll"}) { if (lammps.load_lib(libfile)) { - auto canonical = QFileInfo(libfile).canonicalFilePath(); - plugin_path = canonical.toStdString(); - settings.setValue("plugin_path", canonical); + plugin_path = QFileInfo(libfile).canonicalFilePath(); + settings.setValue("plugin_path", plugin_path); break; } } - if (plugin_path.empty()) { + if (plugin_path.isEmpty()) { // none of the plugin paths could load, remove key settings.remove("plugin_path"); - QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); + QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file.\n" + "Use -p command line flag to specify a path to the library."); exit(1); } #endif @@ -281,7 +281,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : dirstatus->show(); ui->statusbar->addWidget(progress); - if (filename) { + if (filename.size() > 0) { open_file(filename); } else { setWindowTitle("LAMMPS-GUI - Editor - *unknown*"); @@ -505,7 +505,8 @@ void LammpsGui::start_exe() void LammpsGui::update_recents(const QString &filename) { QSettings settings; - recent = settings.value("recent").value>(); + if (settings.contains("recent")) + recent = settings.value("recent").value>(); for (int i = 0; i < recent.size(); ++i) { QFileInfo fi(recent[i]); @@ -517,7 +518,8 @@ void LammpsGui::update_recents(const QString &filename) if (!filename.isEmpty() && !recent.contains(filename)) recent.prepend(filename); if (recent.size() > 5) recent.removeLast(); - settings.setValue("recent", QVariant::fromValue(recent)); + if (recent.size() > 0) settings.setValue("recent", QVariant::fromValue(recent)); + else settings.remove("recent"); ui->action_1->setVisible(false); if ((recent.size() > 0) && !recent[0].isEmpty()) { @@ -1438,9 +1440,9 @@ void LammpsGui::about() version += " using dark theme\n"; if (lammps.has_plugin()) { version += "LAMMPS library loaded as plugin"; - if (!plugin_path.empty()) { + if (!plugin_path.isEmpty()) { version += " from file "; - version += plugin_path; + version += plugin_path.toStdString(); } } else { version += "LAMMPS library linked to executable"; diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 9185b7a535..a269e1a384 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -68,7 +68,7 @@ class LammpsGui : public QMainWindow { friend class Tutorial2Wizard; public: - LammpsGui(QWidget *parent = nullptr, const char *filename = nullptr); + LammpsGui(QWidget *parent = nullptr, const QString &filename = QString()); ~LammpsGui() override; protected: @@ -172,7 +172,7 @@ private: LammpsWrapper lammps; LammpsRunner *runner; QString docver; - std::string plugin_path; + QString plugin_path; bool is_running; int run_counter; std::vector lammps_args; diff --git a/tools/lammps-gui/main.cpp b/tools/lammps-gui/main.cpp index abd5f6d099..badee254f1 100644 --- a/tools/lammps-gui/main.cpp +++ b/tools/lammps-gui/main.cpp @@ -53,19 +53,22 @@ int main(int argc, char *argv[]) parser.addHelpOption(); parser.addVersionOption(); parser.addPositionalArgument("file", "The LAMMPS input file to open (optional)."); - parser.process(app); // this removes known arguments + parser.process(app); #if defined(LAMMPS_GUI_USE_PLUGIN) if (parser.isSet(plugindir)) { - QString pluginpath = parser.value(plugindir); - QSettings settings; - settings.setValue("plugin_path", pluginpath); - settings.sync(); + QStringList pluginpath = parser.values(plugindir); + if (pluginpath.length() > 0) { + QSettings settings; + settings.setValue("plugin_path", QString(pluginpath.at(0))); + settings.sync(); + } } #endif - const char *infile = nullptr; - if (argc > 1) infile = argv[1]; + QString infile; + QStringList args = parser.positionalArguments(); + if (args.size() > 0) infile = args[0]; LammpsGui w(nullptr, infile); w.show(); return app.exec(); From 49d664583a9c314b762e6249d28e40cc9a530e9c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 17:00:42 -0400 Subject: [PATCH 137/326] correct define --- examples/COUPLE/plugin/liblammpsplugin.c | 1 - src/KOKKOS/pair_uf3_kokkos.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/COUPLE/plugin/liblammpsplugin.c b/examples/COUPLE/plugin/liblammpsplugin.c index 5d27a0a64b..0549f3ab8c 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.c +++ b/examples/COUPLE/plugin/liblammpsplugin.c @@ -41,7 +41,6 @@ #include - liblammpsplugin_t *liblammpsplugin_load(const char *lib) { liblammpsplugin_t *lmp; diff --git a/src/KOKKOS/pair_uf3_kokkos.cpp b/src/KOKKOS/pair_uf3_kokkos.cpp index 59112ddab0..da7660d0d0 100644 --- a/src/KOKKOS/pair_uf3_kokkos.cpp +++ b/src/KOKKOS/pair_uf3_kokkos.cpp @@ -1655,7 +1655,7 @@ double PairUF3Kokkos::single(int /*i*/, int /*j*/, int itype, int jt namespace LAMMPS_NS { template class PairUF3Kokkos; -#ifdef KOKKOS_ENABLE_GPU +#ifdef LMP_KOKKOS_GPU template class PairUF3Kokkos; #endif } // namespace LAMMPS_NS From c01585e8b23f1ae51a55a09448d32ed94a13a542 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 17:02:17 -0400 Subject: [PATCH 138/326] revise plugin loading logic --- tools/lammps-gui/lammpsgui.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index e695d44c56..cf6f2e32fd 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -97,21 +97,26 @@ LammpsGui::LammpsGui(QWidget *parent, const QString &filename) : QSettings settings; #if defined(LAMMPS_GUI_USE_PLUGIN) - plugin_path.clear(); - QString deffile = settings.value("plugin_path", "liblammps.so").toString(); - for (const char *libfile : {deffile.toStdString().c_str(), "./liblammps.so", "liblammps.dylib", - "./liblammps.dylib", "liblammps.dll"}) { - if (lammps.load_lib(libfile)) { - plugin_path = QFileInfo(libfile).canonicalFilePath(); - settings.setValue("plugin_path", plugin_path); - break; + plugin_path = settings.value("plugin_path", "liblammps.so").toString(); + if (!lammps.load_lib(plugin_path.toStdString().c_str())) { + // fall back to defaults + for (const char *libfile : + {"./liblammps.so", "liblammps.dylib", "./liblammps.dylib", "liblammps.dll"}) { + if (lammps.load_lib(libfile)) { + plugin_path = QFileInfo(libfile).canonicalFilePath(); + settings.setValue("plugin_path", plugin_path); + break; + } else { + plugin_path.clear(); + } } } if (plugin_path.isEmpty()) { // none of the plugin paths could load, remove key settings.remove("plugin_path"); - QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file.\n" + QMessageBox::critical(this, "Error", + "Cannot open LAMMPS shared library file.\n" "Use -p command line flag to specify a path to the library."); exit(1); } @@ -505,8 +510,7 @@ void LammpsGui::start_exe() void LammpsGui::update_recents(const QString &filename) { QSettings settings; - if (settings.contains("recent")) - recent = settings.value("recent").value>(); + if (settings.contains("recent")) recent = settings.value("recent").value>(); for (int i = 0; i < recent.size(); ++i) { QFileInfo fi(recent[i]); @@ -518,8 +522,10 @@ void LammpsGui::update_recents(const QString &filename) if (!filename.isEmpty() && !recent.contains(filename)) recent.prepend(filename); if (recent.size() > 5) recent.removeLast(); - if (recent.size() > 0) settings.setValue("recent", QVariant::fromValue(recent)); - else settings.remove("recent"); + if (recent.size() > 0) + settings.setValue("recent", QVariant::fromValue(recent)); + else + settings.remove("recent"); ui->action_1->setVisible(false); if ((recent.size() > 0) && !recent[0].isEmpty()) { From 98b4771ed67eddc54920804a5ff9776e7e3b5792 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 17:18:01 -0400 Subject: [PATCH 139/326] sanity check --- examples/COUPLE/plugin/liblammpsplugin.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/COUPLE/plugin/liblammpsplugin.c b/examples/COUPLE/plugin/liblammpsplugin.c index 0549f3ab8c..50ad2f5192 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.c +++ b/examples/COUPLE/plugin/liblammpsplugin.c @@ -190,6 +190,9 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(is_running); ADDSYM(force_timeout); + // symbol not present + if (!lmp->config_has_exceptions) return NULL; + lmp->has_exceptions = lmp->config_has_exceptions(); if (lmp->has_exceptions) { ADDSYM(has_error); From 99e5b062790362c8030a0ec05f1c88f983c717c2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 17:18:11 -0400 Subject: [PATCH 140/326] make plugin path canonical --- tools/lammps-gui/lammpsgui.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index cf6f2e32fd..4826b14719 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -97,7 +97,8 @@ LammpsGui::LammpsGui(QWidget *parent, const QString &filename) : QSettings settings; #if defined(LAMMPS_GUI_USE_PLUGIN) - plugin_path = settings.value("plugin_path", "liblammps.so").toString(); + plugin_path = + QFileInfo(settings.value("plugin_path", "liblammps.so").toString()).canonicalFilePath(); if (!lammps.load_lib(plugin_path.toStdString().c_str())) { // fall back to defaults for (const char *libfile : From 932eaf864a3176980f8bf8f32d871f46c39c84c7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 21:19:09 -0400 Subject: [PATCH 141/326] must register variant for QList before using QSettings --- tools/lammps-gui/lammpsgui.cpp | 5 ----- tools/lammps-gui/main.cpp | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 4826b14719..fe6b8c5391 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -76,11 +76,6 @@ LammpsGui::LammpsGui(QWidget *parent, const QString &filename) : prefdialog(nullptr), lammpsstatus(nullptr), varwindow(nullptr), wizard(nullptr), runner(nullptr), is_running(false), run_counter(0) { -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - // register QList only needed for Qt5 - qRegisterMetaTypeStreamOperators>("QList"); -#endif - docver = ""; ui->setupUi(this); this->setCentralWidget(ui->textEdit); diff --git a/tools/lammps-gui/main.cpp b/tools/lammps-gui/main.cpp index badee254f1..53bdaca8fd 100644 --- a/tools/lammps-gui/main.cpp +++ b/tools/lammps-gui/main.cpp @@ -30,6 +30,11 @@ int main(int argc, char *argv[]) { Q_INIT_RESOURCE(lammpsgui); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + // register QList only needed for Qt5 + qRegisterMetaTypeStreamOperators>("QList"); +#endif + QApplication app(argc, argv); // enforce using the plain ASCII C locale within the GUI. QLocale::setDefault(QLocale::c()); From 78310bddcff1e01b615f02c7134997279b2ad52a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 27 Aug 2024 21:43:00 -0400 Subject: [PATCH 142/326] update docs for LAMMPS-GUI plugin changes and document flatpak build --- doc/src/Tools.rst | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/doc/src/Tools.rst b/doc/src/Tools.rst index 6c12baf967..9f9f63f46a 100644 --- a/doc/src/Tools.rst +++ b/doc/src/Tools.rst @@ -590,20 +590,31 @@ and the LAMMPS library, via ``-D LAMMPS_SOURCE_DIR=/path/to/lammps/src``. CMake will try to guess a build folder with the LAMMPS library from that path, but it can also be set with ``-D LAMMPS_LIB_DIR=/path/to/lammps/lib``. +Plugin version +"""""""""""""" + Rather than linking to the LAMMPS library during compilation, it is also -possible to compile the GUI with a plugin loader that will load -the LAMMPS library dynamically at runtime during the start of the GUI -from a shared library; e.g. ``liblammps.so`` or ``liblammps.dylib`` or +possible to compile the GUI with a plugin loader that will load the +LAMMPS library dynamically at runtime during the start of the GUI from a +shared library; e.g. ``liblammps.so`` or ``liblammps.dylib`` or ``liblammps.dll`` (depending on the operating system). This has the advantage that the LAMMPS library can be built from updated or modified LAMMPS source without having to recompile the GUI. The ABI of the LAMMPS C-library interface is very stable and generally backward -compatible. This feature is enabled by setting -``-D LAMMPS_GUI_USE_PLUGIN=on`` and then ``-D +compatible. This feature is enabled by setting ``-D +LAMMPS_GUI_USE_PLUGIN=on`` and then ``-D LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader``. Typically, this would be the ``examples/COUPLE/plugin`` folder of the LAMMPS distribution. +When compiling LAMMPS-GUI with plugin support, there is an additional +command line flag (``-p `` or ``--pluginpath ``) which +allows to override the path to LAMMPS shared library used by the GUI. +This is usually auto-detected on the first run and can be changed in the +LAMMPS-GUI *Preferences* dialog. The command line flag allows to reset +this path to a valid value in case the original setting has become +invalid. An empty path ("") as argument restores the default setting. + Platform notes ^^^^^^^^^^^^^^ @@ -671,6 +682,15 @@ folder> --target tgz`` or ``make tgz`` to build a ``LAMMPS-Linux-amd64.tar.gz`` file with the executables and their support libraries. +It is also possible to build a `flatpak bundle +`_ which is +a way to distribute applications in a way that is compatible with most +Linux distributions. Use the "flatpak" target to trigger a compile +(``cmake --build --target flatpak`` or ``make flatpak``). +Please note that this will not build from the local sources but from the +repository and branch listed in the ``org.lammps.lammps-gui.yml`` +LAMMPS-GUI source folder. + ---------- .. _arc: From 5c11c5ead8de623f00d205bca549380df5b8f47f Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 28 Aug 2024 10:48:12 +0200 Subject: [PATCH 143/326] include variable definitions in region_plane.h --- src/region_plane.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/region_plane.h b/src/region_plane.h index 2025586a7c..0e4ecda6d4 100644 --- a/src/region_plane.h +++ b/src/region_plane.h @@ -28,13 +28,23 @@ class RegPlane : public Region { public: RegPlane(class LAMMPS *, int, char **); ~RegPlane() override; + void init() override; int inside(double, double, double) override; int surface_interior(double *, double) override; int surface_exterior(double *, double) override; + void shape_update() override; private: double xp, yp, zp; double normal[3]; + + int xstyle, xvar; + int ystyle, yvar; + int zstyle, zvar; + char *xstr, *ystr, *zstr; + + void variable_check(); + }; } // namespace LAMMPS_NS From 40cd70465cba86d7ea631cfe2c675c15fad90b39 Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 28 Aug 2024 10:57:02 +0200 Subject: [PATCH 144/326] Code for variable point definition in region_plane.cpp --- src/region_plane.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 4 deletions(-) diff --git a/src/region_plane.cpp b/src/region_plane.cpp index 154b072633..d8c09fa3cb 100644 --- a/src/region_plane.cpp +++ b/src/region_plane.cpp @@ -14,20 +14,58 @@ #include "region_plane.h" #include "error.h" +#include "input.h" +#include "update.h" +#include "variable.h" #include using namespace LAMMPS_NS; +enum { CONSTANT, VARIABLE }; + /* ---------------------------------------------------------------------- */ -RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) +RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg), + xstr(nullptr), ystr(nullptr), zstr(nullptr) { options(narg - 8, &arg[8]); - xp = xscale * utils::numeric(FLERR, arg[2], false, lmp); - yp = yscale * utils::numeric(FLERR, arg[3], false, lmp); - zp = zscale * utils::numeric(FLERR, arg[4], false, lmp); + if (utils::strmatch(arg[2], "^v_")) { + xstr = utils::strdup(arg[2] + 2); + xp = 0.0; + xstyle = VARIABLE; + varshape = 1; + } else { + xp = xscale * utils::numeric(FLERR, arg[2], false, lmp); + xstyle = CONSTANT; + } + + if (utils::strmatch(arg[3], "^v_")) { + ystr = utils::strdup(arg[3] + 2); + yp = 0.0; + ystyle = VARIABLE; + varshape = 1; + } else { + yp = yscale * utils::numeric(FLERR, arg[3], false, lmp); + ystyle = CONSTANT; + } + + if (utils::strmatch(arg[4], "^v_")) { + zstr = utils::strdup(arg[4] + 2); + zp = 0.0; + zstyle = VARIABLE; + varshape = 1; + } else { + zp = zscale * utils::numeric(FLERR, arg[4], false, lmp); + zstyle = CONSTANT; + } + + if (varshape) { + variable_check(); + RegPlane::shape_update(); + } + normal[0] = xscale * utils::numeric(FLERR, arg[5], false, lmp); normal[1] = yscale * utils::numeric(FLERR, arg[6], false, lmp); normal[2] = zscale * utils::numeric(FLERR, arg[7], false, lmp); @@ -54,9 +92,20 @@ RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) RegPlane::~RegPlane() { + delete[] xstr; + delete[] ystr; + delete[] zstr; delete[] contact; } +/* ---------------------------------------------------------------------- */ + +void RegPlane::init() +{ + Region::init(); + if (varshape) variable_check(); +} + /* ---------------------------------------------------------------------- inside = 1 if x,y,z is on normal side of plane or on plane inside = 0 if x,y,z is on non-normal side of plane and not on plane @@ -113,3 +162,45 @@ int RegPlane::surface_exterior(double *x, double cutoff) } return 0; } + +/* ---------------------------------------------------------------------- + change region shape via variable evaluation +------------------------------------------------------------------------- */ + +void RegPlane::shape_update() +{ + if (xstyle == VARIABLE) xp = xscale * input->variable->compute_equal(xvar); + + if (ystyle == VARIABLE) yp = yscale * input->variable->compute_equal(yvar); + + if (zstyle == VARIABLE) zp = zscale * input->variable->compute_equal(zvar); +} + +/* ---------------------------------------------------------------------- + error check on existence of variable +------------------------------------------------------------------------- */ + +void RegPlane::variable_check() +{ + if (xstyle == VARIABLE) { + xvar = input->variable->find(xstr); + if (xvar < 0) error->all(FLERR, "Variable {} for region plane does not exist", xstr); + if (!input->variable->equalstyle(xvar)) + error->all(FLERR, "Variable {} for region plane is invalid style", xstr); + } + + if (ystyle == VARIABLE) { + yvar = input->variable->find(ystr); + if (yvar < 0) error->all(FLERR, "Variable {} for region plane does not exist", ystr); + if (!input->variable->equalstyle(yvar)) + error->all(FLERR, "Variable {} for region plane is invalid style", ystr); + } + + if (zstyle == VARIABLE) { + zvar = input->variable->find(zstr); + if (zvar < 0) error->all(FLERR, "Variable {} for region plane does not exist", zstr); + if (!input->variable->equalstyle(zvar)) + error->all(FLERR, "Variable {} for region plane is invalid style", zstr); + } +} + From 709ab8fbe92a1815382db0491c9965c16512b4dd Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 28 Aug 2024 11:04:47 +0200 Subject: [PATCH 145/326] Update region.rst --- doc/src/region.rst | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/src/region.rst b/doc/src/region.rst index 9d2af01de1..7e3c95362c 100644 --- a/doc/src/region.rst +++ b/doc/src/region.rst @@ -34,10 +34,11 @@ Syntax *ellipsoid* args = x y z a b c x,y,z = center of ellipsoid (distance units) a,b,c = half the length of the principal axes of the ellipsoid (distance units) - x,y,z,a,b and c can be a variable (see below) + x,y,z,a,b and c can be a variable (see below) *plane* args = px py pz nx ny nz px,py,pz = point on the plane (distance units) nx,ny,nz = direction normal to plane (distance units) + px,py,pz can be a variable *prism* args = xlo xhi ylo yhi zlo zhi xy xz yz xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism (distance units) xy = distance to tilt y in x direction (distance units) @@ -46,7 +47,7 @@ Syntax *sphere* args = x y z radius x,y,z = center of sphere (distance units) radius = radius of sphere (distance units) - x,y,z, and radius can be a variable (see below) + x,y,z, and radius can be a variable (see below) *union* args = N reg-ID1 reg-ID2 ... N = # of regions to follow, must be 2 or greater reg-ID1,reg-ID2, ... = IDs of regions to join together @@ -203,12 +204,13 @@ and with radius as its radius. The *radius* value for styles *sphere* and *cylinder*, and the parameters a,b,c for style *ellipsoid*, can each be specified as an -equal-style :doc:`variable `. Likewise, for style *sphere* +equal-style :doc:`variable `. Likewise, for style *sphere* and *ellipsoid* the x-, y-, and z- coordinates of the center of the -sphere/ellipsoid can be specified as an equal-style variable. And for +sphere/ellipsoid can be specified as an equal-style variable. And for style *cylinder* the two center positions c1 and c2 for the location of the cylinder axes can be specified as a equal-style variable. For style *cone* -all properties can be defined via equal-style variables. +all properties can be defined via equal-style variables. For style *plane* +the point can be defined via equal-style variables. If the value is a variable, it should be specified as v_name, where name is the variable name. In this case, the variable will be From f2102b76f212512d6d40246397296f8d544abd86 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 28 Aug 2024 11:09:47 -0400 Subject: [PATCH 146/326] cosmetic --- src/CLASS2/angle_class2.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/CLASS2/angle_class2.cpp b/src/CLASS2/angle_class2.cpp index 1dbaaf0568..118179ad91 100644 --- a/src/CLASS2/angle_class2.cpp +++ b/src/CLASS2/angle_class2.cpp @@ -18,17 +18,17 @@ #include "angle_class2.h" -#include -#include #include "atom.h" -#include "neighbor.h" -#include "domain.h" #include "comm.h" +#include "domain.h" +#include "error.h" #include "force.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include "neighbor.h" +#include +#include using namespace LAMMPS_NS; using namespace MathConst; From e3119155e138c3d7d4b3da070b7134b484de4d5e Mon Sep 17 00:00:00 2001 From: Evangelos Voyiatzis Date: Wed, 28 Aug 2024 18:20:18 +0200 Subject: [PATCH 147/326] Update doc/src/region.rst Co-authored-by: Axel Kohlmeyer --- doc/src/region.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/region.rst b/doc/src/region.rst index 7e3c95362c..a6a9469381 100644 --- a/doc/src/region.rst +++ b/doc/src/region.rst @@ -38,7 +38,7 @@ Syntax *plane* args = px py pz nx ny nz px,py,pz = point on the plane (distance units) nx,ny,nz = direction normal to plane (distance units) - px,py,pz can be a variable + px,py,pz can be a variable *prism* args = xlo xhi ylo yhi zlo zhi xy xz yz xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism (distance units) xy = distance to tilt y in x direction (distance units) From f5ffb28a1f3d20b7a51ddcc093a9e4e7b1bd15f4 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 12:57:58 -0500 Subject: [PATCH 148/326] 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 149/326] 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 150/326] 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 acfed1268401818ff3db374e7cf5c0db5b2e603b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 28 Aug 2024 15:12:46 -0400 Subject: [PATCH 151/326] avoid recursion. there is only one executable. --- examples/PACKAGES/plumed/plugin/plumedplugin.nsis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis index 229473ddeb..1de9800d26 100644 --- a/examples/PACKAGES/plumed/plugin/plumedplugin.nsis +++ b/examples/PACKAGES/plumed/plugin/plumedplugin.nsis @@ -98,7 +98,7 @@ Section "${PLUMEDPLUGIN}" SecPlumedplugin File plumedplugin.so SetOutPath "$INSTDIR\bin" - File /r *.exe + File plumed.exe # Register Application and its uninstaller WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\LAMMPS-PLUMED" \ From af5f437aeb239890f2727f5da7c6defc147b0d6c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 28 Aug 2024 15:30:44 -0400 Subject: [PATCH 152/326] update list of dependencies --- examples/PACKAGES/plumed/plugin/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/PACKAGES/plumed/plugin/CMakeLists.txt b/examples/PACKAGES/plumed/plugin/CMakeLists.txt index b14d3e5f9b..33ed34123d 100644 --- a/examples/PACKAGES/plumed/plugin/CMakeLists.txt +++ b/examples/PACKAGES/plumed/plugin/CMakeLists.txt @@ -40,17 +40,17 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if(BUILD_MPI) if(USE_MSMPI) add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MSMPI plumedplugin.nsis - DEPENDS plumedplugin + DEPENDS plumedplugin plumed_copy lammps.ico lammps-text-logo-wide.bmp plumedplugin.nsis BYPRODUCTS LAMMPS-PLUMED-plugin-${LAMMPS_VERSION}-MSMPI.exe) else() add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION}-MPI plumedplugin.nsis - DEPENDS plumedplugin + DEPENDS plumedplugin plumed_copy lammps.ico lammps-text-logo-wide.bmp plumedplugin.nsis BYPRODUCTS LAMMPS-PLUMED-plugin-${LAMMPS_VERSION}-MPI.exe) endif() else() add_custom_target(package ${MAKENSIS_PATH} -V1 -DVERSION=${LAMMPS_VERSION} plumedplugin.nsis COMMAND ${CMAKE_COMMAND} -E echo ${PWD} - DEPENDS plumedplugin lammps.ico lammps-text-logo-wide.bmp plumedplugin.nsis + DEPENDS plumedplugin plumed_copy lammps.ico lammps-text-logo-wide.bmp plumedplugin.nsis BYPRODUCTS LAMMPS-PLUMED-plugin-${LAMMPS_VERSION}.exe) endif() endif() From aa088da59bb16ed5ec6d3a685adf30295d3ad106 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 28 Aug 2024 14:43:27 -0500 Subject: [PATCH 153/326] 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 154/326] 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 155/326] 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 156/326] 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 157/326] 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 158/326] 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 2581b1abfe03e8e4bf588081fdb3ecb75aff9ea1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 28 Aug 2024 22:13:04 -0400 Subject: [PATCH 159/326] update change log info for flatpak --- tools/lammps-gui/lammps-gui.appdata.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 312abc66cf..66a15223a2 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -56,7 +56,8 @@ - + Resolve plugin mode issues. + Add -p command line flag to override path to liblammps.so From ba51b59add6ddd4ccaeaefd13887e85d317f62b8 Mon Sep 17 00:00:00 2001 From: cjknight Date: Thu, 29 Aug 2024 12:28:54 -0500 Subject: [PATCH 160/326] first pass on MKL FFT for Intel GPUs; rhodo benchmark results are close to CPU... --- src/KOKKOS/fft3d_kokkos.cpp | 81 ++++++++++++++++++++++++++++++++----- src/KOKKOS/fft3d_kokkos.h | 10 ++++- src/KOKKOS/fftdata_kokkos.h | 35 ++++++++++++++-- src/KOKKOS/kokkos_type.h | 14 +++---- 4 files changed, 117 insertions(+), 23 deletions(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 202d46e788..608a17a3ea 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -45,7 +45,11 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int ExecutionSpace execution_space = ExecutionSpaceFromDevice::space; #endif -#if defined(FFT_KOKKOS_MKL) + // CHRIS:: what about supporting MKL on both CPU and GPU in same build?? +#if defined(FFT_KOKKOS_MKL_GPU) + if (ngpus > 0 && execution_space == Host) + lmp->error->all(FLERR,"Cannot use the MKL library with Kokkos on the host CPUs in a GPU build"); +#elif defined(FFT_KOKKOS_MKL) if (ngpus > 0 && execution_space == Device) lmp->error->all(FLERR,"Cannot use the MKL library with Kokkos on GPUs"); #elif defined(FFT_KOKKOS_FFTW3) @@ -156,6 +160,8 @@ public: *(out_ptr++) *= norm; #elif defined(FFT_KOKKOS_MKL) d_out(i) *= norm; +#elif defined(FFT_KOKKOS_MKL_GPU) + d_out(i) *= norm; #else // FFT_KOKKOS_KISS d_out(i).re *= norm; d_out(i).im *= norm; @@ -219,8 +225,13 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total1; length = plan->length1; - - #if defined(FFT_KOKKOS_MKL) + + #if defined(FFT_KOKKOS_MKL_GPU) + if (flag == 1) + oneapi::mkl::dft::compute_forward(*(plan->desc_fast), d_data.data()); + else + oneapi::mkl::dft::compute_backward(*(plan->desc_fast), d_data.data()); + #elif defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_fast,d_data.data()); else @@ -265,8 +276,13 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total2; length = plan->length2; - - #if defined(FFT_KOKKOS_MKL) + + #if defined(FFT_KOKKOS_MKL_GPU) + if (flag == 1) + oneapi::mkl::dft::compute_forward(*(plan->desc_mid), d_data.data()); + else + oneapi::mkl::dft::compute_backward(*(plan->desc_mid), d_data.data()); + #elif defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_mid,d_data.data()); else @@ -310,7 +326,12 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total3; length = plan->length3; - #if defined(FFT_KOKKOS_MKL) + #if defined(FFT_KOKKOS_MKL_GPU) + if (flag == 1) + oneapi::mkl::dft::compute_forward(*(plan->desc_slow), d_data.data()); + else + oneapi::mkl::dft::compute_backward(*(plan->desc_slow), d_data.data()); + #elif defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_slow,d_data.data()); else @@ -609,7 +630,31 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl // system specific pre-computation of 1d FFT coeffs // and scaling normalization -#if defined(FFT_KOKKOS_MKL) +#if defined(FFT_KOKKOS_MKL_GPU) + sycl::queue queue = LMPDeviceType().sycl_queue(); // is this the correct queue? + + plan->desc_fast = new descriptor_t (nfast); + plan->desc_fast->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nfast)); + plan->desc_fast->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nfast); + plan->desc_fast->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nfast); + plan->desc_fast->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nfast); + plan->desc_fast->commit(queue); + + plan->desc_mid = new descriptor_t (nmid); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nmid)); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nmid); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nmid); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nmid); + plan->desc_mid->commit(queue); + + plan->desc_slow = new descriptor_t (nslow); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nslow)); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nslow); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nslow); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nslow); + plan->desc_slow->commit(queue); + +#elif defined(FFT_KOKKOS_MKL) DftiCreateDescriptor( &(plan->handle_fast), FFT_KOKKOS_MKL_PREC, DFTI_COMPLEX, 1, (MKL_LONG)nfast); DftiSetValue(plan->handle_fast, DFTI_NUMBER_OF_TRANSFORMS, @@ -781,7 +826,11 @@ void FFT3dKokkos::fft_3d_destroy_plan_kokkos(struct fft_plan_3d_kokk if (plan->mid2_plan) remapKK->remap_3d_destroy_plan_kokkos(plan->mid2_plan); if (plan->post_plan) remapKK->remap_3d_destroy_plan_kokkos(plan->post_plan); -#if defined(FFT_KOKKOS_MKL) +#if defined(FFT_KOKKOS_MKL_GPU) + delete plan->desc_fast; + delete plan->desc_mid; + delete plan->desc_slow; +#elif defined(FFT_KOKKOS_MKL) DftiFreeDescriptor(&(plan->handle_fast)); DftiFreeDescriptor(&(plan->handle_mid)); DftiFreeDescriptor(&(plan->handle_slow)); @@ -856,7 +905,7 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ // fftw3 and Dfti in MKL encode the number of transforms // into the plan, so we cannot operate on a smaller data set -#if defined(FFT_KOKKOS_MKL) || defined(FFT_KOKKOS_FFTW3) +#if defined(FFT_KOKKOS_MKL_GPU) || defined(FFT_KOKKOS_MKL) || defined(FFT_KOKKOS_FFTW3) if ((total1 > nsize) || (total2 > nsize) || (total3 > nsize)) return; #endif @@ -866,8 +915,18 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ // perform 1d FFTs in each of 3 dimensions // data is just an array of 0.0 - -#if defined(FFT_KOKKOS_MKL) + +#if defined(FFT_KOKKOS_MKL_GPU) + if (flag == -1) { + oneapi::mkl::dft::compute_forward(*(plan->desc_fast), d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_mid), d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_slow), d_data.data()); + } else { + oneapi::mkl::dft::compute_backward(*(plan->desc_fast), d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_mid), d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_slow), d_data.data()); + } +#elif defined(FFT_KOKKOS_MKL) if (flag == -1) { DftiComputeForward(plan->handle_fast,d_data.data()); DftiComputeForward(plan->handle_mid,d_data.data()); diff --git a/src/KOKKOS/fft3d_kokkos.h b/src/KOKKOS/fft3d_kokkos.h index 48b0fd76de..6c8296d399 100644 --- a/src/KOKKOS/fft3d_kokkos.h +++ b/src/KOKKOS/fft3d_kokkos.h @@ -20,7 +20,9 @@ #include "fftdata_kokkos.h" namespace LAMMPS_NS { - + + typedef oneapi::mkl::dft::descriptor descriptor_t; + // ------------------------------------------------------------------------- // plan for how to perform a 3d FFT @@ -45,7 +47,11 @@ struct fft_plan_3d_kokkos { double norm; // normalization factor for rescaling // system specific 1d FFT info -#if defined(FFT_KOKKOS_MKL) +#if defined(FFT_KOKKOS_MKL_GPU) + descriptor_t *desc_fast; + descriptor_t *desc_mid; + descriptor_t *desc_slow; +#elif defined(FFT_KOKKOS_MKL) DFTI_DESCRIPTOR *handle_fast; DFTI_DESCRIPTOR *handle_mid; DFTI_DESCRIPTOR *handle_slow; diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index 0cb59f49cb..90d917c093 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -36,8 +36,8 @@ # endif #endif -// with KOKKOS in CUDA or HIP mode we can only have -// CUFFT/HIPFFT or KISS, thus undefine all other +// with KOKKOS in CUDA, HIP, or SYCL mode we can only have +// CUFFT/HIPFFT/oneMKL or KISS, thus undefine all other // FFTs here #ifdef KOKKOS_ENABLE_CUDA @@ -66,6 +66,19 @@ # if !defined(FFT_KOKKOS_HIPFFT) && !defined(FFT_KOKKOS_KISS) # define FFT_KOKKOS_KISS # endif +#elif defined(KOKKOS_ENABLE_SYCL) +# if defined(FFT_KOKKOS_FFTW) +# undef FFT_KOKKOS_FFTW +# endif +# if defined(FFT_KOKKOS_FFTW3) +# undef FFT_KOKKOS_FFTW3 +# endif +# if defined(FFT_KOKKOS_MKL) +# undef FFT_KOKKOS_MKL +# endif +# if !defined(FFT_KOKKOS_MKL_GPU) && !defined(FFT_KOKKOS_KISS) +# define FFT_KOKKOS_KISS +# endif #else # if defined(FFT_KOKKOS_CUFFT) # error "Must enable CUDA with KOKKOS to use -DFFT_KOKKOS_CUFFT" @@ -73,6 +86,9 @@ # if defined(FFT_KOKKOS_HIPFFT) # error "Must enable HIP with KOKKOS to use -DFFT_KOKKOS_HIPFFT" # endif +# if defined(FFT_KOKKOS_MKL_GPU) +# error "Must enable SYCL with KOKKOS to use -DFFT_KOKKOS_MKL_GPU" +# endif #endif // set strings for library info output @@ -85,12 +101,25 @@ #define LMP_FFT_KOKKOS_LIB "FFTW3" #elif defined(FFT_KOKKOS_MKL) #define LMP_FFT_KOKKOS_LIB "MKL FFT" +#elif defined(FFT_KOKKOS_MKL_GPU) +#define LMP_FFT_KOKKOS_LIB "MKL_GPU FFT" #else #define LMP_FFT_KOKKOS_LIB "KISS FFT" #endif -#if defined(FFT_KOKKOS_MKL) +#if defined(FFT_KOKKOS_MKL_GPU) + #include "CL/sycl.hpp" + #include "oneapi/mkl/dfti.hpp" // conflict between PRECISION macro in dfti.hpp and kokkos_type.h + #include "mkl.h" + #if defined(FFT_SINGLE) + typedef float FFT_KOKKOS_DATA; + #define FFT_KOKKOS_MKL_PREC DFTI_SINGLE + #else + typedef double FFT_KOKKOS_DATA; + #define FFT_KOKKOS_MKL_PREC DFTI_DOUBLE + #endif +#elif defined(FFT_KOKKOS_MKL) #include "mkl_dfti.h" #if defined(FFT_SINGLE) typedef float _Complex FFT_KOKKOS_DATA; diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index 7f0eb5c105..e9061dd7a3 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -341,17 +341,17 @@ public: // define precision // handle global precision, force, energy, positions, kspace separately -#ifndef PRECISION -#define PRECISION 2 +#ifndef LMP_PRECISION +#define LMP_PRECISION 2 #endif -#if PRECISION==1 +#if LMP_PRECISION==1 typedef float LMP_FLOAT; #else typedef double LMP_FLOAT; #endif #ifndef PREC_FORCE -#define PREC_FORCE PRECISION +#define PREC_FORCE LMP_PRECISION #endif #if PREC_FORCE==1 @@ -361,7 +361,7 @@ typedef double F_FLOAT; #endif #ifndef PREC_ENERGY -#define PREC_ENERGY PRECISION +#define PREC_ENERGY LMP_PRECISION #endif #if PREC_ENERGY==1 @@ -521,7 +521,7 @@ struct BinOp3DLAMMPS { }; #ifndef PREC_POS -#define PREC_POS PRECISION +#define PREC_POS LMP_PRECISION #endif #if PREC_POS==1 @@ -531,7 +531,7 @@ typedef double X_FLOAT; #endif #ifndef PREC_VELOCITIES -#define PREC_VELOCITIES PRECISION +#define PREC_VELOCITIES LMP_PRECISION #endif #if PREC_VELOCITIES==1 From f0513bad4c372e206ffecec54fe9f439648b6ec9 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Thu, 29 Aug 2024 18:20:41 +0000 Subject: [PATCH 161/326] cleanup --- src/MAKE/MACHINES/Makefile.aurora | 2 +- src/MAKE/MACHINES/Makefile.aurora_kokkos | 10 +++++----- src/info.cpp | 4 ++++ src/lmpfftsettings.h | 2 ++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/MAKE/MACHINES/Makefile.aurora b/src/MAKE/MACHINES/Makefile.aurora index 1b16025f7c..78c08b8e95 100644 --- a/src/MAKE/MACHINES/Makefile.aurora +++ b/src/MAKE/MACHINES/Makefile.aurora @@ -116,6 +116,6 @@ depend : fastdep.exe $(SRC) @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< + icx -O -o $@ $< sinclude .depend diff --git a/src/MAKE/MACHINES/Makefile.aurora_kokkos b/src/MAKE/MACHINES/Makefile.aurora_kokkos index 4aa737346a..a9000bcfd6 100644 --- a/src/MAKE/MACHINES/Makefile.aurora_kokkos +++ b/src/MAKE/MACHINES/Makefile.aurora_kokkos @@ -7,7 +7,7 @@ SHELL = /bin/sh # specify flags and libraries needed for your compiler CC = mpicxx -CCFLAGS = -g -O3 -DNDEBUG +CCFLAGS = -g -O3 -DNDEBUG -w CCFLAGS += -fsycl-device-code-split=per_kernel SHFLAGS = -fPIC DEPFLAGS = -M @@ -54,9 +54,9 @@ MPI_LIB = # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -FFT_PATH = -FFT_LIB = +FFT_INC = -DFFT_KOKKOS_MKL_GPU -I${MKL_ROOT}/include +FFT_PATH = -L${MKL_ROOT}/lib -L${TBB_ROOT}/lib/intel64/gcc4.8 +FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -ltbb # JPEG and/or PNG library # see discussion in Section 3.5.4 of manual @@ -118,6 +118,6 @@ depend : fastdep.exe $(SRC) @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 fastdep.exe: ../DEPEND/fastdep.c - cc -O -o $@ $< + icx -O -o $@ $< sinclude .depend diff --git a/src/info.cpp b/src/info.cpp index 98ed06f498..f50a2ccc6a 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -1316,6 +1316,8 @@ std::string Info::get_fft_info() #else fft_info += "FFT library = MKL\n"; #endif +#elif defined(FFT_MKL_GPU) + fft_info += "FFT library = MKL GPU\n"; #elif defined(FFT_FFTW3) #if defined(FFT_FFTW_THREADS) fft_info += "FFT library = FFTW3 with threads\n"; @@ -1344,6 +1346,8 @@ std::string Info::get_fft_info() #else fft_info += "KOKKOS FFT library = MKL\n"; #endif +#elif defined(FFT_KOKKOS_MKL_GPU) + fft_info += "KOKKOS FFT library = MKL GPU\n"; #else fft_info += "KOKKOS FFT library = KISS\n"; #endif diff --git a/src/lmpfftsettings.h b/src/lmpfftsettings.h index 1b9c89274c..3bcab4a61b 100644 --- a/src/lmpfftsettings.h +++ b/src/lmpfftsettings.h @@ -39,6 +39,8 @@ #define LMP_FFT_LIB "FFTW3" #elif defined(FFT_MKL) #define LMP_FFT_LIB "MKL FFT" +#elif defined(FFT_MKL_GPU) +#define LMP_FFT_LIB "MKL GPU FFT" #elif defined(FFT_CUFFT) #define LMP_FFT_LIB "cuFFT" #elif defined(FFT_HIPFFT) From 0c753d92ba4f60bc436d5b27ddf783788018ea8b Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Thu, 29 Aug 2024 18:21:26 +0000 Subject: [PATCH 162/326] single & double support ; fix plan bug --- src/KOKKOS/fft3d_kokkos.cpp | 4 ++-- src/KOKKOS/fft3d_kokkos.h | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 87ed73288d..e555cfeabb 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -643,14 +643,14 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl plan->desc_mid = new descriptor_t (nmid); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nmid)); - plan->desc_mid->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nmid); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total2/nmid); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nmid); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nmid); plan->desc_mid->commit(queue); plan->desc_slow = new descriptor_t (nslow); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nslow)); - plan->desc_slow->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nslow); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total3/nslow); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nslow); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nslow); plan->desc_slow->commit(queue); diff --git a/src/KOKKOS/fft3d_kokkos.h b/src/KOKKOS/fft3d_kokkos.h index 6c8296d399..69217171f5 100644 --- a/src/KOKKOS/fft3d_kokkos.h +++ b/src/KOKKOS/fft3d_kokkos.h @@ -20,9 +20,13 @@ #include "fftdata_kokkos.h" namespace LAMMPS_NS { - + +#ifdef FFT_SINGLE + typedef oneapi::mkl::dft::descriptor descriptor_t; +#else typedef oneapi::mkl::dft::descriptor descriptor_t; - +#endif + // ------------------------------------------------------------------------- // plan for how to perform a 3d FFT From 571076a5a7dfa3127218ad97cc000a2df76a14cc Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 29 Aug 2024 14:18:08 -0600 Subject: [PATCH 163/326] Gracefully error out if integer overflow in ReaxFF or QEq --- src/KOKKOS/fix_qeq_reaxff_kokkos.cpp | 9 ++++++--- src/KOKKOS/fix_qeq_reaxff_kokkos.h | 6 +++--- src/KOKKOS/pair_reaxff_kokkos.cpp | 8 ++++++++ src/QEQ/fix_qeq.cpp | 8 ++++++-- src/REAXFF/fix_qeq_reaxff.cpp | 8 ++++++-- src/REAXFF/reaxff_allocate.cpp | 26 ++++++++++++++++++++------ 6 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp index deb41944bc..7fe0285aec 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp @@ -301,7 +301,7 @@ void FixQEqReaxFFKokkos::pre_force(int /*vflag*/) template KOKKOS_INLINE_FUNCTION -void FixQEqReaxFFKokkos::num_neigh_item(int ii, int &maxneigh) const +void FixQEqReaxFFKokkos::num_neigh_item(int ii, bigint &maxneigh) const { const int i = d_ilist[ii]; maxneigh += d_numneigh[i]; @@ -316,13 +316,16 @@ void FixQEqReaxFFKokkos::allocate_matrix() // determine the total space for the H matrix - m_cap = 0; + bigint m_cap_big = 0; // limit scope of functor to allow deallocation of views { FixQEqReaxFFKokkosNumNeighFunctor neigh_functor(this); - Kokkos::parallel_reduce(nn,neigh_functor,m_cap); + Kokkos::parallel_reduce(nn,neigh_functor,m_cap_big); } + if (m_cap_big > MAXSMALLINT) + error->one(FLERR,"Number of neighbors too large in fix qeq/reaxff"); + m_cap = m_cap_big; // deallocate first to reduce memory overhead diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.h b/src/KOKKOS/fix_qeq_reaxff_kokkos.h index 92026b209d..4bc5f8385b 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.h +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.h @@ -70,7 +70,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { void pre_force(int) override; KOKKOS_INLINE_FUNCTION - void num_neigh_item(int, int&) const; + void num_neigh_item(int, bigint&) const; KOKKOS_INLINE_FUNCTION void operator()(TagQEqZero, const int&) const; @@ -290,13 +290,13 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { template struct FixQEqReaxFFKokkosNumNeighFunctor { typedef DeviceType device_type; - typedef int value_type; + typedef bigint value_type; FixQEqReaxFFKokkos c; FixQEqReaxFFKokkosNumNeighFunctor(FixQEqReaxFFKokkos* c_ptr):c(*c_ptr) { c.cleanup_copy(); }; KOKKOS_INLINE_FUNCTION - void operator()(const int ii, int &maxneigh) const { + void operator()(const int ii, bigint &maxneigh) const { c.num_neigh_item(ii, maxneigh); } }; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index 7dd86e07a9..6ff955e6d8 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1504,10 +1504,18 @@ void PairReaxFFKokkos::allocate_array() if (cut_hbsq > 0.0) { MemKK::realloc_kokkos(d_hb_first,"reaxff/kk:hb_first",nmax); MemKK::realloc_kokkos(d_hb_num,"reaxff/kk:hb_num",nmax); + + if (((bigint) nmax*maxhb) > MAXSMALLINT) + error->one(FLERR,"Too many hydrogen bonds in pair reaxff"); + MemKK::realloc_kokkos(d_hb_list,"reaxff/kk:hb_list",nmax*maxhb); } MemKK::realloc_kokkos(d_bo_first,"reaxff/kk:bo_first",nmax); MemKK::realloc_kokkos(d_bo_num,"reaxff/kk:bo_num",nmax); + + if (((bigint) nmax*maxbo) > MAXSMALLINT) + error->one(FLERR,"Too many bonds in pair reaxff"); + MemKK::realloc_kokkos(d_bo_list,"reaxff/kk:bo_list",nmax*maxbo); MemKK::realloc_kokkos(d_BO,"reaxff/kk:BO",nmax,maxbo); diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index 0e1335282c..7f0ac6200e 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -237,8 +237,9 @@ void FixQEq::reallocate_storage() void FixQEq::allocate_matrix() { - int i,ii,inum,m; + int i,ii,inum; int *ilist, *numneigh; + bigint m; int mincap; double safezone; @@ -261,7 +262,10 @@ void FixQEq::allocate_matrix() i = ilist[ii]; m += numneigh[i]; } - m_cap = MAX((int)(m * safezone), mincap * MIN_NBRS); + bigint m_cap_big = MAX((int)(m * safezone), mincap * MIN_NBRS); + if (m_cap_big > MAXSMALLINT) + error->one(FLERR,"Number of neighbors too large in fix qeq/reaxff"); + m_cap = m_cap_big; H.n = n_cap; H.m = m_cap; diff --git a/src/REAXFF/fix_qeq_reaxff.cpp b/src/REAXFF/fix_qeq_reaxff.cpp index 7e935fd6cd..eaeb7f788c 100644 --- a/src/REAXFF/fix_qeq_reaxff.cpp +++ b/src/REAXFF/fix_qeq_reaxff.cpp @@ -338,7 +338,8 @@ void FixQEqReaxFF::reallocate_storage() void FixQEqReaxFF::allocate_matrix() { - int i,ii,m; + int i,ii; + bigint m; int mincap; double safezone; @@ -360,7 +361,10 @@ void FixQEqReaxFF::allocate_matrix() i = ilist[ii]; m += numneigh[i]; } - m_cap = MAX((int)(m * safezone), mincap * REAX_MIN_NBRS); + bigint m_cap_big = MAX((int)(m * safezone), mincap * REAX_MIN_NBRS); + if (m_cap_big > MAXSMALLINT) + error->one(FLERR,"Number of neighbors too large in fix qeq/reaxff"); + m_cap = m_cap_big; H.n = n_cap; H.m = m_cap; diff --git a/src/REAXFF/reaxff_allocate.cpp b/src/REAXFF/reaxff_allocate.cpp index 06ebc20f30..04940064f0 100644 --- a/src/REAXFF/reaxff_allocate.cpp +++ b/src/REAXFF/reaxff_allocate.cpp @@ -169,16 +169,23 @@ namespace ReaxFF { static int Reallocate_HBonds_List(reax_system *system, reax_list *hbonds) { int i, total_hbonds; + LAMMPS_NS::bigint total_hbonds_big; int mincap = system->mincap; double saferzone = system->saferzone; - total_hbonds = 0; + total_hbonds_big = 0; for (i = 0; i < system->n; ++i) if ((system->my_atoms[i].Hindex) >= 0) { - total_hbonds += system->my_atoms[i].num_hbonds; + total_hbonds_big += system->my_atoms[i].num_hbonds; } - total_hbonds = (int)(MAX(total_hbonds*saferzone, mincap*system->minhbonds)); + total_hbonds_big = (int)(MAX(total_hbonds_big*saferzone, mincap*system->minhbonds)); + + auto error = system->error_ptr; + if (total_hbonds_big > MAXSMALLINT) + error->one(FLERR,"Too many hydrogen bonds in pair reaxff"); + + total_hbonds = total_hbonds_big; Delete_List(hbonds); Make_List(system->Hcap, total_hbonds, TYP_HBOND, hbonds); @@ -190,17 +197,24 @@ namespace ReaxFF { reax_list *bonds, int *total_bonds, int *est_3body) { int i; + LAMMPS_NS::bigint total_bonds_big; int mincap = system->mincap; double safezone = system->safezone; - *total_bonds = 0; + total_bonds_big = 0; *est_3body = 0; for (i = 0; i < system->N; ++i) { *est_3body += SQR(system->my_atoms[i].num_bonds); - *total_bonds += system->my_atoms[i].num_bonds; + total_bonds_big += system->my_atoms[i].num_bonds; } - *total_bonds = (int)(MAX(*total_bonds * safezone, mincap*MIN_BONDS)); + total_bonds_big = (int)(MAX(total_bonds_big * safezone, mincap*MIN_BONDS)); + + auto error = system->error_ptr; + if (total_bonds_big > MAXSMALLINT) + error->one(FLERR,"Too many bonds in pair reaxff"); + + *total_bonds = total_bonds_big; if (system->omp_active) for (i = 0; i < bonds->num_intrs; ++i) From 6fd022695aa071dc4a6462b1e934f935b54e4aed Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 29 Aug 2024 14:23:49 -0600 Subject: [PATCH 164/326] Tweak error message --- src/KOKKOS/fix_qeq_reaxff_kokkos.cpp | 2 +- src/QEQ/fix_qeq.cpp | 2 +- src/REAXFF/fix_qeq_reaxff.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp index 7fe0285aec..6527ed9314 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp @@ -324,7 +324,7 @@ void FixQEqReaxFFKokkos::allocate_matrix() Kokkos::parallel_reduce(nn,neigh_functor,m_cap_big); } if (m_cap_big > MAXSMALLINT) - error->one(FLERR,"Number of neighbors too large in fix qeq/reaxff"); + error->one(FLERR,"Too many neighbors in fix qeq/reaxff"); m_cap = m_cap_big; // deallocate first to reduce memory overhead diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index 7f0ac6200e..e9238c6065 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -264,7 +264,7 @@ void FixQEq::allocate_matrix() } bigint m_cap_big = MAX((int)(m * safezone), mincap * MIN_NBRS); if (m_cap_big > MAXSMALLINT) - error->one(FLERR,"Number of neighbors too large in fix qeq/reaxff"); + error->one(FLERR,"Too many neighbors in fix qeq"); m_cap = m_cap_big; H.n = n_cap; diff --git a/src/REAXFF/fix_qeq_reaxff.cpp b/src/REAXFF/fix_qeq_reaxff.cpp index eaeb7f788c..29b1149773 100644 --- a/src/REAXFF/fix_qeq_reaxff.cpp +++ b/src/REAXFF/fix_qeq_reaxff.cpp @@ -363,7 +363,7 @@ void FixQEqReaxFF::allocate_matrix() } bigint m_cap_big = MAX((int)(m * safezone), mincap * REAX_MIN_NBRS); if (m_cap_big > MAXSMALLINT) - error->one(FLERR,"Number of neighbors too large in fix qeq/reaxff"); + error->one(FLERR,"Too many neighbors in fix qeq/reaxff"); m_cap = m_cap_big; H.n = n_cap; From 7a9f0cd60d5262665d92c546052485500f84f096 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 29 Aug 2024 14:40:50 -0600 Subject: [PATCH 165/326] Fix potential overflow in Kokkos neighbor counting --- src/KOKKOS/kokkos.cpp | 4 ++-- src/KOKKOS/kokkos.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index f4ba967c9a..8019925c6f 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -638,10 +638,10 @@ void KokkosLMP::accelerator(int narg, char **arg) called by Finish ------------------------------------------------------------------------- */ -int KokkosLMP::neigh_count(int m) +bigint KokkosLMP::neigh_count(int m) { int inum = 0; - int nneigh = 0; + bigint nneigh = 0; ArrayTypes::t_int_1d h_ilist; ArrayTypes::t_int_1d h_numneigh; diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h index 748aff7f83..419de62dec 100644 --- a/src/KOKKOS/kokkos.h +++ b/src/KOKKOS/kokkos.h @@ -64,7 +64,7 @@ class KokkosLMP : protected Pointers { static void initialize(const Kokkos::InitializationSettings&, Error *); static void finalize(); void accelerator(int, char **); - int neigh_count(int); + bigint neigh_count(int); template int need_dup(int qeq_flag = 0) From 4aca808da69757c0f7bc2bbb05191587a7f7465d Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 29 Aug 2024 17:40:38 -0600 Subject: [PATCH 166/326] Casts need to be bigint --- src/QEQ/fix_qeq.cpp | 2 +- src/REAXFF/fix_qeq_reaxff.cpp | 2 +- src/REAXFF/reaxff_allocate.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index e9238c6065..52ab20c9e1 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -262,7 +262,7 @@ void FixQEq::allocate_matrix() i = ilist[ii]; m += numneigh[i]; } - bigint m_cap_big = MAX((int)(m * safezone), mincap * MIN_NBRS); + bigint m_cap_big = (bigint)MAX(m * safezone, mincap * MIN_NBRS); if (m_cap_big > MAXSMALLINT) error->one(FLERR,"Too many neighbors in fix qeq"); m_cap = m_cap_big; diff --git a/src/REAXFF/fix_qeq_reaxff.cpp b/src/REAXFF/fix_qeq_reaxff.cpp index 29b1149773..adaf5be031 100644 --- a/src/REAXFF/fix_qeq_reaxff.cpp +++ b/src/REAXFF/fix_qeq_reaxff.cpp @@ -361,7 +361,7 @@ void FixQEqReaxFF::allocate_matrix() i = ilist[ii]; m += numneigh[i]; } - bigint m_cap_big = MAX((int)(m * safezone), mincap * REAX_MIN_NBRS); + bigint m_cap_big = (bigint)MAX(m * safezone, mincap * REAX_MIN_NBRS); if (m_cap_big > MAXSMALLINT) error->one(FLERR,"Too many neighbors in fix qeq/reaxff"); m_cap = m_cap_big; diff --git a/src/REAXFF/reaxff_allocate.cpp b/src/REAXFF/reaxff_allocate.cpp index 04940064f0..9e125bea05 100644 --- a/src/REAXFF/reaxff_allocate.cpp +++ b/src/REAXFF/reaxff_allocate.cpp @@ -179,7 +179,7 @@ namespace ReaxFF { if ((system->my_atoms[i].Hindex) >= 0) { total_hbonds_big += system->my_atoms[i].num_hbonds; } - total_hbonds_big = (int)(MAX(total_hbonds_big*saferzone, mincap*system->minhbonds)); + total_hbonds_big = (LAMMPS_NS::bigint)(MAX(total_hbonds_big*saferzone, mincap*system->minhbonds)); auto error = system->error_ptr; if (total_hbonds_big > MAXSMALLINT) @@ -208,7 +208,7 @@ namespace ReaxFF { *est_3body += SQR(system->my_atoms[i].num_bonds); total_bonds_big += system->my_atoms[i].num_bonds; } - total_bonds_big = (int)(MAX(total_bonds_big * safezone, mincap*MIN_BONDS)); + total_bonds_big = (LAMMPS_NS::bigint)(MAX(total_bonds_big * safezone, mincap*MIN_BONDS)); auto error = system->error_ptr; if (total_bonds_big > MAXSMALLINT) From 02f16251d41720a6477d211511aa6afc5da81715 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 29 Aug 2024 22:09:11 -0400 Subject: [PATCH 167/326] flag development version --- src/version.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/version.h b/src/version.h index 7ef4ade45e..9c382b3768 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1,2 @@ #define LAMMPS_VERSION "29 Aug 2024" +#define LAMMPS_UPDATE "Development" From 6b1aec981e1663184e5ad847ff5df9c18e8638c2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 29 Aug 2024 22:33:40 -0400 Subject: [PATCH 168/326] exceptions are always enabled now --- tools/lammps-gui/CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 1dfd8f451d..46f36cdb13 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -86,9 +86,7 @@ else() add_compile_options(/wd4244) add_compile_options(/wd4267) add_compile_options(/wd4250) - if(LAMMPS_EXCEPTIONS) - add_compile_options(/EHsc) - endif() + add_compile_options(/EHsc) endif() add_compile_definitions(_CRT_SECURE_NO_WARNINGS) endif() From f3f69da328a7a75597894447ffbce59a3c102171 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 10:29:41 -0400 Subject: [PATCH 169/326] expand tests on properties including custom properties --- .../c-library/test_library_properties.cpp | 84 +++++++++++++++++-- 1 file changed, 75 insertions(+), 9 deletions(-) diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 3d0eeef5ea..1d27075ada 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -49,6 +49,7 @@ protected: if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); } + void TearDown() override { ::testing::internal::CaptureStdout(); @@ -470,9 +471,9 @@ TEST_F(LibraryProperties, global) EXPECT_EQ(lammps_extract_global_datatype(lmp, "xlattice"), LAMMPS_DOUBLE); EXPECT_EQ(lammps_extract_global_datatype(lmp, "ylattice"), LAMMPS_DOUBLE); EXPECT_EQ(lammps_extract_global_datatype(lmp, "zlattice"), LAMMPS_DOUBLE); - auto *xlattice = (double *)lammps_extract_global(lmp, "xlattice"); - auto *ylattice = (double *)lammps_extract_global(lmp, "ylattice"); - auto *zlattice = (double *)lammps_extract_global(lmp, "zlattice"); + auto *xlattice = (double *)lammps_extract_global(lmp, "xlattice"); + auto *ylattice = (double *)lammps_extract_global(lmp, "ylattice"); + auto *zlattice = (double *)lammps_extract_global(lmp, "zlattice"); EXPECT_NE(xlattice, nullptr); EXPECT_NE(ylattice, nullptr); EXPECT_NE(zlattice, nullptr); @@ -484,9 +485,9 @@ TEST_F(LibraryProperties, global) lammps_command(lmp, "units real"); lammps_command(lmp, "lattice fcc 2.0"); if (!verbose) ::testing::internal::GetCapturedStdout(); - xlattice = (double *)lammps_extract_global(lmp, "xlattice"); - ylattice = (double *)lammps_extract_global(lmp, "ylattice"); - zlattice = (double *)lammps_extract_global(lmp, "zlattice"); + xlattice = (double *)lammps_extract_global(lmp, "xlattice"); + ylattice = (double *)lammps_extract_global(lmp, "ylattice"); + zlattice = (double *)lammps_extract_global(lmp, "zlattice"); EXPECT_NE(xlattice, nullptr); EXPECT_NE(ylattice, nullptr); EXPECT_NE(zlattice, nullptr); @@ -695,10 +696,8 @@ class AtomProperties : public ::testing::Test { protected: void *lmp; - AtomProperties() = default; - ; + AtomProperties() = default; ~AtomProperties() override = default; - ; void SetUp() override { @@ -713,11 +712,26 @@ protected: if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); ::testing::internal::CaptureStdout(); + lammps_command(lmp, "fix props all property/atom i_one i2_two 2 d_three d2_four 2"); + lammps_command(lmp, "fix rmass all property/atom mol q rmass ghost yes"); lammps_command(lmp, "region box block 0 2 0 2 0 2"); lammps_command(lmp, "create_box 1 box"); lammps_command(lmp, "mass 1 3.0"); lammps_command(lmp, "create_atoms 1 single 1.0 1.0 1.5"); lammps_command(lmp, "create_atoms 1 single 0.2 0.1 0.1"); + lammps_command(lmp, "set group all mass 2.0"); + lammps_command(lmp, "set atom 1 charge -1"); + lammps_command(lmp, "set atom 2 charge 1"); + lammps_command(lmp, "set atom 1 mol 2"); + lammps_command(lmp, "set atom 2 mol 1"); + lammps_command(lmp, "set atom 1 i_one -3"); + lammps_command(lmp, "set atom 2 i_one 3"); + lammps_command(lmp, "set atom 1 d_three -1.3"); + lammps_command(lmp, "set atom 2 d_three 3.5"); + lammps_command(lmp, "set atom 1 i_two[1] -3"); + lammps_command(lmp, "set atom 2 i_two[2] 3"); + lammps_command(lmp, "set atom * d_four[1] -1.3"); + lammps_command(lmp, "set atom * d_four[2] 3.5"); output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; } @@ -743,6 +757,29 @@ TEST_F(AtomProperties, mass) auto *mass = (double *)lammps_extract_atom(lmp, "mass"); ASSERT_NE(mass, nullptr); ASSERT_DOUBLE_EQ(mass[1], 3.0); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "rmass"), LAMMPS_DOUBLE); + mass = (double *)lammps_extract_atom(lmp, "rmass"); + ASSERT_NE(mass, nullptr); + ASSERT_DOUBLE_EQ(mass[0], 2.0); + ASSERT_DOUBLE_EQ(mass[1], 2.0); +} + +TEST_F(AtomProperties, charge) +{ + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "q"), LAMMPS_DOUBLE); + auto *charge = (double *)lammps_extract_atom(lmp, "q"); + ASSERT_NE(charge, nullptr); + ASSERT_DOUBLE_EQ(charge[0], -1.0); + ASSERT_DOUBLE_EQ(charge[1], 1.0); +} + +TEST_F(AtomProperties, molecule) +{ + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "molecule"), LAMMPS_TAGINT); + auto *molecule = (tagint *)lammps_extract_atom(lmp, "molecule"); + ASSERT_NE(molecule, nullptr); + ASSERT_EQ(molecule[0], 2); + ASSERT_EQ(molecule[1], 1); } TEST_F(AtomProperties, id) @@ -776,6 +813,35 @@ TEST_F(AtomProperties, position) EXPECT_DOUBLE_EQ(x[1][2], 0.1); } +TEST_F(AtomProperties, custom) +{ + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "i_one"), LAMMPS_INT); + auto *one = (int *)lammps_extract_atom(lmp, "i_one"); + ASSERT_NE(one, nullptr); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "i2_two"), LAMMPS_INT_2D); + auto **two = (int **)lammps_extract_atom(lmp, "i2_two"); + ASSERT_NE(two, nullptr); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "d_three"), LAMMPS_DOUBLE); + auto *three = (double *)lammps_extract_atom(lmp, "d_three"); + ASSERT_NE(three, nullptr); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "d2_four"), LAMMPS_DOUBLE_2D); + auto **four = (double **)lammps_extract_atom(lmp, "d2_four"); + ASSERT_NE(four, nullptr); + + EXPECT_EQ(one[0], -3); + EXPECT_EQ(one[1], 3); + EXPECT_EQ(two[0][0], -3); + EXPECT_EQ(two[0][1], 0); + EXPECT_EQ(two[1][0], 0); + EXPECT_EQ(two[1][1], 3); + EXPECT_DOUBLE_EQ(three[0], -1.3); + EXPECT_DOUBLE_EQ(three[1], 3.5); + EXPECT_DOUBLE_EQ(four[0][0], -1.3); + EXPECT_DOUBLE_EQ(four[0][1], 3.5); + EXPECT_DOUBLE_EQ(four[1][0], -1.3); + EXPECT_DOUBLE_EQ(four[1][1], 3.5); +} + TEST(SystemSettings, kokkos) { if (!lammps_config_has_package("KOKKOS")) GTEST_SKIP(); From e921af8efa934731edeadb41f30ac283341bc3e3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 10:30:04 -0400 Subject: [PATCH 170/326] fix bug where custom property dimension was not reported --- src/atom.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/atom.cpp b/src/atom.cpp index 52cc2c9bc9..4151074a40 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -3248,14 +3248,16 @@ int Atom::extract_datatype(const char *name) if (!array) index = find_custom(&name[2],flag,cols); else index = find_custom(&name[3],flag,cols); + // consistency checks if (index < 0) return -1; if (which != flag) return -1; if ((!array && cols) || (array && !cols)) return -1; - if (which == 0) return LAMMPS_INT; - else return LAMMPS_DOUBLE; + if (!which && !array) return LAMMPS_INT; + if (which && !array) return LAMMPS_DOUBLE; + if (!which && array) return LAMMPS_INT_2D; + if (which && array) return LAMMPS_DOUBLE_2D; } - return -1; } From d9e6dff93b0bf8a4b6d6ac3f5925cf411186390f Mon Sep 17 00:00:00 2001 From: cjknight Date: Fri, 30 Aug 2024 14:05:36 -0500 Subject: [PATCH 171/326] cleanup --- src/KOKKOS/fft3d_kokkos.cpp | 19 +++++++------------ src/KOKKOS/fft3d_kokkos.h | 2 ++ src/KOKKOS/fftdata_kokkos.h | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index e555cfeabb..8256c5f4ee 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -155,14 +155,12 @@ public: KOKKOS_INLINE_FUNCTION void operator() (const int &i) const { -#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) +#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) || defined(FFT_KOKKOS_MKL_GPU) FFT_SCALAR* out_ptr = (FFT_SCALAR *)(d_out.data()+i); *(out_ptr++) *= norm; *(out_ptr++) *= norm; #elif defined(FFT_KOKKOS_MKL) d_out(i) *= norm; -#elif defined(FFT_KOKKOS_MKL_GPU) - d_out(i) *= norm; #else // FFT_KOKKOS_KISS d_out(i).re *= norm; d_out(i).im *= norm; @@ -635,24 +633,21 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl sycl::queue queue = LMPDeviceType().sycl_queue(); // is this the correct queue? plan->desc_fast = new descriptor_t (nfast); - plan->desc_fast->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nfast)); plan->desc_fast->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nfast); - plan->desc_fast->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nfast); - plan->desc_fast->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nfast); + plan->desc_fast->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, plan->length1); + plan->desc_fast->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, plan->length1); plan->desc_fast->commit(queue); plan->desc_mid = new descriptor_t (nmid); - plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nmid)); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total2/nmid); - plan->desc_mid->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nmid); - plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nmid); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, plan->length2); + plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, plan->length2); plan->desc_mid->commit(queue); plan->desc_slow = new descriptor_t (nslow); - plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BACKWARD_SCALE, (FFT_SCALAR)(1.0/nslow)); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total3/nslow); - plan->desc_slow->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, nslow); - plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, nslow); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, plan->length3); + plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, plan->length3); plan->desc_slow->commit(queue); #elif defined(FFT_KOKKOS_MKL) diff --git a/src/KOKKOS/fft3d_kokkos.h b/src/KOKKOS/fft3d_kokkos.h index 69217171f5..427e33ad73 100644 --- a/src/KOKKOS/fft3d_kokkos.h +++ b/src/KOKKOS/fft3d_kokkos.h @@ -21,11 +21,13 @@ namespace LAMMPS_NS { +#if defined(FFT_KOKKOS_MKL_GPU) #ifdef FFT_SINGLE typedef oneapi::mkl::dft::descriptor descriptor_t; #else typedef oneapi::mkl::dft::descriptor descriptor_t; #endif +#endif // ------------------------------------------------------------------------- diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index 90d917c093..f11e7f1509 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -110,7 +110,7 @@ #if defined(FFT_KOKKOS_MKL_GPU) #include "CL/sycl.hpp" - #include "oneapi/mkl/dfti.hpp" // conflict between PRECISION macro in dfti.hpp and kokkos_type.h + #include "oneapi/mkl/dfti.hpp" #include "mkl.h" #if defined(FFT_SINGLE) typedef float FFT_KOKKOS_DATA; From 9a1157083668f10a5659d7e90d8e2ee7cff3aa8e Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Fri, 30 Aug 2024 19:08:35 +0000 Subject: [PATCH 172/326] cleanup --- src/MAKE/MACHINES/Makefile.aurora | 2 +- src/MAKE/MACHINES/Makefile.aurora_kokkos | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MAKE/MACHINES/Makefile.aurora b/src/MAKE/MACHINES/Makefile.aurora index 78c08b8e95..7c656e6379 100644 --- a/src/MAKE/MACHINES/Makefile.aurora +++ b/src/MAKE/MACHINES/Makefile.aurora @@ -1,4 +1,4 @@ -# aurora_kokkos = KOKKOS/SYCL, Intel Data Center Max (Ponte Vecchio) GPU, Intel Sapphire Rapids CPU, mpicxx compiler +# aurora = Intel Sapphire Rapids CPU, mpicxx compiler (compatible w/ GPU package) SHELL = /bin/sh diff --git a/src/MAKE/MACHINES/Makefile.aurora_kokkos b/src/MAKE/MACHINES/Makefile.aurora_kokkos index a9000bcfd6..f164188dc0 100644 --- a/src/MAKE/MACHINES/Makefile.aurora_kokkos +++ b/src/MAKE/MACHINES/Makefile.aurora_kokkos @@ -54,7 +54,7 @@ MPI_LIB = # PATH = path for FFT library # LIB = name of FFT library -FFT_INC = -DFFT_KOKKOS_MKL_GPU -I${MKL_ROOT}/include +FFT_INC = -DFFT_KOKKOS_MKL_GPU -DFFT_SINGLE -I${MKL_ROOT}/include FFT_PATH = -L${MKL_ROOT}/lib -L${TBB_ROOT}/lib/intel64/gcc4.8 FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -ltbb From 1fe905d8a229e18c18c34e18a87a69714b373226 Mon Sep 17 00:00:00 2001 From: cjknight Date: Fri, 30 Aug 2024 15:15:18 -0500 Subject: [PATCH 173/326] update types --- src/KOKKOS/fft3d_kokkos.cpp | 24 ++++++++++++------------ src/KOKKOS/fftdata_kokkos.h | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 8256c5f4ee..09164731a3 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -227,9 +227,9 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, #if defined(FFT_KOKKOS_MKL_GPU) if (flag == 1) - oneapi::mkl::dft::compute_forward(*(plan->desc_fast), d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_fast), (FFT_SCALAR*)d_data.data()); else - oneapi::mkl::dft::compute_backward(*(plan->desc_fast), d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_fast), (FFT_SCALAR*)d_data.data()); #elif defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_fast,d_data.data()); @@ -278,9 +278,9 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, #if defined(FFT_KOKKOS_MKL_GPU) if (flag == 1) - oneapi::mkl::dft::compute_forward(*(plan->desc_mid), d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_mid), (FFT_SCALAR*)d_data.data()); else - oneapi::mkl::dft::compute_backward(*(plan->desc_mid), d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_mid), (FFT_SCALAR*)d_data.data()); #elif defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_mid,d_data.data()); @@ -327,9 +327,9 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, #if defined(FFT_KOKKOS_MKL_GPU) if (flag == 1) - oneapi::mkl::dft::compute_forward(*(plan->desc_slow), d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_slow), (FFT_SCALAR*)d_data.data()); else - oneapi::mkl::dft::compute_backward(*(plan->desc_slow), d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_slow), (FFT_SCALAR*)d_data.data()); #elif defined(FFT_KOKKOS_MKL) if (flag == 1) DftiComputeForward(plan->handle_slow,d_data.data()); @@ -914,13 +914,13 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ #if defined(FFT_KOKKOS_MKL_GPU) if (flag == -1) { - oneapi::mkl::dft::compute_forward(*(plan->desc_fast), d_data.data()); - oneapi::mkl::dft::compute_forward(*(plan->desc_mid), d_data.data()); - oneapi::mkl::dft::compute_forward(*(plan->desc_slow), d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_fast), (FFT_SCALAR*)d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_mid), (FFT_SCALAR*)d_data.data()); + oneapi::mkl::dft::compute_forward(*(plan->desc_slow), (FFT_SCALAR*)d_data.data()); } else { - oneapi::mkl::dft::compute_backward(*(plan->desc_fast), d_data.data()); - oneapi::mkl::dft::compute_backward(*(plan->desc_mid), d_data.data()); - oneapi::mkl::dft::compute_backward(*(plan->desc_slow), d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_fast), (FFT_SCALAR*)d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_mid), (FFT_SCALAR*)d_data.data()); + oneapi::mkl::dft::compute_backward(*(plan->desc_slow), (FFT_SCALAR*)d_data.data()); } #elif defined(FFT_KOKKOS_MKL) if (flag == -1) { diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index f11e7f1509..a967be5338 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -113,10 +113,10 @@ #include "oneapi/mkl/dfti.hpp" #include "mkl.h" #if defined(FFT_SINGLE) - typedef float FFT_KOKKOS_DATA; + typedef std::complex FFT_KOKKOS_DATA; #define FFT_KOKKOS_MKL_PREC DFTI_SINGLE #else - typedef double FFT_KOKKOS_DATA; + typedef std::complex FFT_KOKKOS_DATA; #define FFT_KOKKOS_MKL_PREC DFTI_DOUBLE #endif #elif defined(FFT_KOKKOS_MKL) From 9d9e591b542f104fdccaca51a4378ec32ea55491 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 22:50:42 -0400 Subject: [PATCH 174/326] first try at implementing lammps_extract_atom_size() --- doc/src/Library_atoms.rst | 6 + examples/COUPLE/plugin/liblammpsplugin.c | 1 + examples/COUPLE/plugin/liblammpsplugin.h | 1 + fortran/lammps.f90 | 24 +- python/lammps/core.py | 68 +++-- python/lammps/numpy_wrapper.py | 69 +---- src/atom.cpp | 259 +++++++++++++++++- src/atom.h | 1 + src/library.cpp | 62 ++++- src/library.h | 1 + tools/swig/lammps.i | 2 + .../c-library/test_library_properties.cpp | 19 ++ unittest/python/python-numpy.py | 31 --- 13 files changed, 411 insertions(+), 133 deletions(-) diff --git a/doc/src/Library_atoms.rst b/doc/src/Library_atoms.rst index cebd8f0c2e..5ebfe04b37 100644 --- a/doc/src/Library_atoms.rst +++ b/doc/src/Library_atoms.rst @@ -4,6 +4,7 @@ Per-atom properties This section documents the following functions: - :cpp:func:`lammps_extract_atom_datatype` +- :cpp:func:`lammps_extract_atom_size` - :cpp:func:`lammps_extract_atom` ----------------------- @@ -13,6 +14,11 @@ This section documents the following functions: ----------------------- +.. doxygenfunction:: lammps_extract_atom_size + :project: progguide + +----------------------- + .. doxygenfunction:: lammps_extract_atom :project: progguide diff --git a/examples/COUPLE/plugin/liblammpsplugin.c b/examples/COUPLE/plugin/liblammpsplugin.c index 50ad2f5192..c8a38c21e4 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.c +++ b/examples/COUPLE/plugin/liblammpsplugin.c @@ -105,6 +105,7 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib) ADDSYM(map_atom); ADDSYM(extract_atom_datatype); + ADDSYM(extract_atom_size); ADDSYM(extract_atom); ADDSYM(extract_compute); diff --git a/examples/COUPLE/plugin/liblammpsplugin.h b/examples/COUPLE/plugin/liblammpsplugin.h index 556718816c..b444f75215 100644 --- a/examples/COUPLE/plugin/liblammpsplugin.h +++ b/examples/COUPLE/plugin/liblammpsplugin.h @@ -151,6 +151,7 @@ struct _liblammpsplugin { int (*map_atom)(void *, const void *); int (*extract_atom_datatype)(void *, const char *); + int (*extract_atom_size)(void *, const char *, int); void *(*extract_atom)(void *, const char *); void *(*extract_compute)(void *, const char *, int, int); diff --git a/fortran/lammps.f90 b/fortran/lammps.f90 index 1617891b92..9688dae638 100644 --- a/fortran/lammps.f90 +++ b/fortran/lammps.f90 @@ -542,6 +542,14 @@ MODULE LIBLAMMPS INTEGER(c_int) :: lammps_extract_atom_datatype END FUNCTION lammps_extract_atom_datatype + FUNCTION lammps_extract_atom_size(handle, name, dtype) BIND(C) + IMPORT :: c_ptr, c_int + IMPLICIT NONE + TYPE(c_ptr), INTENT(IN), VALUE :: handle, name + INTEGER(c_int), INTENT(IN), VALUE :: dtype + INTEGER(c_int) :: lammps_extract_atom_size + END FUNCTION lammps_extract_atom_size + FUNCTION lammps_extract_atom(handle, name) BIND(C) IMPORT :: c_ptr IMPLICIT NONE @@ -1461,21 +1469,12 @@ CONTAINS ntypes = lmp_extract_setting(self, 'ntypes') Cname = f2c_string(name) datatype = lammps_extract_atom_datatype(self%handle, Cname) + ! Fortran and C/C++ have rows and columns switched + ncols = lammps_extract_atom_size(self%handle, Cname, LMP_SIZE_ROWS) + nrows = lammps_extract_atom_size(self%handle, Cname, LMP_SIZE_COLS) Cptr = lammps_extract_atom(self%handle, Cname) CALL lammps_free(Cname) - SELECT CASE (name) - CASE ('mass') - ncols = ntypes + 1 - nrows = 1 - CASE ('x','v','f','mu','omega','torque','angmom') - ncols = nmax - nrows = 3 - CASE DEFAULT - ncols = nmax - nrows = 1 - END SELECT - peratom_data%lammps_instance => self SELECT CASE (datatype) CASE (LAMMPS_INT) @@ -1486,6 +1485,7 @@ CONTAINS CALL C_F_POINTER(Cptr, peratom_data%i64_vec, [ncols]) CASE (LAMMPS_DOUBLE) peratom_data%datatype = DATA_DOUBLE_1D + ! The mass array is allocated from 0, but only used from 1. We also want to use it from 1. IF (name == 'mass') THEN CALL C_F_POINTER(Cptr, dummy, [ncols]) peratom_data%r64_vec(0:) => dummy diff --git a/python/lammps/core.py b/python/lammps/core.py index 9e6329fe3c..b1907888e3 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -318,6 +318,8 @@ class lammps(object): self.lib.lammps_extract_atom.argtypes = [c_void_p, c_char_p] self.lib.lammps_extract_atom_datatype.argtypes = [c_void_p, c_char_p] self.lib.lammps_extract_atom_datatype.restype = c_int + self.lib.lammps_extract_atom_size.argtypes = [c_void_p, c_char_p, c_int] + self.lib.lammps_extract_atom_size.restype = c_int self.lib.lammps_extract_fix.argtypes = [c_void_p, c_char_p, c_int, c_int, c_int, c_int] @@ -1070,31 +1072,59 @@ class lammps(object): else: return None return self.lib.lammps_extract_atom_datatype(self.lmp, newname) + # ------------------------------------------------------------------------- + # extract per-atom info datatype + + def extract_atom_size(self, name, dtype): + """Retrieve per-atom property dimensions from LAMMPS + + This is a wrapper around the :cpp:func:`lammps_extract_atom_size` + function of the C-library interface. Its documentation includes a + list of the supported keywords. + This function returns ``None`` if the keyword is not + recognized. Otherwise it will return an integer value with the size + of the per-atom vector or array. If *name* corresponds to a per-atom + array, the *dtype* keyword must be either LMP_SIZE_ROWS or LMP_SIZE_COLS + from the :ref:`type ` constants defined in the + :py:mod:`lammps` module. The return value is the requested size. + If *name* corresponds to a per-atom vector the *dtype* keyword is ignored. + + :param name: name of the property + :type name: string + :param type: either LMP_SIZE_ROWS or LMP_SIZE_COLS for arrays, otherwise ignored + :type type: int + :return: data type of per-atom property (see :ref:`py_datatype_constants`) + :rtype: int + """ + if name: newname = name.encode() + else: return None + return self.lib.lammps_extract_atom_size(self.lmp, newname, dtype) + # ------------------------------------------------------------------------- # extract per-atom info def extract_atom(self, name, dtype=LAMMPS_AUTODETECT): """Retrieve per-atom properties from LAMMPS - This is a wrapper around the :cpp:func:`lammps_extract_atom` - function of the C-library interface. Its documentation includes a - list of the supported keywords and their data types. - Since Python needs to know the data type to be able to interpret - the result, by default, this function will try to auto-detect the data type - by asking the library. You can also force a specific data type by setting ``dtype`` - to one of the :ref:`data type ` constants defined in the - :py:mod:`lammps` module. - This function returns ``None`` if either the keyword is not - recognized, or an invalid data type constant is used. + This is a wrapper around the :cpp:func:`lammps_extract_atom` function of the + C-library interface. Its documentation includes a list of the supported + keywords and their data types. Since Python needs to know the data type to + be able to interpret the result, by default, this function will try to + auto-detect the data type by asking the library. You can also force a + specific data type by setting ``dtype`` to one of the :ref:`data type + ` constants defined in the :py:mod:`lammps` module. + This function returns ``None`` if either the keyword is not recognized, or + an invalid data type constant is used. .. note:: - While the returned arrays of per-atom data are dimensioned - for the range [0:nmax] - as is the underlying storage - - the data is usually only valid for the range of [0:nlocal], - unless the property of interest is also updated for ghost - atoms. In some cases, this depends on a LAMMPS setting, see - for example :doc:`comm_modify vel yes `. + While the returned vectors or arrays of per-atom data are dimensioned for + the range [0:nmax] - as is the underlying storage - the data is usually + only valid for the range of [0:nlocal], unless the property of interest + is also updated for ghost atoms. In some cases, this depends on a LAMMPS + setting, see for example :doc:`comm_modify vel yes `. + The actual size can be determined by calling + py:meth:`extract_atom_size() `. :param name: name of the property :type name: string @@ -1105,6 +1135,7 @@ class lammps(object): ctypes.POINTER(ctypes.c_int64), ctypes.POINTER(ctypes.POINTER(ctypes.c_int64)), ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.POINTER(ctypes.c_double)), or NoneType + """ if dtype == LAMMPS_AUTODETECT: dtype = self.extract_atom_datatype(name) @@ -2522,3 +2553,8 @@ class lammps(object): newcomputeid = computeid.encode() idx = self.lib.lammps_find_compute_neighlist(self.lmp, newcomputeid, reqid) return idx + +# Local Variables: +# fill-column: 80 +# End: + diff --git a/python/lammps/numpy_wrapper.py b/python/lammps/numpy_wrapper.py index 9ab7f538de..a980a972fd 100644 --- a/python/lammps/numpy_wrapper.py +++ b/python/lammps/numpy_wrapper.py @@ -54,7 +54,8 @@ class numpy_wrapper: # ------------------------------------------------------------------------- - def extract_atom(self, name, dtype=LAMMPS_AUTODETECT, nelem=LAMMPS_AUTODETECT, dim=LAMMPS_AUTODETECT): + def extract_atom(self, name, dtype=LAMMPS_AUTODETECT, nelem=LAMMPS_AUTODETECT, + dim=LAMMPS_AUTODETECT): """Retrieve per-atom properties from LAMMPS as NumPy arrays This is a wrapper around the :py:meth:`lammps.extract_atom()` method. @@ -63,16 +64,16 @@ class numpy_wrapper: .. note:: - The returned arrays of per-atom data are by default dimensioned - for the range [0:nlocal] since that data is *always* valid. The - underlying storage for the data, however, is typically allocated - for the range of [0:nmax]. Whether there is valid data in the range - [nlocal:nlocal+nghost] depends on whether the property of interest - is also updated for ghost atoms. This is not often the case. In - some cases, it depends on a LAMMPS setting, see for example - :doc:`comm_modify vel yes `. By using the optional - *nelem* parameter the size of the returned NumPy can be overridden. - There is no check whether the number of elements chosen is valid. + The returned vectors or arrays of per-atom data are dimensioned + according to the return value of :py:meth:`lammps.extract_atom_size()`. + Except for the "mass" property, the underlying storage will always be + dimensioned for the range [0:nmax]. The actual usable data may be + only in the range [0:nlocal] or [0:nlocal][0:dim]. Whether there is + valid data in the range [nlocal:nlocal+nghost] or [nlocal:local+nghost][0:dim] + depends on whether the property of interest is also updated for ghost atoms. + Also the value of *dim* depends on the value of *name*. By using the optional + *nelem* and *dim* parameters the dimensions of the returned NumPy array can + be overridden. There is no check whether the number of elements chosen is valid. :param name: name of the property :type name: string @@ -89,21 +90,10 @@ class numpy_wrapper: dtype = self.lmp.extract_atom_datatype(name) if nelem == LAMMPS_AUTODETECT: - if name == "mass": - nelem = self.lmp.extract_global("ntypes") + 1 - else: - nelem = self.lmp.extract_global("nlocal") + nelem = self.lmp.extract_atom_size(name, LMP_SIZE_ROWS) if dim == LAMMPS_AUTODETECT: if dtype in (LAMMPS_INT_2D, LAMMPS_DOUBLE_2D, LAMMPS_INT64_2D): - # TODO add other fields - if name in ("x", "v", "f", "x0","omega", "angmom", "torque", "csforce", "vforce", "vest"): - dim = 3 - elif name == "smd_data_9": - dim = 9 - elif name == "smd_stress": - dim = 6 - else: - dim = 2 + dim = self.lmp.extract_atom_size(name, LMP_SIZE_COLS) else: dim = 1 @@ -119,37 +109,6 @@ class numpy_wrapper: # ------------------------------------------------------------------------- - def extract_atom_iarray(self, name, nelem, dim=1): - warnings.warn("deprecated, use extract_atom instead", DeprecationWarning) - - if name in ['id', 'molecule']: - c_int_type = self.lmp.c_tagint - elif name in ['image']: - c_int_type = self.lmp.c_imageint - else: - c_int_type = c_int - - if dim == 1: - raw_ptr = self.lmp.extract_atom(name, LAMMPS_INT) - else: - raw_ptr = self.lmp.extract_atom(name, LAMMPS_INT_2D) - - return self.iarray(c_int_type, raw_ptr, nelem, dim) - - # ------------------------------------------------------------------------- - - def extract_atom_darray(self, name, nelem, dim=1): - warnings.warn("deprecated, use extract_atom instead", DeprecationWarning) - - if dim == 1: - raw_ptr = self.lmp.extract_atom(name, LAMMPS_DOUBLE) - else: - raw_ptr = self.lmp.extract_atom(name, LAMMPS_DOUBLE_2D) - - return self.darray(raw_ptr, nelem, dim) - - # ------------------------------------------------------------------------- - def extract_compute(self, cid, cstyle, ctype): """Retrieve data from a LAMMPS compute diff --git a/src/atom.cpp b/src/atom.cpp index 4151074a40..4a638652c7 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -2739,10 +2739,10 @@ Classes rarely need to check on ghost communication and so `find_custom` is typically preferred to this function. See :doc:`pair amoeba ` for an example where checking ghost communication is necessary. \endverbatim - * \param name Name of the property (w/o a "i_" or "d_" or "i2_" or "d2_" prefix) - * \param &flag Returns data type of property: 0 for int, 1 for double - * \param &cols Returns number of values: 0 for a single value, 1 or more for a vector of values - * \param &ghost Returns whether property is communicated to ghost atoms: 0 for no, 1 for yes + * \param name Name of the property (w/o a "i_" or "d_" or "i2_" or "d2_" prefix) + * \param &flag Returns data type of property: 0 for int, 1 for double + * \param &cols Returns number of values: 0 for a single value, 1 or more for a vector of values + * \param &ghost Returns whether property is communicated to ghost atoms: 0 for no, 1 for yes * \return index of property in the respective list of properties */ int Atom::find_custom_ghost(const char *name, int &flag, int &cols, int &ghost) @@ -2999,11 +2999,13 @@ length of the data area, and a short description. - N double values defined by fix property/atom array name *See also* - :cpp:func:`lammps_extract_atom` + :cpp:func:`lammps_extract_atom`, + :cpp:func:`lammps_extract_atom_datatype`, + :cpp:func:`lammps_extract_atom_size` \endverbatim * - * \sa extract_datatype + * \sa extract_datatype, extract_size * * \param name string with the keyword of the desired property. Typically the name of the pointer variable returned @@ -3142,7 +3144,7 @@ void *Atom::extract(const char *name) \endverbatim * - * \sa extract + * \sa extract extract_size * * \param name string with the keyword of the desired property. * \return data type constant for desired property or -1 */ @@ -3177,10 +3179,14 @@ int Atom::extract_datatype(const char *name) if (strcmp(name,"temperature") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"heatflow") == 0) return LAMMPS_DOUBLE; + // PERI package (and in part MACHDYN) + if (strcmp(name,"vfrac") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"s0") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"x0") == 0) return LAMMPS_DOUBLE_2D; + // AWPMD package (and in part EFF and ELECTRODE) + if (strcmp(name,"espin") == 0) return LAMMPS_INT; if (strcmp(name,"spin") == 0) return LAMMPS_INT; // backwards compatibility if (strcmp(name,"eradius") == 0) return LAMMPS_DOUBLE; @@ -3261,6 +3267,245 @@ int Atom::extract_datatype(const char *name) return -1; } +/** Provide vector or array size info of internal data of the Atom class + * +\verbatim embed:rst + +.. versionadded:: TBD + +\endverbatim + * + * \sa extract extract_datatype + * + * \param name string with the keyword of the desired property. + * \param type either LMP_SIZE_ROWS or LMP_SIZE_COLS for per-atom array or ignored + * \return size of the vector or size of the array for the requested dimension or -1 */ + +int Atom::extract_size(const char *name, int type) +{ + // -------------------------------------------------------------------- + // 6th customization section: customize by adding new variable name + + const auto datatype = extract_datatype(name); + const auto nall = nlocal + nghost; + const auto ghost_vel = comm->ghost_velocity; + + if ((datatype == LAMMPS_DOUBLE_2D) || (datatype == LAMMPS_INT_2D)) { + if (type == LMP_SIZE_ROWS) { + if (strcmp(name,"x") == 0) return nall; + if (strcmp(name,"v") == 0) { + if (ghost_vel) return nall; + else return nlocal; + } + if (strcmp(name,"f") == 0) return nall; + if (strcmp(name,"mu") == 0) return nall; + if (strcmp(name,"omega") == 0) { + if (ghost_vel) return nall; + else return nlocal; + } + if (strcmp(name,"angmom") == 0) { + if (ghost_vel) return nall; + else return nlocal; + } + if (strcmp(name,"torque") == 0) return nlocal; + if (strcmp(name,"quat") == 0) { + if (ghost_vel) return nall; + else return nlocal; + } + + // PERI package + + if (strcmp(name,"x0") == 0) return nall; + + // SPIN package + + if (strcmp(name,"sp") == 0) return nall; + if (strcmp(name,"fm") == 0) return nlocal; + if (strcmp(name,"fm_long") == 0) return nlocal; + + // AWPMD package + + if (strcmp(name,"cs") == 0) { + if (ghost_vel) return nall; + else return nlocal; + } + if (strcmp(name,"csforce") == 0) return nlocal; + if (strcmp(name,"vforce") == 0) return nlocal; + + // SPH package + + if (strcmp(name,"vest") == 0) return nall; + + // MACHDYN package + + if (strcmp(name, "smd_data_9") == 0) return LAMMPS_DOUBLE_2D; + if (strcmp(name, "smd_stress") == 0) return LAMMPS_DOUBLE_2D; + + } else if (type == LMP_SIZE_COLS) { + + if (strcmp(name,"x") == 0) return 3; + if (strcmp(name,"v") == 0) return 3; + if (strcmp(name,"f") == 0) return 3; + if (strcmp(name,"mu") == 0) return 4; + if (strcmp(name,"omega") == 0) return 3; + if (strcmp(name,"angmom") == 0) return 3; + if (strcmp(name,"torque") == 0) return 3; + if (strcmp(name,"quat") == 0) return 4; + + // PERI package + + if (strcmp(name,"x0") == 0) return 3; + + // SPIN package + + if (strcmp(name,"sp") == 0) return 4; + if (strcmp(name,"fm") == 0) return 3; + if (strcmp(name,"fm_long") == 0) return 3; + + // AWPMD package + + if (strcmp(name,"cs") == 0) return 2; + if (strcmp(name,"csforce") == 0) return 2; + if (strcmp(name,"vforce") == 0) return 3; + + // SPH package + + if (strcmp(name,"vest") == 0) return 3; + + // MACHDYN package + + if (strcmp(name, "smd_data_9") == 0) return 9; + if (strcmp(name, "smd_stress") == 0) return 6; + } + + // custom arrays + + if (utils::strmatch(name,"^[id]2_")) { + int which = 0; + if (name[0] == 'd') which = 1; + + int index,flag,cols,ghost; + index = find_custom_ghost(&name[3],flag,cols,ghost); + + // consistency checks + if (index < 0) return -1; + if (which != flag) return -1; + if (!cols) return -1; + + if (type == LMP_SIZE_ROWS) { + if (ghost) return nall; + else return nlocal; + } else if (type == LMP_SIZE_COLS) { + return cols; + } + } + } else { + + if (strcmp(name,"mass") == 0) return ntypes + 1; + + if (strcmp(name,"id") == 0) return nall; + if (strcmp(name,"type") == 0) return nall; + if (strcmp(name,"mask") == 0) return nall; + if (strcmp(name,"image") == 0) return nlocal; + if (strcmp(name,"molecule") == 0) return nall; + if (strcmp(name,"q") == 0) return nall; + if (strcmp(name,"radius") == 0) return nall; + if (strcmp(name,"rmass") == 0) return nall; + + // ASPHERE package + + if (strcmp(name,"ellipsoid") == 0) return nlocal; + + // BODY package + + if (strcmp(name,"line") == 0) return nlocal; + if (strcmp(name,"tri") == 0) return nlocal; + if (strcmp(name,"body") == 0) return nlocal; + + // PERI package (and in part MACHDYN) + + if (strcmp(name,"vfrac") == 0) return nall; + if (strcmp(name,"s0") == 0) return nall; + + // AWPMD package (and in part EFF and ELECTRODE) + + if (strcmp(name,"espin") == 0) return nall; + if (strcmp(name,"spin") == 0) return nall; // backwards compatibility + if (strcmp(name,"eradius") == 0) return nall; + if (strcmp(name,"ervel") == 0) return nlocal; + if (strcmp(name,"erforce") == 0) return nlocal; + if (strcmp(name,"ervelforce") == 0) return nlocal; + if (strcmp(name,"etag") == 0) return nall; + + // CG-DNA package + + if (strcmp(name,"id5p") == 0) return nall; + + // RHEO package + + if (strcmp(name,"temperature") == 0) return nlocal; + if (strcmp(name,"heatflow") == 0) return nlocal; + if (strcmp(name,"rheo_status") == 0) return nall; + if (strcmp(name,"conductivity") == 0) return nlocal; + if (strcmp(name,"pressure") == 0) return nlocal; + if (strcmp(name,"viscosity") == 0) return nlocal; + + // SPH package + + if (strcmp(name,"rho") == 0) return nall; + if (strcmp(name,"drho") == 0) return nlocal; + if (strcmp(name,"esph") == 0) return nall; + if (strcmp(name,"desph") == 0) return nlocal; + if (strcmp(name,"cv") == 0) return nall; + + // MACHDYN package + + if (strcmp(name, "contact_radius") == 0) return nall; + if (strcmp(name, "eff_plastic_strain") == 0) return nlocal; + if (strcmp(name, "eff_plastic_strain_rate") == 0) return nlocal; + if (strcmp(name, "damage") == 0) return nlocal; + + // DPD-REACT package + + if (strcmp(name,"dpdTheta") == 0) return nall; + + // DPD-MESO package + + if (strcmp(name,"edpd_temp") == 0) return nall; + + // DIELECTRIC package + + if (strcmp(name,"area") == 0) return nall; + if (strcmp(name,"ed") == 0) return nall; + if (strcmp(name,"em") == 0) return nall; + if (strcmp(name,"epsilon") == 0) return nall; + if (strcmp(name,"curvature") == 0) return nall; + if (strcmp(name,"q_unscaled") == 0) return nall; + + // end of customization section + // -------------------------------------------------------------------- + + // custom vectors + + if (utils::strmatch(name,"^[id]_")) { + int which = 0; + if (name[0] == 'd') which = 1; + + int index,flag,cols,ghost; + index = find_custom_ghost(&name[2],flag,cols,ghost); + + // consistency checks + if (index < 0) return -1; + if (which != flag) return -1; + if (cols) return -1; + + if (ghost) return nall; + else return nlocal; + } + } + return -1; +} + /* ---------------------------------------------------------------------- return # of bytes of allocated memory call to avec tallies per-atom vectors diff --git a/src/atom.h b/src/atom.h index bd5b352cd0..c98f06cbe8 100644 --- a/src/atom.h +++ b/src/atom.h @@ -378,6 +378,7 @@ class Atom : protected Pointers { void *extract(const char *); int extract_datatype(const char *); + int extract_size(const char *, int); inline int *get_map_array() { return map_array; }; inline int get_map_size() { return map_tag_max + 1; }; diff --git a/src/library.cpp b/src/library.cpp index 950702c420..29cec30488 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -2087,10 +2087,13 @@ int lammps_map_atom(void *handle, const void *id) .. versionadded:: 18Sep2020 -This function returns an integer that encodes the data type of the per-atom -property with the specified name. See :cpp:enum:`_LMP_DATATYPE_CONST` for valid -values. Callers of :cpp:func:`lammps_extract_atom` can use this information -to then decide how to cast the ``void *`` pointer and access the data. +This function returns an integer that encodes the data type of the +per-atom property with the specified name. See +:cpp:enum:`_LMP_DATATYPE_CONST` for valid values. Callers of +:cpp:func:`lammps_extract_atom` can use this information to decide how +to cast the ``void *`` pointer and access the data. In addition, +:cpp:func:`lammps_extract_atom_size` can be used to get information +about the vector or array dimensions. \endverbatim * @@ -2108,18 +2111,53 @@ int lammps_extract_atom_datatype(void *handle, const char *name) /* ---------------------------------------------------------------------- */ +/** Get dimension info of a LAMMPS per-atom property + * +\verbatim embed:rst + +.. versionadded:: TBD + +This function returns an integer with the size of the per-atom +property with the specified name. This allows to accurately determine +the size of the per-atom data vectors or arrays. For per-atom arrays, +the *type* argument is required to return either the number of rows or the +number of columns. It is ignored for per-atom vectors. + +Callers of :cpp:func:`lammps_extract_atom` can use this information in +combination with the result from :cpp:func:`lammps_extract_atom_datatype` +to decide how to cast the ``void *`` pointer and access the data. + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \param name string with the name of the extracted property + * \param type either LMP_SIZE_ROWS or LMP_SIZE_COLS if *name* refers + to a per-atom array otherwise ignored + * \return integer with the size of the vector or array dimension or -1 + * */ + +int lammps_extract_atom_size(void *handle, const char *name, int type) +{ + auto lmp = (LAMMPS *) handle; + return lmp->atom->extract_size(name, type); +} + +/* ---------------------------------------------------------------------- */ + /** Get pointer to a LAMMPS per-atom property. * \verbatim embed:rst -This function returns a pointer to the location of per-atom properties -(and per-atom-type properties in the case of the 'mass' keyword). -Per-atom data is distributed across sub-domains and thus MPI ranks. The -returned pointer is cast to ``void *`` and needs to be cast to a pointer -of data type that the entity represents. +This function returns a pointer to the location of per-atom properties (and +per-atom-type properties in the case of the 'mass' keyword). Per-atom data is +distributed across sub-domains and thus MPI ranks. The returned pointer is cast +to ``void *`` and needs to be cast to a pointer of data type that the entity +represents. You can use the functions :cpp:func:`lammps_extract_atom_datatype` +and :cpp:func:`lammps_extract_atom_size` to determine data type, dimensions and +sizes of the storage pointed to by the returned pointer. -A table with supported keywords is included in the documentation -of the :cpp:func:`Atom::extract() ` function. +A table with supported keywords is included in the documentation of the +:cpp:func:`Atom::extract() ` function. .. warning:: @@ -7027,5 +7065,5 @@ int lammps_python_api_version() { } // Local Variables: -// fill-column: 72 +// fill-column: 80 // End: diff --git a/src/library.h b/src/library.h index ff16aaa088..dbfd32a542 100644 --- a/src/library.h +++ b/src/library.h @@ -172,6 +172,7 @@ int lammps_map_atom(void *handle, const void *id); * ---------------------------------------------------------------------- */ int lammps_extract_atom_datatype(void *handle, const char *name); +int lammps_extract_atom_size(void *handle, const char *name, int type); void *lammps_extract_atom(void *handle, const char *name); /* ---------------------------------------------------------------------- diff --git a/tools/swig/lammps.i b/tools/swig/lammps.i index 9bef047da4..11f5a270a1 100644 --- a/tools/swig/lammps.i +++ b/tools/swig/lammps.i @@ -130,6 +130,7 @@ extern void *lammps_extract_pair(void *handle, const char *name); extern int lammps_map_atom(void *handle, const void *id); extern int lammps_extract_atom_datatype(void *handle, const char *name); +extern int lammps_extract_atom_size(void *handle, const char *name, int type); extern void *lammps_extract_atom(void *handle, const char *name); extern void *lammps_extract_compute(void *handle, const char *id, int, int); @@ -319,6 +320,7 @@ extern void *lammps_extract_pair(void *handle, const char *name); extern int lammps_map_atom(void *handle, const void *id); extern int lammps_extract_atom_datatype(void *handle, const char *name); +extern int lammps_extract_atom_size(void *handle, const char *name, int type); extern void *lammps_extract_atom(void *handle, const char *name); extern void *lammps_extract_compute(void *handle, const char *id, int, int); diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 1d27075ada..737015ccdc 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -695,6 +695,7 @@ TEST_F(LibraryProperties, has_error) class AtomProperties : public ::testing::Test { protected: void *lmp; + int ntypes, nlocal, nall; AtomProperties() = default; ~AtomProperties() override = default; @@ -732,6 +733,10 @@ protected: lammps_command(lmp, "set atom 2 i_two[2] 3"); lammps_command(lmp, "set atom * d_four[1] -1.3"); lammps_command(lmp, "set atom * d_four[2] 3.5"); + ntypes = lammps_extract_setting(lmp, "ntypes"); + nlocal = lammps_extract_setting(lmp, "nlocal"); + nall = lammps_extract_setting(lmp, "nall"); + output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; } @@ -754,10 +759,12 @@ TEST_F(AtomProperties, invalid) TEST_F(AtomProperties, mass) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "mass"), LAMMPS_DOUBLE); + EXPECT_EQ(lammps_extract_atom_size(lmp, "mass", 0), ntypes + 1); auto *mass = (double *)lammps_extract_atom(lmp, "mass"); ASSERT_NE(mass, nullptr); ASSERT_DOUBLE_EQ(mass[1], 3.0); EXPECT_EQ(lammps_extract_atom_datatype(lmp, "rmass"), LAMMPS_DOUBLE); + EXPECT_EQ(lammps_extract_atom_size(lmp, "rmass", 0), nall); mass = (double *)lammps_extract_atom(lmp, "rmass"); ASSERT_NE(mass, nullptr); ASSERT_DOUBLE_EQ(mass[0], 2.0); @@ -767,6 +774,7 @@ TEST_F(AtomProperties, mass) TEST_F(AtomProperties, charge) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "q"), LAMMPS_DOUBLE); + EXPECT_EQ(lammps_extract_atom_size(lmp, "rmass", 0), nall); auto *charge = (double *)lammps_extract_atom(lmp, "q"); ASSERT_NE(charge, nullptr); ASSERT_DOUBLE_EQ(charge[0], -1.0); @@ -776,6 +784,7 @@ TEST_F(AtomProperties, charge) TEST_F(AtomProperties, molecule) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "molecule"), LAMMPS_TAGINT); + EXPECT_EQ(lammps_extract_atom_size(lmp, "molecule", 0), nall); auto *molecule = (tagint *)lammps_extract_atom(lmp, "molecule"); ASSERT_NE(molecule, nullptr); ASSERT_EQ(molecule[0], 2); @@ -785,6 +794,7 @@ TEST_F(AtomProperties, molecule) TEST_F(AtomProperties, id) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "id"), LAMMPS_TAGINT); + EXPECT_EQ(lammps_extract_atom_size(lmp, "id", 0), nall); auto *id = (tagint *)lammps_extract_atom(lmp, "id"); ASSERT_NE(id, nullptr); ASSERT_EQ(id[0], 1); @@ -794,6 +804,7 @@ TEST_F(AtomProperties, id) TEST_F(AtomProperties, type) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "type"), LAMMPS_INT); + EXPECT_EQ(lammps_extract_atom_size(lmp, "type", 0), nall); int *type = (int *)lammps_extract_atom(lmp, "type"); ASSERT_NE(type, nullptr); ASSERT_EQ(type[0], 1); @@ -803,6 +814,8 @@ TEST_F(AtomProperties, type) TEST_F(AtomProperties, position) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "x"), LAMMPS_DOUBLE_2D); + EXPECT_EQ(lammps_extract_atom_size(lmp, "x", LMP_SIZE_ROWS), nall); + EXPECT_EQ(lammps_extract_atom_size(lmp, "x", LMP_SIZE_COLS), 3); auto **x = (double **)lammps_extract_atom(lmp, "x"); ASSERT_NE(x, nullptr); EXPECT_DOUBLE_EQ(x[0][0], 1.0); @@ -816,15 +829,21 @@ TEST_F(AtomProperties, position) TEST_F(AtomProperties, custom) { EXPECT_EQ(lammps_extract_atom_datatype(lmp, "i_one"), LAMMPS_INT); + EXPECT_EQ(lammps_extract_atom_size(lmp, "i_one", 0), nlocal); auto *one = (int *)lammps_extract_atom(lmp, "i_one"); ASSERT_NE(one, nullptr); EXPECT_EQ(lammps_extract_atom_datatype(lmp, "i2_two"), LAMMPS_INT_2D); + EXPECT_EQ(lammps_extract_atom_size(lmp, "i2_two", LMP_SIZE_ROWS), nlocal); + EXPECT_EQ(lammps_extract_atom_size(lmp, "i2_two", LMP_SIZE_COLS), 2); auto **two = (int **)lammps_extract_atom(lmp, "i2_two"); ASSERT_NE(two, nullptr); EXPECT_EQ(lammps_extract_atom_datatype(lmp, "d_three"), LAMMPS_DOUBLE); + EXPECT_EQ(lammps_extract_atom_size(lmp, "d_three", 0), nlocal); auto *three = (double *)lammps_extract_atom(lmp, "d_three"); ASSERT_NE(three, nullptr); EXPECT_EQ(lammps_extract_atom_datatype(lmp, "d2_four"), LAMMPS_DOUBLE_2D); + EXPECT_EQ(lammps_extract_atom_size(lmp, "d2_four", LMP_SIZE_ROWS), nlocal); + EXPECT_EQ(lammps_extract_atom_size(lmp, "d2_four", LMP_SIZE_COLS), 2); auto **four = (double **)lammps_extract_atom(lmp, "d2_four"); ASSERT_NE(four, nullptr); diff --git a/unittest/python/python-numpy.py b/unittest/python/python-numpy.py index 839e5d03af..b7f1a4eedb 100644 --- a/unittest/python/python-numpy.py +++ b/unittest/python/python-numpy.py @@ -155,37 +155,6 @@ class PythonNumpy(unittest.TestCase): self.assertEqual(values[1,0], 1.5) self.assertEqual(values[1,3], 1.5) - def testExtractAtomDeprecated(self): - self.lmp.command("units lj") - self.lmp.command("atom_style atomic") - self.lmp.command("atom_modify map array") - self.lmp.command("region box block 0 2 0 2 0 2") - self.lmp.command("create_box 1 box") - - x = [ - 1.0, 1.0, 1.0, - 1.0, 1.0, 1.5 - ] - - types = [1, 1] - - self.assertEqual(self.lmp.create_atoms(2, id=None, type=types, x=x), 2) - nlocal = self.lmp.extract_global("nlocal", LAMMPS_INT) - self.assertEqual(nlocal, 2) - - ident = self.lmp.numpy.extract_atom_iarray("id", nlocal, dim=1) - self.assertEqual(len(ident), 2) - - ntypes = self.lmp.extract_global("ntypes", LAMMPS_INT) - self.assertEqual(ntypes, 1) - - x = self.lmp.numpy.extract_atom_darray("x", nlocal, dim=3) - v = self.lmp.numpy.extract_atom_darray("v", nlocal, dim=3) - self.assertEqual(len(x), 2) - self.assertTrue((x[0] == (1.0, 1.0, 1.0)).all()) - self.assertTrue((x[1] == (1.0, 1.0, 1.5)).all()) - self.assertEqual(len(v), 2) - def testExtractAtom(self): self.lmp.command("units lj") self.lmp.command("atom_style atomic") From 3e7123e21e6f1463200c7cfdebcedff6c3c67013 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 22:51:08 -0400 Subject: [PATCH 175/326] make compatible with comm_modify vel yes --- src/CG-DNA/atom_vec_oxdna.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CG-DNA/atom_vec_oxdna.cpp b/src/CG-DNA/atom_vec_oxdna.cpp index 38f78f94bf..0836e9b47c 100644 --- a/src/CG-DNA/atom_vec_oxdna.cpp +++ b/src/CG-DNA/atom_vec_oxdna.cpp @@ -37,6 +37,7 @@ AtomVecOxdna::AtomVecOxdna(LAMMPS *lmp) : AtomVec(lmp) fields_grow = {"id5p"}; fields_copy = {"id5p"}; fields_border = {"id5p"}; + fields_border_vel = {"id5p"}; fields_exchange = {"id5p"}; fields_restart = {"id5p"}; fields_data_atom = {"id", "type", "x"}; From b426556632e3235b28baf25922cf274587d1ece4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 22:51:31 -0400 Subject: [PATCH 176/326] replace bogus allocation --- src/ML-QUIP/pair_quip.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ML-QUIP/pair_quip.cpp b/src/ML-QUIP/pair_quip.cpp index a2de4bf38a..9d18d6bad9 100644 --- a/src/ML-QUIP/pair_quip.cpp +++ b/src/ML-QUIP/pair_quip.cpp @@ -286,7 +286,7 @@ void PairQUIP::coeff(int narg, char **arg) // and returns the necessary size of quip_potential. This behavior // is invoked by setting n_potential_quip to 0. n_quip_potential = 0; - quip_potential = new int[0]; + quip_potential = new int[1]; quip_lammps_potential_initialise(quip_potential, &n_quip_potential, &cutoff, quip_file, &n_quip_file, quip_string, &n_quip_string); delete[] quip_potential; @@ -295,6 +295,7 @@ void PairQUIP::coeff(int narg, char **arg) // the location of the previously initialised potential to the quip_potential // variable, and we will use it as a handle when calling the actual calculation // routine. We return the cutoff as well. + delete[] quip_potential; quip_potential = new int[n_quip_potential]; quip_lammps_potential_initialise(quip_potential, &n_quip_potential, &cutoff, quip_file, &n_quip_file, quip_string, &n_quip_string); From 0cdf8f2658ecc716a44b9385b4bd1c9837d3d6bb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 23:16:37 -0400 Subject: [PATCH 177/326] swap rows/cols for less confusion --- fortran/lammps.f90 | 17 ++++++++--------- python/lammps/core.py | 1 - 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/fortran/lammps.f90 b/fortran/lammps.f90 index 9688dae638..b7ce528b58 100644 --- a/fortran/lammps.f90 +++ b/fortran/lammps.f90 @@ -1469,9 +1469,8 @@ CONTAINS ntypes = lmp_extract_setting(self, 'ntypes') Cname = f2c_string(name) datatype = lammps_extract_atom_datatype(self%handle, Cname) - ! Fortran and C/C++ have rows and columns switched - ncols = lammps_extract_atom_size(self%handle, Cname, LMP_SIZE_ROWS) - nrows = lammps_extract_atom_size(self%handle, Cname, LMP_SIZE_COLS) + nrows = lammps_extract_atom_size(self%handle, Cname, LMP_SIZE_ROWS) + ncols = lammps_extract_atom_size(self%handle, Cname, LMP_SIZE_COLS) Cptr = lammps_extract_atom(self%handle, Cname) CALL lammps_free(Cname) @@ -1479,25 +1478,25 @@ CONTAINS SELECT CASE (datatype) CASE (LAMMPS_INT) peratom_data%datatype = DATA_INT_1D - CALL C_F_POINTER(Cptr, peratom_data%i32_vec, [ncols]) + CALL C_F_POINTER(Cptr, peratom_data%i32_vec, [nrows]) CASE (LAMMPS_INT64) peratom_data%datatype = DATA_INT64_1D - CALL C_F_POINTER(Cptr, peratom_data%i64_vec, [ncols]) + CALL C_F_POINTER(Cptr, peratom_data%i64_vec, [nrows]) CASE (LAMMPS_DOUBLE) peratom_data%datatype = DATA_DOUBLE_1D ! The mass array is allocated from 0, but only used from 1. We also want to use it from 1. IF (name == 'mass') THEN - CALL C_F_POINTER(Cptr, dummy, [ncols]) + CALL C_F_POINTER(Cptr, dummy, [nrows]) peratom_data%r64_vec(0:) => dummy ELSE - CALL C_F_POINTER(Cptr, peratom_data%r64_vec, [ncols]) + CALL C_F_POINTER(Cptr, peratom_data%r64_vec, [nrows]) END IF CASE (LAMMPS_DOUBLE_2D) peratom_data%datatype = DATA_DOUBLE_2D ! First, we dereference the void** pointer to point to the void* - CALL C_F_POINTER(Cptr, Catomptr, [ncols]) + CALL C_F_POINTER(Cptr, Catomptr, [nrows]) ! Catomptr(1) now points to the first element of the array - CALL C_F_POINTER(Catomptr(1), peratom_data%r64_mat, [nrows,ncols]) + CALL C_F_POINTER(Catomptr(1), peratom_data%r64_mat, [ncols,nrows]) CASE (-1) CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & 'per-atom property ' // name // ' not found in extract_setting') diff --git a/python/lammps/core.py b/python/lammps/core.py index b1907888e3..788da0116f 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -2557,4 +2557,3 @@ class lammps(object): # Local Variables: # fill-column: 80 # End: - From cdd26401010e88a86f93b23c6b074eb40a66c845 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 23:22:29 -0400 Subject: [PATCH 178/326] remove double delete[] --- src/ML-QUIP/pair_quip.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ML-QUIP/pair_quip.cpp b/src/ML-QUIP/pair_quip.cpp index 9d18d6bad9..35ba4ff8e4 100644 --- a/src/ML-QUIP/pair_quip.cpp +++ b/src/ML-QUIP/pair_quip.cpp @@ -295,7 +295,6 @@ void PairQUIP::coeff(int narg, char **arg) // the location of the previously initialised potential to the quip_potential // variable, and we will use it as a handle when calling the actual calculation // routine. We return the cutoff as well. - delete[] quip_potential; quip_potential = new int[n_quip_potential]; quip_lammps_potential_initialise(quip_potential, &n_quip_potential, &cutoff, quip_file, &n_quip_file, quip_string, &n_quip_string); From 35c36bb16ea265f5aeb83a5305c5671d6fd7d237 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 00:55:22 -0400 Subject: [PATCH 179/326] step version number for LAMMPS-GUI --- tools/lammps-gui/CMakeLists.txt | 2 +- tools/lammps-gui/lammps-gui.appdata.xml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 46f36cdb13..fc111f5c64 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(lammps-gui VERSION 1.6.10 LANGUAGES CXX) +project(lammps-gui VERSION 1.6.11 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) diff --git a/tools/lammps-gui/lammps-gui.appdata.xml b/tools/lammps-gui/lammps-gui.appdata.xml index 66a15223a2..4c8843957e 100644 --- a/tools/lammps-gui/lammps-gui.appdata.xml +++ b/tools/lammps-gui/lammps-gui.appdata.xml @@ -54,6 +54,10 @@ + + + + Resolve plugin mode issues. From 70b8b987ca3d1640b352f6ce71eb78345020162e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 00:57:59 -0400 Subject: [PATCH 180/326] add noreturn attribute to templated version of error->one and error->all --- src/error.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/error.h b/src/error.h index 89d168652a..805bd4cd0d 100644 --- a/src/error.h +++ b/src/error.h @@ -29,14 +29,14 @@ class Error : protected Pointers { [[noreturn]] void all(const std::string &, int, const std::string &); template - void all(const std::string &file, int line, const std::string &format, Args &&...args) + [[noreturn]] void all(const std::string &file, int line, const std::string &format, Args &&...args) { _all(file, line, format, fmt::make_format_args(args...)); } [[noreturn]] void one(const std::string &, int, const std::string &); template - void one(const std::string &file, int line, const std::string &format, Args &&...args) + [[noreturn]] void one(const std::string &file, int line, const std::string &format, Args &&...args) { _one(file, line, format, fmt::make_format_args(args...)); } From 59fdfaf884ab6f8627968af67b981537692d280f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 01:50:58 -0400 Subject: [PATCH 181/326] consistent indentation --- doc/src/region.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/src/region.rst b/doc/src/region.rst index a6a9469381..92fc2ec460 100644 --- a/doc/src/region.rst +++ b/doc/src/region.rst @@ -18,13 +18,13 @@ Syntax *delete* = no args *block* args = xlo xhi ylo yhi zlo zhi xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all dimensions (distance units) - xlo,xhi,ylo,yhi,zlo,zhi can be a variable + xlo,xhi,ylo,yhi,zlo,zhi can be a variable *cone* args = dim c1 c2 radlo radhi lo hi dim = *x* or *y* or *z* = axis of cone c1,c2 = coords of cone axis in other 2 dimensions (distance units) radlo,radhi = cone radii at lo and hi end (distance units) lo,hi = bounds of cone in dim (distance units) - c1,c2,radlo,radhi,lo,hi can be a variable (see below) + c1,c2,radlo,radhi,lo,hi can be a variable (see below) *cylinder* args = dim c1 c2 radius lo hi dim = *x* or *y* or *z* = axis of cylinder c1,c2 = coords of cylinder axis in other 2 dimensions (distance units) @@ -34,7 +34,7 @@ Syntax *ellipsoid* args = x y z a b c x,y,z = center of ellipsoid (distance units) a,b,c = half the length of the principal axes of the ellipsoid (distance units) - x,y,z,a,b and c can be a variable (see below) + x,y,z,a,b and c can be a variable (see below) *plane* args = px py pz nx ny nz px,py,pz = point on the plane (distance units) nx,ny,nz = direction normal to plane (distance units) @@ -47,7 +47,7 @@ Syntax *sphere* args = x y z radius x,y,z = center of sphere (distance units) radius = radius of sphere (distance units) - x,y,z, and radius can be a variable (see below) + x,y,z, and radius can be a variable (see below) *union* args = N reg-ID1 reg-ID2 ... N = # of regions to follow, must be 2 or greater reg-ID1,reg-ID2, ... = IDs of regions to join together @@ -209,7 +209,7 @@ and *ellipsoid* the x-, y-, and z- coordinates of the center of the sphere/ellipsoid can be specified as an equal-style variable. And for style *cylinder* the two center positions c1 and c2 for the location of the cylinder axes can be specified as a equal-style variable. For style *cone* -all properties can be defined via equal-style variables. For style *plane* +all properties can be defined via equal-style variables. For style *plane* the point can be defined via equal-style variables. If the value is a variable, it should be specified as v_name, where From b2ce4051aa27b4092df03e817bf1adf73d7a2717 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 01:53:54 -0400 Subject: [PATCH 182/326] Consistent spacing after full stops. --- doc/src/region.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/src/region.rst b/doc/src/region.rst index 92fc2ec460..7ceef94b04 100644 --- a/doc/src/region.rst +++ b/doc/src/region.rst @@ -167,7 +167,7 @@ extending in the y-direction from -5.0 to the upper box boundary. .. versionadded:: 4May2022 -For style *ellipsoid*, an axis-aligned ellipsoid is defined. The +For style *ellipsoid*, an axis-aligned ellipsoid is defined. The ellipsoid has its center at (x,y,z) and is defined by 3 axis-aligned vectors given by A = (a,0,0); B = (0,b,0); C = (0,0,c). Note that although the ellipsoid is specified as axis-aligned it can be rotated @@ -204,13 +204,13 @@ and with radius as its radius. The *radius* value for styles *sphere* and *cylinder*, and the parameters a,b,c for style *ellipsoid*, can each be specified as an -equal-style :doc:`variable `. Likewise, for style *sphere* +equal-style :doc:`variable `. Likewise, for style *sphere* and *ellipsoid* the x-, y-, and z- coordinates of the center of the -sphere/ellipsoid can be specified as an equal-style variable. And for -style *cylinder* the two center positions c1 and c2 for the location -of the cylinder axes can be specified as a equal-style variable. For style *cone* -all properties can be defined via equal-style variables. For style *plane* -the point can be defined via equal-style variables. +sphere/ellipsoid can be specified as an equal-style variable. And for +style *cylinder* the two center positions c1 and c2 for the location of +the cylinder axes can be specified as a equal-style variable. For style +*cone* all properties can be defined via equal-style variables. For +style *plane* the point can be defined via equal-style variables. If the value is a variable, it should be specified as v_name, where name is the variable name. In this case, the variable will be From a7649309983650785d70f203cff4bea414e3b720 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 02:00:30 -0400 Subject: [PATCH 183/326] consolidate replicated enum to base class header and inside the class definition --- src/region.h | 2 ++ src/region_block.cpp | 2 -- src/region_cone.cpp | 2 -- src/region_cylinder.cpp | 2 -- src/region_ellipsoid.cpp | 2 -- src/region_plane.cpp | 2 -- src/region_sphere.cpp | 2 -- 7 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/region.h b/src/region.h index f273485dce..19fdec31c7 100644 --- a/src/region.h +++ b/src/region.h @@ -20,6 +20,8 @@ namespace LAMMPS_NS { class Region : protected Pointers { public: + enum { CONSTANT, VARIABLE }; + char *id, *style; Region **reglist; int interior; // 1 for interior, 0 for exterior diff --git a/src/region_block.cpp b/src/region_block.cpp index efa3d8ca6a..9376016843 100644 --- a/src/region_block.cpp +++ b/src/region_block.cpp @@ -23,8 +23,6 @@ using namespace LAMMPS_NS; -enum { CONSTANT, VARIABLE }; - static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/region_cone.cpp b/src/region_cone.cpp index dc37eeefe3..401ed53735 100644 --- a/src/region_cone.cpp +++ b/src/region_cone.cpp @@ -27,8 +27,6 @@ using namespace LAMMPS_NS; -enum { CONSTANT, VARIABLE }; - static constexpr double BIG = 1.0e20; /* ---------------------------------------------------------------------- */ diff --git a/src/region_cylinder.cpp b/src/region_cylinder.cpp index 11783dc125..2ad0ba82f5 100644 --- a/src/region_cylinder.cpp +++ b/src/region_cylinder.cpp @@ -26,8 +26,6 @@ using namespace LAMMPS_NS; static constexpr double BIG = 1.0e20; -enum { CONSTANT, VARIABLE }; - /* ---------------------------------------------------------------------- */ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) : diff --git a/src/region_ellipsoid.cpp b/src/region_ellipsoid.cpp index daabd621c8..a0b4b9e544 100644 --- a/src/region_ellipsoid.cpp +++ b/src/region_ellipsoid.cpp @@ -23,8 +23,6 @@ using namespace LAMMPS_NS; -enum { CONSTANT, VARIABLE }; - static double GetRoot2D(double r0, double z0, double z1, double g); static double GetRoot3D(double r0, double r1, double z0, double z1, double z2, double g); diff --git a/src/region_plane.cpp b/src/region_plane.cpp index d8c09fa3cb..5917efc11b 100644 --- a/src/region_plane.cpp +++ b/src/region_plane.cpp @@ -22,8 +22,6 @@ using namespace LAMMPS_NS; -enum { CONSTANT, VARIABLE }; - /* ---------------------------------------------------------------------- */ RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg), diff --git a/src/region_sphere.cpp b/src/region_sphere.cpp index cd20a697d4..f449978938 100644 --- a/src/region_sphere.cpp +++ b/src/region_sphere.cpp @@ -22,8 +22,6 @@ using namespace LAMMPS_NS; -enum { CONSTANT, VARIABLE }; - /* ---------------------------------------------------------------------- */ RegSphere::RegSphere(LAMMPS *lmp, int narg, char **arg) : From abc621ddbd0f8f5449f7595c494d3d2d35ba038a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 04:33:31 -0400 Subject: [PATCH 184/326] Add GitHub workflow to check for variable length arrays --- .github/workflows/check-vla.yml | 82 +++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/check-vla.yml diff --git a/.github/workflows/check-vla.yml b/.github/workflows/check-vla.yml new file mode 100644 index 0000000000..d79e145352 --- /dev/null +++ b/.github/workflows/check-vla.yml @@ -0,0 +1,82 @@ +# GitHub action to build LAMMPS on Linux with gcc and -Werror=vla +name: "Check for Variable Length Arrays" + +on: + push: + branches: + - develop + - collected-small-changes + pull_request: + branches: + - develop + + workflow_dispatch: + +jobs: + build: + name: Build with -Werror=vla + if: ${{ github.repository == 'lammps/lammps' }} || ${{ github.repository == 'akohlmey/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-vla-ccache-${{ github.sha }} + restore-keys: linux-vla-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/most.cmake \ + -D CMAKE_CXX_COMPILER=g++ \ + -D CMAKE_C_COMPILER=gcc \ + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -D CMAKE_C_COMPILER_LAUNCHER=ccache \ + -D CMAKE_BUILD_TYPE=Debug \ + -D CMAKE_CXX_FLAGS_DEBUG="-Og -g -Werror=vla" \ + -D DOWNLOAD_POTENTIALS=off \ + -D BUILD_MPI=on \ + -D BUILD_TOOLS=off \ + -D ENABLE_TESTING=off \ + -D MLIAP_ENABLE_ACE=on \ + -D MLIAP_ENABLE_PYTHON=off \ + -D PKG_AWPMD=on \ + -D PKG_GPU=on \ + -D GPU_API=opencl \ + -D PKG_LATBOLTZ=on \ + -D PKG_MDI=on \ + -D PKG_MANIFOLD=on \ + -D PKG_ML-PACE=on \ + -D PKG_ML-RANN=off \ + -D PKG_MOLFILE=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 From fb2c060d63881a5143fb500905cf30bdc225583e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 04:40:25 -0400 Subject: [PATCH 185/326] add unit test run on GitHub with -DLAMMPS_BIGBIG --- .github/workflows/unittest-linux.yml | 78 ++++++++++++++++++++++++++++ 1 file changed, 78 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..ab5753b530 --- /dev/null +++ b/.github/workflows/unittest-linux.yml @@ -0,0 +1,78 @@ +# GitHub action to build LAMMPS on Linux and run standard unit tests +name: "Unittest for Linux /w LAMMPS_BIGBIG" + +on: + push: + branches: + - develop + - collected-small-changes + pull_request: + branches: + - develop + + workflow_dispatch: + +jobs: + build: + name: Linux Unit Test + if: ${{ github.repository == 'lammps/lammps' }} || ${{ github.repository == 'akohlmey/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 MLIAP_ENABLE_ACE=on \ + -D MLIAP_ENABLE_PYTHON=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 Tests + working-directory: build + shell: bash + run: ctest -V From e5f8a4bec5c6dffaba07b946aa57f7d392bf71bb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 04:47:03 -0400 Subject: [PATCH 186/326] must install mpi for compiling with mpi --- .github/workflows/check-vla.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-vla.yml b/.github/workflows/check-vla.yml index d79e145352..5e702d3648 100644 --- a/.github/workflows/check-vla.yml +++ b/.github/workflows/check-vla.yml @@ -28,8 +28,15 @@ jobs: - 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 + sudo apt-get install -y ccache \ + libeigen3-dev \ + libgsl-dev \ + libcurl4-openssl-dev \ + mold \ + mpi-default-bin \ + mpi-default-dev \ + ninja-build \ + python3-dev - name: Create Build Environment run: mkdir build From 6ebdb0b9827e1b0172e386d4dd099dbc3a85a6d3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 04:53:09 -0400 Subject: [PATCH 187/326] some more tweaks to the workflows --- .github/workflows/check-vla.yml | 4 ++-- .github/workflows/unittest-linux.yml | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-vla.yml b/.github/workflows/check-vla.yml index 5e702d3648..26f23cc33f 100644 --- a/.github/workflows/check-vla.yml +++ b/.github/workflows/check-vla.yml @@ -5,7 +5,6 @@ on: push: branches: - develop - - collected-small-changes pull_request: branches: - develop @@ -15,7 +14,7 @@ on: jobs: build: name: Build with -Werror=vla - if: ${{ github.repository == 'lammps/lammps' }} || ${{ github.repository == 'akohlmey/lammps'}} + if: ${{ github.repository == 'lammps/lammps' }} runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache @@ -66,6 +65,7 @@ jobs: -D CMAKE_CXX_FLAGS_DEBUG="-Og -g -Werror=vla" \ -D DOWNLOAD_POTENTIALS=off \ -D BUILD_MPI=on \ + -D BUILD_SHARED_LIBS=off \ -D BUILD_TOOLS=off \ -D ENABLE_TESTING=off \ -D MLIAP_ENABLE_ACE=on \ diff --git a/.github/workflows/unittest-linux.yml b/.github/workflows/unittest-linux.yml index ab5753b530..366db25a99 100644 --- a/.github/workflows/unittest-linux.yml +++ b/.github/workflows/unittest-linux.yml @@ -5,7 +5,6 @@ on: push: branches: - develop - - collected-small-changes pull_request: branches: - develop @@ -15,7 +14,7 @@ on: jobs: build: name: Linux Unit Test - if: ${{ github.repository == 'lammps/lammps' }} || ${{ github.repository == 'akohlmey/lammps'}} + if: ${{ github.repository == 'lammps/lammps' }} runs-on: ubuntu-latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache @@ -28,8 +27,13 @@ jobs: - 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 + sudo apt-get install -y ccache \ + libeigen3-dev \ + libgsl-dev \ + libcurl4-openssl-dev \ + mold \ + ninja-build \ + python3-dev - name: Create Build Environment run: mkdir build From 70a62d5ebfb8b9ba32eef1127c6d8124e8b93ac4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 06:20:44 -0400 Subject: [PATCH 188/326] make certain that the mass and mass_setflag arrays are fully initialized (to zero) --- src/atom.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/atom.cpp b/src/atom.cpp index 4a638652c7..f8a9bdd79b 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -1911,7 +1911,11 @@ void Atom::allocate_type_arrays() if (avec->mass_type == AtomVec::PER_TYPE) { mass = new double[ntypes+1]; mass_setflag = new int[ntypes+1]; - for (int itype = 1; itype <= ntypes; itype++) mass_setflag[itype] = 0; + // start loop from 0 to avoid uninitialized access when operating on the whole array + for (int itype = 0; itype <= ntypes; itype++) { + mass_setflag[itype] = 0; + mass[itype] = 0.0; + } } } From 7d176cb66ea4028be2ab8bc371da02fdadc5b664 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 07:01:44 -0400 Subject: [PATCH 189/326] fix logic bug --- src/atom.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/atom.cpp b/src/atom.cpp index f8a9bdd79b..e0fceffe9c 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -2752,11 +2752,12 @@ for an example where checking ghost communication is necessary. int Atom::find_custom_ghost(const char *name, int &flag, int &cols, int &ghost) { int i = find_custom(name, flag, cols); + ghost = 0; if (i == -1) return i; if ((flag == 0) && (cols == 0)) ghost = ivghost[i]; else if ((flag == 1) && (cols == 0)) ghost = dvghost[i]; - else if ((flag == 0) && (cols == 1)) ghost = iaghost[i]; - else if ((flag == 1) && (cols == 1)) ghost = daghost[i]; + else if ((flag == 0) && (cols > 0)) ghost = iaghost[i]; + else if ((flag == 1) && (cols > 0)) ghost = daghost[i]; return i; } From 2c05378815934988dfa09559b9af769678d0c36c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 07:03:14 -0400 Subject: [PATCH 190/326] expand python module unit tests for extract_atom() --- unittest/python/python-numpy.py | 96 ++++++++++++++++++++++++++++----- 1 file changed, 82 insertions(+), 14 deletions(-) diff --git a/unittest/python/python-numpy.py b/unittest/python/python-numpy.py index b7f1a4eedb..4930527a61 100644 --- a/unittest/python/python-numpy.py +++ b/unittest/python/python-numpy.py @@ -160,31 +160,99 @@ class PythonNumpy(unittest.TestCase): self.lmp.command("atom_style atomic") self.lmp.command("atom_modify map array") self.lmp.command("region box block 0 2 0 2 0 2") - self.lmp.command("create_box 1 box") + self.lmp.command("create_box 2 box") - x = [ - 1.0, 1.0, 1.0, - 1.0, 1.0, 1.5 - ] + x = [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.5, 1.5, 1.0, 1.0 ] + types = [1, 2, 1] + ids = [1, 2, 3] + self.assertEqual(self.lmp.create_atoms(3, id=ids, type=types, x=x), 3) + self.lmp.command("mass * 2.0") + self.lmp.command("pair_style zero 1.1") + self.lmp.command("pair_coeff * *") + self.lmp.command("fix props all property/atom i_one i2_two 2 d_three d2_four 2"); + self.lmp.command("fix rmass all property/atom mol q rmass ghost yes"); + self.lmp.command("fix 1 all nve") + self.lmp.command("run 0 post no") + ntypes = self.lmp.extract_setting("ntypes"); + nlocal = self.lmp.extract_setting("nlocal"); + nall = self.lmp.extract_setting("nall"); + self.assertEqual(nlocal, 3) + self.assertEqual(ntypes, 2) + self.assertEqual(nall, 63) - types = [1, 1] + self.lmp.command("set atom 1 charge -1"); + self.lmp.command("set atom 2 charge 1"); + self.lmp.command("set atom 3 charge 0"); + self.lmp.command("set atom * mol 2"); + self.lmp.command("set atom 2 mol 1"); + self.lmp.command("set atom 1 i_one -3"); + self.lmp.command("set atom 2 i_one 3"); + self.lmp.command("set atom 2 d_three -1.3"); + self.lmp.command("set atom 3 d_three 3.5"); + self.lmp.command("set atom 1 i_two[1] -3"); + self.lmp.command("set atom 2 i_two[2] 3"); + self.lmp.command("set atom * d_four[1] -1.3"); + self.lmp.command("set atom * d_four[2] 3.5"); + self.lmp.command("run 0 post no") - self.assertEqual(self.lmp.create_atoms(2, id=None, type=types, x=x), 2) - nlocal = self.lmp.extract_global("nlocal") - self.assertEqual(nlocal, 2) + mass = self.lmp.numpy.extract_atom("mass") + self.assertEqual(len(mass), ntypes + 1) + self.assertTrue((mass == (0.0, 2.0, 2.0)).all()) + + rmass = self.lmp.numpy.extract_atom("rmass") + self.assertEqual(len(rmass), nall) + self.assertTrue((rmass[0:3] == (0.0, 0.0, 0.0)).all()) + + charge = self.lmp.numpy.extract_atom("q") + self.assertEqual(len(charge), nall) + self.assertTrue((charge[0:3] == (-1.0, 1.0, 0.0)).all()) + + molecule = self.lmp.numpy.extract_atom("molecule") + self.assertEqual(len(molecule), nall) + self.assertTrue((molecule[0:3] == (2, 1, 2)).all()) ident = self.lmp.numpy.extract_atom("id") - self.assertEqual(len(ident), 2) + self.assertEqual(len(ident), nall) + self.assertTrue((ident[0:3] == (1, 2, 3)).all()) - ntypes = self.lmp.extract_global("ntypes") - self.assertEqual(ntypes, 1) + atype = self.lmp.numpy.extract_atom("type") + self.assertEqual(len(atype), nall) + self.assertTrue((atype[0:3] == (1, 2, 1)).all()) x = self.lmp.numpy.extract_atom("x") v = self.lmp.numpy.extract_atom("v") - self.assertEqual(len(x), 2) + self.assertEqual(len(x), nall) + self.assertEqual(len(x[0]), 3) self.assertTrue((x[0] == (1.0, 1.0, 1.0)).all()) self.assertTrue((x[1] == (1.0, 1.0, 1.5)).all()) - self.assertEqual(len(v), 2) + self.assertTrue((x[2] == (1.5, 1.0, 1.0)).all()) + self.assertEqual(len(v), nlocal) + self.assertEqual(len(v[0]), 3) + + self.lmp.command("comm_modify vel yes"); + self.lmp.command("run 0 post no") + + v = self.lmp.numpy.extract_atom("v") + self.assertEqual(len(v), nall) + + one = self.lmp.numpy.extract_atom("i_one") + two = self.lmp.numpy.extract_atom("i2_two") + three = self.lmp.numpy.extract_atom("d_three") + four = self.lmp.numpy.extract_atom("d2_four") + self.assertEqual(len(one), nlocal) + self.assertTrue((one == (-3, 3, 0)).all()) + self.assertEqual(len(two), nlocal) + self.assertEqual(len(two[0]), 2) + self.assertTrue((two[0] == (-3, 0)).all()) + self.assertTrue((two[1] == (0, 3)).all()) + self.assertTrue((two[2] == (0, 0)).all()) + self.assertEqual(len(three), nlocal) + self.assertTrue((three == (0.0, -1.3, 3.5)).all()) + self.assertEqual(len(four), nlocal) + self.assertEqual(len(four[0]), 2) + self.assertTrue((four[0] == (-1.3, 3.5)).all()) + self.assertTrue((four[1] == (-1.3, 3.5)).all()) + self.assertTrue((four[2] == (-1.3, 3.5)).all()) @unittest.skipIf(not has_full,"Gather bonds test") def testGatherBond_newton_on(self): From 84fa26ee2c29f66ede462de76c0e82e24db34e3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 11:13:53 -0400 Subject: [PATCH 191/326] update test checking tool --- unittest/force-styles/check_tests.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/unittest/force-styles/check_tests.py b/unittest/force-styles/check_tests.py index 4dba8f9b9e..7305168ecb 100755 --- a/unittest/force-styles/check_tests.py +++ b/unittest/force-styles/check_tests.py @@ -88,10 +88,9 @@ for header in headers: style = m[1] if upper.match(style): continue - if style in ['reax/c', 'reax/c/omp', 'reax/c/kk', - 'reax/c/kk/device', 'reax/c/kk/host', - 'reax/c/species', 'reax/c/bonds', - 'reax/c/species/kk', 'reax/c/bonds/kk', 'meam/c']: + if style in ['lj/sdk', 'lj/sdk/coul/long', 'lj/sdk/coul/msm', 'sdk', 'lj/sdk/gpu', + 'lj/sdk/coul/long/gpu', 'lj/sdk/omp', 'lj/sdk/coul/long/omp', 'sdk/omp', + 'lj/sdk/coul/msm/omp', 'lj/sdk/kk', 'lj/sdk/coul/long/kk', 'sdk/kk']: continue # detect, process, and flag suffix styles: @@ -176,11 +175,12 @@ def check_tests(name,styles,yaml,search,skip=()): counter = 0 counter += check_tests('pair',pair,'*-pair-*.yaml', - '.*pair_style:\\s*((\\S+).*)?',skip=('meam','lj/sf')) + '.*pair_style:\\s*((\\S+).*)?', + skip=('lj/sf','lj/sdk', 'lj/sdk/coul/long', 'lj/sdk/coul/msm')) counter += check_tests('bond',bond,'bond-*.yaml', '.*bond_style:\\s*((\\S+).*)?') counter += check_tests('angle',angle,'angle-*.yaml', - '.*angle_style:\\s*((\\S+).*)?') + '.*angle_style:\\s*((\\S+).*)?', skip=('sdk')) counter += check_tests('dihedral',dihedral,'dihedral-*.yaml', '.*dihedral_style:\\s*((\\S+).*)?') counter += check_tests('improper',improper,'improper-*.yaml', From 6f114eddeae799f58a9a4b17263f7d0e5404806c Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 30 Aug 2024 23:39:40 -0600 Subject: [PATCH 192/326] Fix typo in CMakeLists.txt --- cmake/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 723015c1f9..67b95c2ab8 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -474,13 +474,13 @@ if(BUILD_OMP) if(CMAKE_VERSION VERSION_LESS 3.28) get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME) if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC")) - set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE} -fopenmp") - set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE} -fopenmp") + set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE}} -fopenmp") + set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE}} -fopenmp") endif() else() if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang") - set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE} -fopenmp") - set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE} -fopenmp") + set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE}} -fopenmp") + set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE}} -fopenmp") endif() endif() endif() From 78597a9c39aad1da64bef79c5c26dc8dd86d9699 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 12:16:27 -0400 Subject: [PATCH 193/326] add fortran module tests for extracting atom properties with array dimensions --- fortran/lammps.f90 | 1 + unittest/fortran/keepstuff.f90 | 28 ++++++---- .../fortran/test_fortran_extract_atom.f90 | 54 ++++++++++++++++++- unittest/fortran/wrap_extract_atom.cpp | 25 ++++++++- 4 files changed, 97 insertions(+), 11 deletions(-) diff --git a/fortran/lammps.f90 b/fortran/lammps.f90 index b7ce528b58..6ced71be49 100644 --- a/fortran/lammps.f90 +++ b/fortran/lammps.f90 @@ -1496,6 +1496,7 @@ CONTAINS ! First, we dereference the void** pointer to point to the void* CALL C_F_POINTER(Cptr, Catomptr, [nrows]) ! Catomptr(1) now points to the first element of the array + ! rows and columns are swapped in Fortran CALL C_F_POINTER(Catomptr(1), peratom_data%r64_mat, [ncols,nrows]) CASE (-1) CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, & diff --git a/unittest/fortran/keepstuff.f90 b/unittest/fortran/keepstuff.f90 index 63184e1006..c964c8a9c6 100644 --- a/unittest/fortran/keepstuff.f90 +++ b/unittest/fortran/keepstuff.f90 @@ -4,9 +4,9 @@ MODULE keepstuff TYPE(LAMMPS), SAVE :: lmp INTEGER, SAVE :: mycomm CHARACTER(LEN=40), DIMENSION(3), PARAMETER :: demo_input = & - [ CHARACTER(LEN=40) :: & - 'region box block 0 $x 0 2 0 2', & - 'create_box 1 box', & + [ CHARACTER(LEN=40) :: & + 'region box block 0 $x 0 2 0 2', & + 'create_box 1 box', & 'create_atoms 1 single 1.0 1.0 ${zpos}' ] CHARACTER(LEN=40), DIMENSION(3), PARAMETER :: big_input = & [ CHARACTER(LEN=40) :: & @@ -14,15 +14,26 @@ MODULE keepstuff 'create_box 1 box', & 'create_atoms 1 single 1.0 1.0 ${zpos}' ] CHARACTER(LEN=40), DIMENSION(2), PARAMETER :: cont_input = & - [ CHARACTER(LEN=40) :: & - 'create_atoms 1 single &', & + [ CHARACTER(LEN=40) :: & + 'create_atoms 1 single &', & ' 0.2 0.1 0.1' ] + CHARACTER(LEN=60), DIMENSION(18), PARAMETER :: prop_input = & + [ CHARACTER(LEN=60) :: 'fix 1 all nve', 'mass 1 3.0', & + 'fix 2 all property/atom mol q rmass ghost yes', & + 'fix 3 all property/atom i_one i2_two 2 d_three d2_four 2', & + 'set group all mass 2.0', 'set atom 1 charge -1', & + 'set atom 2 charge 1', 'set atom 1 mol 2', 'set atom 2 mol 1', & + 'set atom 1 i_one -3', 'set atom 2 i_one 3', & + 'set atom 1 d_three -1.3', 'set atom 2 d_three 3.5', & + 'set atom 1 i_two[1] -3', 'set atom 2 i_two[2] 3', & + 'set atom * d_four[1] -1.3', 'set atom * d_four[2] 3.5', & + 'run 0 post no' ] CHARACTER(LEN=40), DIMENSION(1), PARAMETER :: more_input = & [ CHARACTER(LEN=40) :: 'create_atoms 1 single 0.5 0.5 0.5' ] CHARACTER(LEN=40), DIMENSION(3), PARAMETER :: pair_input = & - [ CHARACTER(LEN=40) :: & - 'pair_style lj/cut 2.5', & - 'pair_coeff 1 1 1.0 1.0', & + [ CHARACTER(LEN=40) :: & + 'pair_style lj/cut 2.5', & + 'pair_coeff 1 1 1.0 1.0', & 'mass 1 2.0' ] INTERFACE @@ -63,4 +74,3 @@ CONTAINS END FUNCTION f2c_string END MODULE keepstuff - diff --git a/unittest/fortran/test_fortran_extract_atom.f90 b/unittest/fortran/test_fortran_extract_atom.f90 index 262e5de47d..0c5a52ef25 100644 --- a/unittest/fortran/test_fortran_extract_atom.f90 +++ b/unittest/fortran/test_fortran_extract_atom.f90 @@ -24,12 +24,13 @@ END SUBROUTINE f_lammps_close SUBROUTINE f_lammps_setup_extract_atom() BIND(C) USE LIBLAMMPS - USE keepstuff, ONLY : lmp, big_input, cont_input, pair_input + USE keepstuff, ONLY : lmp, big_input, cont_input, pair_input, prop_input IMPLICIT NONE CALL lmp%commands_list(big_input) CALL lmp%commands_list(cont_input) CALL lmp%commands_list(pair_input) + CALL lmp%commands_list(prop_input) END SUBROUTINE f_lammps_setup_extract_atom FUNCTION f_lammps_extract_atom_mass() BIND(C) @@ -44,6 +45,19 @@ FUNCTION f_lammps_extract_atom_mass() BIND(C) f_lammps_extract_atom_mass = mass(1) END FUNCTION f_lammps_extract_atom_mass +FUNCTION f_lammps_extract_atom_mass_size() BIND(C) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int + USE LIBLAMMPS + USE keepstuff, ONLY : lmp + IMPLICIT NONE + INTEGER(c_int) :: f_lammps_extract_atom_mass_size, ntypes + REAL(c_double), DIMENSION(:), POINTER :: mass => NULL() + + ntypes = lmp%extract_setting('ntypes') + mass = lmp%extract_atom('mass') + f_lammps_extract_atom_mass_size = SIZE(mass) +END FUNCTION f_lammps_extract_atom_mass_size + FUNCTION f_lammps_extract_atom_tag_int(i) BIND(C) USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int USE LIBLAMMPS @@ -83,6 +97,18 @@ FUNCTION f_lammps_extract_atom_type(i) BIND(C) f_lammps_extract_atom_type = atype(i) END FUNCTION f_lammps_extract_atom_type +FUNCTION f_lammps_extract_atom_type_size() BIND(C) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int + USE LIBLAMMPS + USE keepstuff, ONLY : lmp + IMPLICIT NONE + INTEGER(c_int) :: f_lammps_extract_atom_type_size + INTEGER(c_int), DIMENSION(:), POINTER :: atype => NULL() + + atype = lmp%extract_atom('type') + f_lammps_extract_atom_type_size = size(atype) +END FUNCTION f_lammps_extract_atom_type_size + FUNCTION f_lammps_extract_atom_mask(i) BIND(C) USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int USE LIBLAMMPS @@ -109,6 +135,19 @@ SUBROUTINE f_lammps_extract_atom_x(i, x) BIND(C) x = xptr(:,i) END SUBROUTINE f_lammps_extract_atom_x +FUNCTION f_lammps_extract_atom_x_size(i) BIND(C) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int + USE LIBLAMMPS + USE keepstuff, ONLY : lmp + IMPLICIT NONE + INTEGER(c_int), INTENT(IN), VALUE :: i + INTEGER(c_int) :: f_lammps_extract_atom_x_size + REAL(c_double), DIMENSION(:,:), POINTER :: xptr => NULL() + + xptr = lmp%extract_atom('x') + f_lammps_extract_atom_x_size = SIZE(xptr, i) +END FUNCTION f_lammps_extract_atom_x_size + SUBROUTINE f_lammps_extract_atom_v(i, v) BIND(C) USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int USE LIBLAMMPS @@ -121,3 +160,16 @@ SUBROUTINE f_lammps_extract_atom_v(i, v) BIND(C) vptr = lmp%extract_atom('v') v = vptr(:,i) END SUBROUTINE f_lammps_extract_atom_v + +FUNCTION f_lammps_extract_atom_v_size(i) BIND(C) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int + USE LIBLAMMPS + USE keepstuff, ONLY : lmp + IMPLICIT NONE + INTEGER(c_int), INTENT(IN), VALUE :: i + INTEGER(c_int) :: f_lammps_extract_atom_v_size + REAL(c_double), DIMENSION(:,:), POINTER :: xptr => NULL() + + xptr = lmp%extract_atom('v') + f_lammps_extract_atom_v_size = SIZE(xptr, i) +END FUNCTION f_lammps_extract_atom_v_size diff --git a/unittest/fortran/wrap_extract_atom.cpp b/unittest/fortran/wrap_extract_atom.cpp index 2552d6a10f..9430959b2b 100644 --- a/unittest/fortran/wrap_extract_atom.cpp +++ b/unittest/fortran/wrap_extract_atom.cpp @@ -1,6 +1,7 @@ // unit tests for extracting Atom class data from a LAMMPS instance through the // Fortran wrapper +#include "atom.h" #include "lammps.h" #include "library.h" #include @@ -16,12 +17,16 @@ void *f_lammps_with_args(); void f_lammps_close(); void f_lammps_setup_extract_atom(); double f_lammps_extract_atom_mass(); +int f_lammps_extract_atom_mass_size(); int f_lammps_extract_atom_tag_int(int); int64_t f_lammps_extract_atom_tag_int64(int64_t); int f_lammps_extract_atom_type(int); +int f_lammps_extract_atom_type_size(); int f_lammps_extract_atom_mask(int); void f_lammps_extract_atom_x(int, double *); +int f_lammps_extract_atom_x_size(int); void f_lammps_extract_atom_v(int, double *); +int f_lammps_extract_atom_v_size(int); } class LAMMPS_extract_atom : public ::testing::Test { @@ -50,7 +55,9 @@ protected: TEST_F(LAMMPS_extract_atom, mass) { f_lammps_setup_extract_atom(); - EXPECT_DOUBLE_EQ(f_lammps_extract_atom_mass(), 2.0); + int ntypes = lmp->atom->ntypes; + EXPECT_DOUBLE_EQ(f_lammps_extract_atom_mass(), 3.0); + EXPECT_EQ(f_lammps_extract_atom_mass_size(), ntypes + 1); }; TEST_F(LAMMPS_extract_atom, tag) @@ -68,8 +75,10 @@ TEST_F(LAMMPS_extract_atom, tag) TEST_F(LAMMPS_extract_atom, type) { f_lammps_setup_extract_atom(); + int nall = lmp->atom->nlocal + lmp->atom->nghost; EXPECT_EQ(f_lammps_extract_atom_type(1), 1); EXPECT_EQ(f_lammps_extract_atom_type(2), 1); + EXPECT_EQ(f_lammps_extract_atom_type_size(), nall); }; TEST_F(LAMMPS_extract_atom, mask) @@ -86,6 +95,7 @@ TEST_F(LAMMPS_extract_atom, mask) TEST_F(LAMMPS_extract_atom, x) { f_lammps_setup_extract_atom(); + int nall = lmp->atom->nlocal + lmp->atom->nghost; double x1[3]; double x2[3]; f_lammps_extract_atom_x(1, x1); @@ -96,11 +106,15 @@ TEST_F(LAMMPS_extract_atom, x) EXPECT_DOUBLE_EQ(x2[0], 0.2); EXPECT_DOUBLE_EQ(x2[1], 0.1); EXPECT_DOUBLE_EQ(x2[2], 0.1); + // in Fortran row and column are swapped + EXPECT_EQ(f_lammps_extract_atom_x_size(1), 3); + EXPECT_EQ(f_lammps_extract_atom_x_size(2), nall); } TEST_F(LAMMPS_extract_atom, v) { f_lammps_setup_extract_atom(); + int nall = lmp->atom->nlocal + lmp->atom->nghost; double v1[3]; double v2[3]; f_lammps_extract_atom_v(1, v1); @@ -117,4 +131,13 @@ TEST_F(LAMMPS_extract_atom, v) EXPECT_DOUBLE_EQ(v1[0], 1.0); EXPECT_DOUBLE_EQ(v1[1], 2.0); EXPECT_DOUBLE_EQ(v1[2], 3.0); + // in Fortran row and column are swapped! + EXPECT_EQ(f_lammps_extract_atom_v_size(1), 3); + EXPECT_EQ(f_lammps_extract_atom_v_size(2), lmp->atom->nlocal); + lammps_command(lmp, "comm_modify vel yes"); + lammps_command(lmp, "run 0 post no"); + EXPECT_EQ(f_lammps_extract_atom_v_size(1), 3); + EXPECT_EQ(f_lammps_extract_atom_v_size(2), nall); } + +// TODO: write tests for custom properties From 7492ab754116c2cca577fb47acf3607da937c3b4 Mon Sep 17 00:00:00 2001 From: cjknight Date: Sat, 31 Aug 2024 11:18:43 -0500 Subject: [PATCH 194/326] sync forces on step 0 --- src/KOKKOS/fix_shake_kokkos.cpp | 10 ++++++++++ src/KOKKOS/fix_shake_kokkos.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/KOKKOS/fix_shake_kokkos.cpp b/src/KOKKOS/fix_shake_kokkos.cpp index b25e2dad59..4602546579 100644 --- a/src/KOKKOS/fix_shake_kokkos.cpp +++ b/src/KOKKOS/fix_shake_kokkos.cpp @@ -172,6 +172,16 @@ void FixShakeKokkos::init() k_angle_distance.sync(); } +/* ---------------------------------------------------------------------- + SHAKE as pre-integrator constraint +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::setup(int vflag) +{ + FixShake::setup(vflag); + atomKK->sync(Host,F_MASK); +} /* ---------------------------------------------------------------------- run setup for minimization. diff --git a/src/KOKKOS/fix_shake_kokkos.h b/src/KOKKOS/fix_shake_kokkos.h index 31a6c340be..519db18b5f 100644 --- a/src/KOKKOS/fix_shake_kokkos.h +++ b/src/KOKKOS/fix_shake_kokkos.h @@ -52,6 +52,7 @@ class FixShakeKokkos : public FixShake, public KokkosBase { FixShakeKokkos(class LAMMPS *, int, char **); ~FixShakeKokkos() override; void init() override; + void setup(int) override; void min_setup(int) override; void pre_neighbor() override; void post_force(int) override; From 55a549a2fba8214184e341da9f035ad4cbc6031d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 12:43:50 -0400 Subject: [PATCH 195/326] try speed up windows compilation with ccache --- .github/workflows/compile-msvc.yml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 1a0f1ea62f..94de700bb7 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" +name: "Windows Unit Tests" on: push: @@ -16,6 +16,8 @@ jobs: name: Windows Compilation Test if: ${{ github.repository == 'lammps/lammps' }} runs-on: windows-latest + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache steps: - name: Checkout repository @@ -23,6 +25,21 @@ jobs: with: fetch-depth: 2 + - name: Install Ccache + run: winget install Ccache.Ccache + + - name: Install MSMPI + run: | + nuget install MSMPIsdk + nuget install MSMPIDIST + + - name: Set up ccache + uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: win-unit-ccache-${{ github.sha }} + restore-keys: win-unit-ccache- + - name: Select Python version uses: actions/setup-python@v5 with: @@ -31,20 +48,21 @@ jobs: - name: Building LAMMPS via CMake shell: bash run: | + ccache -z python3 -m pip install numpy python3 -m pip install pyyaml - nuget install MSMPIsdk - nuget install MSMPIDIST cmake -C cmake/presets/windows.cmake \ + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -D CMAKE_C_COMPILER_LAUNCHER=ccache \ -D DOWNLOAD_POTENTIALS=off \ -D PKG_PYTHON=on \ -D WITH_PNG=off \ -D WITH_JPEG=off \ -S cmake -B build \ -D BUILD_SHARED_LIBS=on \ - -D LAMMPS_EXCEPTIONS=on \ -D ENABLE_TESTING=on cmake --build build --config Release --parallel 2 + ccache -s - name: Run LAMMPS executable shell: bash From 0d7305672b101fed03b9d29bb6379fcec6b946c8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 12:48:09 -0400 Subject: [PATCH 196/326] use chocolatey instead of winget --- .github/workflows/compile-msvc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 94de700bb7..3ce8c1f25b 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -26,7 +26,7 @@ jobs: fetch-depth: 2 - name: Install Ccache - run: winget install Ccache.Ccache + run: choco install ccache - name: Install MSMPI run: | From 72acea291afab90d82ef08c39fde25f74b98e1d9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 13:42:55 -0400 Subject: [PATCH 197/326] switch to ninja-build and single configuration setup --- .github/workflows/compile-msvc.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 3ce8c1f25b..813579174e 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -26,7 +26,9 @@ jobs: fetch-depth: 2 - name: Install Ccache - run: choco install ccache + run: | + choco install ccache + choco install ninja - name: Install MSMPI run: | @@ -52,25 +54,26 @@ jobs: python3 -m pip install numpy python3 -m pip install pyyaml cmake -C cmake/presets/windows.cmake \ - -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -D CMAKE_C_COMPILER_LAUNCHER=ccache \ + -D CMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \ + -D CMAKE_C_COMPILER_LAUNCHER=$(which ccache) \ -D DOWNLOAD_POTENTIALS=off \ -D PKG_PYTHON=on \ -D WITH_PNG=off \ -D WITH_JPEG=off \ -S cmake -B build \ -D BUILD_SHARED_LIBS=on \ - -D ENABLE_TESTING=on - cmake --build build --config Release --parallel 2 + -D ENABLE_TESTING=on \ + -G Ninja + cmake --build build ccache -s - name: Run LAMMPS executable shell: bash run: | - ./build/Release/lmp.exe -h - ./build/Release/lmp.exe -in bench/in.lj + ./build/lmp.exe -h + ./build/lmp.exe -in bench/in.lj - name: Run Unit Tests working-directory: build shell: bash - run: ctest -V -C Release -E FixTimestep:python_move_nve + run: ctest -V -E FixTimestep:python_move_nve From 2998d88edb6b4ee74cfdfed1708e93e0792a8e46 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 13:48:10 -0400 Subject: [PATCH 198/326] prefer MSVC++ over MinGW --- .github/workflows/compile-msvc.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 813579174e..6d77e694ef 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -54,6 +54,8 @@ jobs: python3 -m pip install numpy python3 -m pip install pyyaml cmake -C cmake/presets/windows.cmake \ + -D CMAKE_CXX_COMPILER=cl.exe \ + -D CMAKE_C_COMPILER=cl.exe \ -D CMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \ -D CMAKE_C_COMPILER_LAUNCHER=$(which ccache) \ -D DOWNLOAD_POTENTIALS=off \ From 6c40e8dc799482f5d7b80873278daf3bfe5c2886 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 13:57:54 -0400 Subject: [PATCH 199/326] revert back to MSBuild and report launcher, if active --- .github/workflows/compile-msvc.yml | 6 +----- cmake/CMakeLists.txt | 6 ++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 6d77e694ef..3de6a46c7c 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -28,7 +28,6 @@ jobs: - name: Install Ccache run: | choco install ccache - choco install ninja - name: Install MSMPI run: | @@ -54,8 +53,6 @@ jobs: python3 -m pip install numpy python3 -m pip install pyyaml cmake -C cmake/presets/windows.cmake \ - -D CMAKE_CXX_COMPILER=cl.exe \ - -D CMAKE_C_COMPILER=cl.exe \ -D CMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \ -D CMAKE_C_COMPILER_LAUNCHER=$(which ccache) \ -D DOWNLOAD_POTENTIALS=off \ @@ -64,8 +61,7 @@ jobs: -D WITH_JPEG=off \ -S cmake -B build \ -D BUILD_SHARED_LIBS=on \ - -D ENABLE_TESTING=on \ - -G Ninja + -D ENABLE_TESTING=on cmake --build build ccache -s diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 67b95c2ab8..1c41191ec8 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -973,6 +973,9 @@ message(STATUS "<<< Compilers and Flags: >>> C++ Standard: ${CMAKE_CXX_STANDARD} C++ Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} Defines: ${DEFINES}") +if(CMAKE_CXX_COMPILER_LAUNCHER) + message(STATUS, " Launcher: ${CMAKE_CXX_COMPILER_LAUNCHER}") +endif() get_target_property(OPTIONS lammps COMPILE_OPTIONS) if(OPTIONS) message(" Options: ${OPTIONS}") @@ -991,6 +994,9 @@ if(_index GREATER -1) Type: ${CMAKE_C_COMPILER_ID} Version: ${CMAKE_C_COMPILER_VERSION} C Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}") + if(CMAKE_C_COMPILER_LAUNCHER) + message(STATUS, " Launcher: ${CMAKE_C_COMPILER_LAUNCHER}") + endif() endif() message(STATUS "<<< Linker flags: >>>") message(STATUS "Executable name: ${LAMMPS_BINARY}") From 6d55da72078e744255a9f94cc45bed5df6327c2b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:00:51 -0400 Subject: [PATCH 200/326] bring back multi-config --- .github/workflows/compile-msvc.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 3de6a46c7c..941dd11d0f 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -62,16 +62,15 @@ jobs: -S cmake -B build \ -D BUILD_SHARED_LIBS=on \ -D ENABLE_TESTING=on - cmake --build build - ccache -s + cmake --build build --config Release --parallel 2 - name: Run LAMMPS executable shell: bash run: | - ./build/lmp.exe -h - ./build/lmp.exe -in bench/in.lj + ./build/Release/lmp.exe -h + ./build/Release/lmp.exe -in bench/in.lj - name: Run Unit Tests working-directory: build shell: bash - run: ctest -V -E FixTimestep:python_move_nve + run: ctest -V -C Release -E FixTimestep:python_move_nve From 6e612f68c2a688e0f1844bba0620b463c0fb9f43 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:09:47 -0400 Subject: [PATCH 201/326] remove misplaced comma --- cmake/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1c41191ec8..9c5ba9095a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -974,7 +974,7 @@ message(STATUS "<<< Compilers and Flags: >>> C++ Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} Defines: ${DEFINES}") if(CMAKE_CXX_COMPILER_LAUNCHER) - message(STATUS, " Launcher: ${CMAKE_CXX_COMPILER_LAUNCHER}") + message(STATUS " Launcher: ${CMAKE_CXX_COMPILER_LAUNCHER}") endif() get_target_property(OPTIONS lammps COMPILE_OPTIONS) if(OPTIONS) @@ -995,7 +995,7 @@ if(_index GREATER -1) Version: ${CMAKE_C_COMPILER_VERSION} C Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}") if(CMAKE_C_COMPILER_LAUNCHER) - message(STATUS, " Launcher: ${CMAKE_C_COMPILER_LAUNCHER}") + message(STATUS " Launcher: ${CMAKE_C_COMPILER_LAUNCHER}") endif() endif() message(STATUS "<<< Linker flags: >>>") From d85380476db063e21394c5e08fc46da5a91f4e48 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:38:12 -0400 Subject: [PATCH 202/326] alternate approach for using ninja with MSVC++ --- .github/workflows/compile-msvc.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 941dd11d0f..e2d9a3628a 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -22,12 +22,14 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + uses: ilammy/msvc-dev-cmd@v1 with: fetch-depth: 2 - name: Install Ccache run: | choco install ccache + choco install ninja - name: Install MSMPI run: | @@ -47,7 +49,6 @@ jobs: python-version: '3.11' - name: Building LAMMPS via CMake - shell: bash run: | ccache -z python3 -m pip install numpy @@ -61,16 +62,15 @@ jobs: -D WITH_JPEG=off \ -S cmake -B build \ -D BUILD_SHARED_LIBS=on \ - -D ENABLE_TESTING=on - cmake --build build --config Release --parallel 2 + -D ENABLE_TESTING=on \ + -D Ninja + cmake --build build --parallel 2 - name: Run LAMMPS executable - shell: bash run: | - ./build/Release/lmp.exe -h - ./build/Release/lmp.exe -in bench/in.lj + ./build/lmp.exe -h + ./build/lmp.exe -in bench/in.lj - name: Run Unit Tests working-directory: build - shell: bash - run: ctest -V -C Release -E FixTimestep:python_move_nve + run: ctest -V -E FixTimestep:python_move_nve From 73fdd66f039767a6f4ecccb47345915dbe381393 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:40:31 -0400 Subject: [PATCH 203/326] correct syntax issue --- .github/workflows/compile-msvc.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index e2d9a3628a..c33b632ee7 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -21,8 +21,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 - uses: ilammy/msvc-dev-cmd@v1 + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: x64 + - uses: actions/checkout@v4 with: fetch-depth: 2 From 11172b1c6248bf93f80b557d91eb7062d1ac9e5d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:42:50 -0400 Subject: [PATCH 204/326] use different structure --- .github/workflows/compile-msvc.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index c33b632ee7..0a5fbb9685 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -21,13 +21,15 @@ jobs: steps: - name: Checkout repository - - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: x64 - - uses: actions/checkout@v4 + uses: actions/checkout@v4 with: fetch-depth: 2 + - name: Enable MSVC++ + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: x64 + - name: Install Ccache run: | choco install ccache From b890aee7de124d7f6a4595667fedbc45b7da704a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:55:01 -0400 Subject: [PATCH 205/326] update alternate action from GitHub marketplace --- .github/workflows/compile-msvc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 0a5fbb9685..1596ec0994 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -26,7 +26,7 @@ jobs: fetch-depth: 2 - name: Enable MSVC++ - uses: ilammy/msvc-dev-cmd@v1 + uses: TheMrMilchmann/setup-msvc-dev@v3 with: arch: x64 From 34bd2c4f2ad7e55951056eac49c297947e4fdf3d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 14:58:46 -0400 Subject: [PATCH 206/326] use our own fork --- .github/workflows/compile-msvc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 1596ec0994..a8b2398cc5 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -26,7 +26,7 @@ jobs: fetch-depth: 2 - name: Enable MSVC++ - uses: TheMrMilchmann/setup-msvc-dev@v3 + uses: lammps/setup-msvc-dev@v3 with: arch: x64 From 06bee65a1aee07254201e62170e31a4c1010dfe8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 15:10:11 -0400 Subject: [PATCH 207/326] use windows style pathnames --- .github/workflows/compile-msvc.yml | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index a8b2398cc5..c5a40dec45 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -57,23 +57,13 @@ jobs: ccache -z python3 -m pip install numpy python3 -m pip install pyyaml - cmake -C cmake/presets/windows.cmake \ - -D CMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \ - -D CMAKE_C_COMPILER_LAUNCHER=$(which ccache) \ - -D DOWNLOAD_POTENTIALS=off \ - -D PKG_PYTHON=on \ - -D WITH_PNG=off \ - -D WITH_JPEG=off \ - -S cmake -B build \ - -D BUILD_SHARED_LIBS=on \ - -D ENABLE_TESTING=on \ - -D Ninja + cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -G Ninja cmake --build build --parallel 2 - name: Run LAMMPS executable run: | - ./build/lmp.exe -h - ./build/lmp.exe -in bench/in.lj + build\lmp.exe -h + build\lmp.exe -in bench\in.lj - name: Run Unit Tests working-directory: build From b372aa0bdcf357dd2d93970d6c1d1a5bc897417d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 15:18:27 -0400 Subject: [PATCH 208/326] try to skip using Fortran --- .github/workflows/compile-msvc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index c5a40dec45..b2d07f084d 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -57,7 +57,7 @@ jobs: ccache -z python3 -m pip install numpy python3 -m pip install pyyaml - cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -G Ninja + cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_Fortran_COMPILER="" -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -G Ninja cmake --build build --parallel 2 - name: Run LAMMPS executable From 0b7ba6f8c15dd252abf1e96dbe8cc7ff5d55291c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 15:23:55 -0400 Subject: [PATCH 209/326] let ninja decide how many processes to launch --- .github/workflows/compile-msvc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index b2d07f084d..2cc4da1e9a 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -58,7 +58,7 @@ jobs: python3 -m pip install numpy python3 -m pip install pyyaml cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_Fortran_COMPILER="" -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -G Ninja - cmake --build build --parallel 2 + cmake --build build - name: Run LAMMPS executable run: | From 80230746508ea589c4765a840b2640aa15898c7b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 15:30:40 -0400 Subject: [PATCH 210/326] build release version --- .github/workflows/compile-msvc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 2cc4da1e9a..fb702b9d15 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -57,7 +57,7 @@ jobs: ccache -z python3 -m pip install numpy python3 -m pip install pyyaml - cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_Fortran_COMPILER="" -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -G Ninja + cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_Fortran_COMPILER="" -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -D CMAKE_BUILD_TYPE=Release -G Ninja cmake --build build - name: Run LAMMPS executable From debda721700d44d45e0b2eaf64a615c367e31940 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 15:51:52 -0400 Subject: [PATCH 211/326] print ccache statistics after compilation again --- .github/workflows/compile-msvc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index fb702b9d15..63b8132592 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -59,6 +59,7 @@ jobs: python3 -m pip install pyyaml cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_Fortran_COMPILER="" -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -D CMAKE_BUILD_TYPE=Release -G Ninja cmake --build build + ccache -s - name: Run LAMMPS executable run: | From 2e58e4c4284172e4a0e67e8354bc657b48073b71 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 15:57:34 -0400 Subject: [PATCH 212/326] Simplify some more. don't install undetected MPI. --- .github/workflows/compile-msvc.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 63b8132592..e384f191e5 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -32,13 +32,7 @@ jobs: - name: Install Ccache run: | - choco install ccache - choco install ninja - - - name: Install MSMPI - run: | - nuget install MSMPIsdk - nuget install MSMPIDIST + choco install ccache ninja -y - name: Set up ccache uses: actions/cache@v4 From 62bfd7dc74329f5374641dd210df4aea0966e496 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 16:05:55 -0400 Subject: [PATCH 213/326] 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 214/326] 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 215/326] 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 216/326] 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 217/326] 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 218/326] 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 219/326] 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 220/326] 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 93d11c376d0eccde167e304b0aa1971bd28b518d Mon Sep 17 00:00:00 2001 From: EiPi Fun Date: Sun, 1 Sep 2024 15:47:46 +0800 Subject: [PATCH 221/326] Fix small typo and errors, unifiy example inputs --- doc/src/pair_hbond_dreiding.rst | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/doc/src/pair_hbond_dreiding.rst b/doc/src/pair_hbond_dreiding.rst index 7e73f23b08..185da8b90e 100644 --- a/doc/src/pair_hbond_dreiding.rst +++ b/doc/src/pair_hbond_dreiding.rst @@ -18,28 +18,27 @@ Syntax .. code-block:: LAMMPS - pair_style style N inner_distance_cutoff outer_distance_cutoff angle_cutof + pair_style style N inner_distance_cutoff outer_distance_cutoff angle_cutoff * style = *hbond/dreiding/lj* or *hbond/dreiding/morse* -* n = cosine angle periodicity +* N = power of angle cosine (integer) * inner_distance_cutoff = global inner cutoff for Donor-Acceptor interactions (distance units) * outer_distance_cutoff = global cutoff for Donor-Acceptor interactions (distance units) -* angle_cutoff = global angle cutoff for Acceptor-Hydrogen-Donor -* interactions (degrees) +* angle_cutoff = global angle cutoff for Acceptor-Hydrogen-Donor interactions (degrees) Examples """""""" .. code-block:: LAMMPS - pair_style hybrid/overlay lj/cut 10.0 hbond/dreiding/lj 4 9.0 11.0 90 + pair_style hybrid/overlay lj/cut 10.0 hbond/dreiding/lj 4 9.0 11.0 90.0 pair_coeff 1 2 hbond/dreiding/lj 3 i 9.5 2.75 4 9.0 11.0 90.0 - pair_style hybrid/overlay lj/cut 10.0 hbond/dreiding/morse 2 9.0 11.0 90 - pair_coeff 1 2 hbond/dreiding/morse 3 i 3.88 1.7241379 2.9 2 9 11 90 + pair_style hybrid/overlay lj/cut 10.0 hbond/dreiding/morse 2 9.0 11.0 90.0 + pair_coeff 1 2 hbond/dreiding/morse 3 i 3.88 1.7241379 2.9 2 9.0 11.0 90.0 labelmap atom 1 C 2 O 3 H - pair_coeff C O hbond/dreiding/morse H i 3.88 1.7241379 2.9 2 9 11 90 + pair_coeff C O hbond/dreiding/morse H i 3.88 1.7241379 2.9 2 9.0 11.0 90.0 Description """"""""""" @@ -65,7 +64,7 @@ force field, given by: where :math:`r_{\rm in}` is the inner spline distance cutoff, :math:`r_{\rm out}` is the outer distance cutoff, :math:`\theta_c` is -the angle cutoff, and *n* is the cosine periodicity. +the angle cutoff, and *n* is the power of angle cosine. Here, *r* is the radial distance between the donor (D) and acceptor (A) atoms and :math:`\theta` is the bond angle between the acceptor, the From a143e0a1830914236cfd2fdf28300e405eaa6b2e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:15:26 -0400 Subject: [PATCH 222/326] small corrections --- doc/src/pair_hbond_dreiding.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/src/pair_hbond_dreiding.rst b/doc/src/pair_hbond_dreiding.rst index 185da8b90e..ce19ff9e38 100644 --- a/doc/src/pair_hbond_dreiding.rst +++ b/doc/src/pair_hbond_dreiding.rst @@ -21,7 +21,7 @@ Syntax pair_style style N inner_distance_cutoff outer_distance_cutoff angle_cutoff * style = *hbond/dreiding/lj* or *hbond/dreiding/morse* -* N = power of angle cosine (integer) +* N = power of cosine of angle theta (integer) * inner_distance_cutoff = global inner cutoff for Donor-Acceptor interactions (distance units) * outer_distance_cutoff = global cutoff for Donor-Acceptor interactions (distance units) * angle_cutoff = global angle cutoff for Acceptor-Hydrogen-Donor interactions (degrees) @@ -64,7 +64,8 @@ force field, given by: where :math:`r_{\rm in}` is the inner spline distance cutoff, :math:`r_{\rm out}` is the outer distance cutoff, :math:`\theta_c` is -the angle cutoff, and *n* is the power of angle cosine. +the angle cutoff, and :math:`n` is the power of the cosine of the angle +:math:`\theta`. Here, *r* is the radial distance between the donor (D) and acceptor (A) atoms and :math:`\theta` is the bond angle between the acceptor, the @@ -216,7 +217,8 @@ These pair styles do not support the :doc:`pair_modify ` tail option for adding long-range tail corrections to energy and pressure. -These pair styles do not write their information to :doc:`binary restart files `, so pair_style and pair_coeff commands need to be +These pair styles do not write their information to :doc:`binary restart +files `, so pair_style and pair_coeff commands need to be re-specified in an input script that reads a restart file. These pair styles can only be used via the *pair* keyword of the From 1b5413189dd19961a74620a473ffa796ef355f0b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:15:58 -0400 Subject: [PATCH 223/326] Add more details to documentation of GitHub CLI "gh" --- doc/src/Build_development.rst | 38 ++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index 9cd938280b..f315569b24 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -630,11 +630,35 @@ The following target are available for both, GNU make and CMake: GitHub command line interface ----------------------------- -GitHub is developing a `tool for the command line -`_ that interacts with the GitHub website via a -command called ``gh``. This can be extremely convenient when working -with a Git repository hosted on GitHub (like LAMMPS). It is thus highly -recommended to install it when doing LAMMPS development. +GitHub has developed a `command line tool `_ +to interact with the GitHub website via a command called ``gh``. +This is extremely convenient when working with a Git repository hosted +on GitHub (like LAMMPS). It is thus highly recommended to install it +when doing LAMMPS development. To use ``gh`` you must be within a git +checkout of a repository and you must obtain an authentication token +to connect your checkout with a GitHub user. This is done with the +command: ``gh auth login`` where you then have to follow the prompts. +Here are some examples: -The capabilities of the ``gh`` command is continually expanding, so -please see the documentation at https://cli.github.com/manual/ +.. list-table:: + :header-rows: 1 + :widths: 34 66 + + * - Command + - Description + * - ``gh pr list`` + - List currently open pull requests + * - ``gh pr checks 404`` + - Shows the status of all checks for pull request #404 + * - ``gh pr view 404`` + - Shows the description and recent comments for pull request #404 + * - ``gh co 404`` + - Check out the branch from pull request #404; set up for pushing changes + * - ``gh issue list`` + - List currently open issues + * - ``gh issue view 430 --comments`` + - Shows the description and all comments for issue #430 + +The capabilities of the ``gh`` command are continually expanding, so +for more details please see the documentation at https://cli.github.com/manual/ +or use ``gh --help`` or ``gh --help`` for embedded help. From da98d30cf791ec94887ec95ee193e7e8fd265271 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 1 Sep 2024 08:31:52 -0400 Subject: [PATCH 224/326] 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 225/326] 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 226/326] 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 227/326] 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 228/326] 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 7c80b00f2389350686ab699fdadff3161f741f52 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 2 Sep 2024 06:26:27 -0400 Subject: [PATCH 229/326] small corrections in the DIFFRACTION package, mostly cosmetic --- src/DIFFRACTION/compute_saed.cpp | 12 ++++++------ src/DIFFRACTION/compute_xrd.cpp | 12 ++++++------ src/DIFFRACTION/fix_saed_vtk.cpp | 5 +++-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/DIFFRACTION/compute_saed.cpp b/src/DIFFRACTION/compute_saed.cpp index 1350257910..e2a7bb33d9 100644 --- a/src/DIFFRACTION/compute_saed.cpp +++ b/src/DIFFRACTION/compute_saed.cpp @@ -401,7 +401,7 @@ void ComputeSAED::compute_vector() // Setting up OMP #if defined(_OPENMP) - if (me == 0 && echo) utils::logmesg(lmp," using {}OMP threads\n",comm->nthreads); + if (me == 0 && echo) utils::logmesg(lmp," using {} OMP thread(s)\n",comm->nthreads); #endif if (me == 0 && echo) utils::logmesg(lmp,"\n"); @@ -478,7 +478,7 @@ void ComputeSAED::compute_vector() } } } // End of pragma omp for region - delete [] f; + delete[] f; } auto scratch = new double[2*nRows]; @@ -499,10 +499,10 @@ void ComputeSAED::compute_vector() utils::logmesg(lmp," 100% \nTime elapsed during compute_saed = {:.2f} sec " "using {:.2f} Mbytes/processor\n-----\n", t2-t0, bytes/1024.0/1024.0); - delete [] xlocal; - delete [] typelocal; - delete [] scratch; - delete [] Fvec; + delete[] xlocal; + delete[] typelocal; + delete[] scratch; + delete[] Fvec; } /* ---------------------------------------------------------------------- diff --git a/src/DIFFRACTION/compute_xrd.cpp b/src/DIFFRACTION/compute_xrd.cpp index 11e0bb9a9f..a769be7d4f 100644 --- a/src/DIFFRACTION/compute_xrd.cpp +++ b/src/DIFFRACTION/compute_xrd.cpp @@ -332,7 +332,7 @@ void ComputeXRD::compute_array() // Setting up OMP #if defined(_OPENMP) - if ((me == 0) && echo) utils::logmesg(lmp," using {} OMP threads\n",comm->nthreads); + if ((me == 0) && echo) utils::logmesg(lmp," using {} OMP thread(s)\n",comm->nthreads); #endif if ((me == 0) && echo) { @@ -482,7 +482,7 @@ void ComputeXRD::compute_array() } } // End of pragma omp for region } // End of if LP=1 check - delete [] f; + delete[] f; } // End of pragma omp parallel region auto scratch = new double[2*size_array_rows]; @@ -503,10 +503,10 @@ void ComputeXRD::compute_array() utils::logmesg(lmp," 100% \nTime elapsed during compute_xrd = {:.2f} sec " "using {:.2f} Mbytes/processor\n-----\n", t2-t0, bytes/1024.0/1024.0); - delete [] scratch; - delete [] Fvec; - delete [] xlocal; - delete [] typelocal; + delete[] scratch; + delete[] Fvec; + delete[] xlocal; + delete[] typelocal; } /* ---------------------------------------------------------------------- diff --git a/src/DIFFRACTION/fix_saed_vtk.cpp b/src/DIFFRACTION/fix_saed_vtk.cpp index b3f6693e9e..693bb925b6 100644 --- a/src/DIFFRACTION/fix_saed_vtk.cpp +++ b/src/DIFFRACTION/fix_saed_vtk.cpp @@ -114,6 +114,7 @@ FixSAEDVTK::FixSAEDVTK(LAMMPS *lmp, int narg, char **arg) : memory->create(vector_total,nrows,"saed/vtk:vector_total"); vector_flag = 1; + extvector = 0; size_vector = nrows; if (nOutput == 0) { @@ -248,8 +249,8 @@ FixSAEDVTK::FixSAEDVTK(LAMMPS *lmp, int narg, char **arg) : FixSAEDVTK::~FixSAEDVTK() { - delete [] filename; - delete [] ids; + delete[] filename; + delete[] ids; memory->destroy(vector); memory->destroy(vector_total); if (fp && comm->me == 0) fclose(fp); From 731847b4dccddc6fa22a31839e60155a294626e0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 2 Sep 2024 21:21:14 -0400 Subject: [PATCH 230/326] report proper style name in error messages --- src/MOLECULE/pair_hbond_dreiding_lj.cpp | 10 +++++----- src/MOLECULE/pair_hbond_dreiding_morse.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/MOLECULE/pair_hbond_dreiding_lj.cpp b/src/MOLECULE/pair_hbond_dreiding_lj.cpp index 274f8bc2a3..4536cc8e05 100644 --- a/src/MOLECULE/pair_hbond_dreiding_lj.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_lj.cpp @@ -396,14 +396,14 @@ void PairHbondDreidingLJ::init_style() // and computing forces on A,H which may be on different procs if (atom->molecular == Atom::ATOMIC) - error->all(FLERR,"Pair style hbond/dreiding requires molecular system"); + error->all(FLERR,"Pair style hbond/dreiding/lj requires molecular system"); if (atom->tag_enable == 0) - error->all(FLERR,"Pair style hbond/dreiding requires atom IDs"); + error->all(FLERR,"Pair style hbond/dreiding/lj requires atom IDs"); if (atom->map_style == Atom::MAP_NONE) - error->all(FLERR,"Pair style hbond/dreiding requires an atom map, " + error->all(FLERR,"Pair style hbond/dreiding/lj requires an atom map, " "see atom_modify"); if (force->newton_pair == 0) - error->all(FLERR,"Pair style hbond/dreiding requires newton pair on"); + error->all(FLERR,"Pair style hbond/dreiding/lj requires newton pair on"); // set donor[M]/acceptor[M] if any atom of type M is a donor/acceptor @@ -419,7 +419,7 @@ void PairHbondDreidingLJ::init_style() acceptor[j] = 1; } - if (!anyflag) error->all(FLERR,"No pair hbond/dreiding coefficients set"); + if (!anyflag) error->all(FLERR,"No pair hbond/dreiding/lj coefficients set"); // set additional param values // offset is for LJ only, angle term is not included diff --git a/src/MOLECULE/pair_hbond_dreiding_morse.cpp b/src/MOLECULE/pair_hbond_dreiding_morse.cpp index c8bc0a627d..d976b66460 100644 --- a/src/MOLECULE/pair_hbond_dreiding_morse.cpp +++ b/src/MOLECULE/pair_hbond_dreiding_morse.cpp @@ -323,14 +323,14 @@ void PairHbondDreidingMorse::init_style() // and computing forces on A,H which may be on different procs if (atom->molecular == Atom::ATOMIC) - error->all(FLERR,"Pair style hbond/dreiding requires molecular system"); + error->all(FLERR,"Pair style hbond/dreiding/morse requires molecular system"); if (atom->tag_enable == 0) - error->all(FLERR,"Pair style hbond/dreiding requires atom IDs"); + error->all(FLERR,"Pair style hbond/dreiding/morse requires atom IDs"); if (atom->map_style == Atom::MAP_NONE) - error->all(FLERR,"Pair style hbond/dreiding requires an atom map, " + error->all(FLERR,"Pair style hbond/dreiding/morse requires an atom map, " "see atom_modify"); if (force->newton_pair == 0) - error->all(FLERR,"Pair style hbond/dreiding requires newton pair on"); + error->all(FLERR,"Pair style hbond/dreiding/morse requires newton pair on"); // set donor[M]/acceptor[M] if any atom of type M is a donor/acceptor @@ -346,7 +346,7 @@ void PairHbondDreidingMorse::init_style() acceptor[j] = 1; } - if (!anyflag) error->all(FLERR,"No pair hbond/dreiding coefficients set"); + if (!anyflag) error->all(FLERR,"No pair hbond/dreiding/morse coefficients set"); // set additional param values // offset is for Morse only, angle term is not included From 2f7a7d1edba2f1bc010369b5e65f7a8c9514a0f6 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Tue, 3 Sep 2024 20:07:53 +0000 Subject: [PATCH 231/326] forgot shake header --- src/RIGID/fix_shake.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RIGID/fix_shake.h b/src/RIGID/fix_shake.h index d02fdd784a..2a629f6345 100644 --- a/src/RIGID/fix_shake.h +++ b/src/RIGID/fix_shake.h @@ -33,7 +33,7 @@ class FixShake : public Fix { ~FixShake() override; int setmask() override; void init() override; - void setup(int) override; + virtual void setup(int) override; void setup_pre_reverse(int, int) override; void min_setup(int) override; void pre_neighbor() override; From 42b6c0f62c18fd6582b228a9e97b836a42dbffb6 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Tue, 3 Sep 2024 20:10:29 +0000 Subject: [PATCH 232/326] enable cmake support --- cmake/Modules/Packages/KOKKOS.cmake | 12 +++++++++++- cmake/presets/kokkos-sycl-intel.cmake | 18 ++++++++++++++++++ ...kos-sycl.cmake => kokkos-sycl-nvidia.cmake} | 0 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 cmake/presets/kokkos-sycl-intel.cmake rename cmake/presets/{kokkos-sycl.cmake => kokkos-sycl-nvidia.cmake} (100%) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 3776d18a3e..fb12b8790e 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -127,7 +127,7 @@ if(PKG_KSPACE) ${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) set(FFT_KOKKOS "KISS" CACHE STRING "FFT library for Kokkos-enabled KSPACE package") - set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT) + set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT MKL_GPU) set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES}) validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES) string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS) @@ -155,6 +155,16 @@ if(PKG_KSPACE) target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT) target_link_libraries(lammps PRIVATE hip::hipfft) endif() + elseif(FFT_KOKKOS STREQUAL "MKL_GPU") + if(NOT Kokkos_ENABLE_SYCL) + message(FATAL_ERROR "Using MKL_GPU FFT currently requires the SYCL backend of Kokkos.") + endif() + find_package(MKL REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_MKL_GPU) + target_link_libraries(lammps PRIVATE mkl_sycl_dft mkl_intel_ilp64 mkl_tbb_thread mkl_core tbb) + elseif(FFT_KOKKOS STREQUAL "MKL") + find_package(MKL REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_MKL) endif() endif() diff --git a/cmake/presets/kokkos-sycl-intel.cmake b/cmake/presets/kokkos-sycl-intel.cmake new file mode 100644 index 0000000000..3fc75e4b2d --- /dev/null +++ b/cmake/presets/kokkos-sycl-intel.cmake @@ -0,0 +1,18 @@ +# preset that enables KOKKOS and selects SYCL compilation with OpenMP +# enabled as well. Also sets some performance related compiler flags. +set(PKG_KOKKOS ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE) +set(Kokkos_ENABLE_SYCL ON CACHE BOOL "" FORCE) + +# hide deprecation warnings temporarily for stable release +set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE) + +set(CMAKE_CXX_COMPILER icpx CACHE STRING "" FORCE) +set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) +set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE) +# Silence everything +set(CMAKE_CXX_FLAGS "-w" CACHE STRING "" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code -fsycl-max-parallel-link-jobs=32 -fsycl-targets=spir64_gen -Xsycl-target-backend \"-device 12.60.7\" " CACHE STRING "" FORCE) +set(CMAKE_TUNE_FLAGS "-O3 -fsycl -fsycl-device-code-split=per_kernel -fsycl-targets=spir64_gen" CACHE STRING "" FORCE) diff --git a/cmake/presets/kokkos-sycl.cmake b/cmake/presets/kokkos-sycl-nvidia.cmake similarity index 100% rename from cmake/presets/kokkos-sycl.cmake rename to cmake/presets/kokkos-sycl-nvidia.cmake From 4aefb894bba560eefbdf74f9c1dc62a5f211382a Mon Sep 17 00:00:00 2001 From: cjknight Date: Tue, 3 Sep 2024 15:56:16 -0500 Subject: [PATCH 233/326] remove comments --- src/KOKKOS/fft3d_kokkos.cpp | 1 - src/KOKKOS/fftdata_kokkos.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 09164731a3..42020e2247 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -44,7 +44,6 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int int ngpus = lmp->kokkos->ngpus; ExecutionSpace execution_space = ExecutionSpaceFromDevice::space; - // CHRIS:: what about supporting MKL on both CPU and GPU in same build?? #if defined(FFT_KOKKOS_MKL_GPU) if (ngpus > 0 && execution_space == Host) lmp->error->all(FLERR,"Cannot use the MKL library with Kokkos on the host CPUs in a GPU build"); diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index a967be5338..b2c436bc09 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -37,7 +37,7 @@ #endif // with KOKKOS in CUDA, HIP, or SYCL mode we can only have -// CUFFT/HIPFFT/oneMKL or KISS, thus undefine all other +// CUFFT/HIPFFT/MKL_GPU or KISS, thus undefine all other // FFTs here #ifdef KOKKOS_ENABLE_CUDA From e240619b9415a68ad51ae24c31256c5630bf6c88 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 3 Sep 2024 22:30:32 -0400 Subject: [PATCH 234/326] update pace plugin loader to include the two additional styles added --- examples/PACKAGES/pace/plugin/CMakeLists.txt | 8 +++-- examples/PACKAGES/pace/plugin/paceplugin.cpp | 32 ++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/examples/PACKAGES/pace/plugin/CMakeLists.txt b/examples/PACKAGES/pace/plugin/CMakeLists.txt index 0701a754c4..ede63e3d38 100644 --- a/examples/PACKAGES/pace/plugin/CMakeLists.txt +++ b/examples/PACKAGES/pace/plugin/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.16) -project(paceplugin VERSION 1.0 LANGUAGES CXX) +project(paceplugin VERSION 1.1 LANGUAGES CXX) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) include(CheckIncludeFileCXX) @@ -15,7 +15,11 @@ include(ML-PACE) ########################## # building the plugins -add_library(paceplugin MODULE paceplugin.cpp ${LAMMPS_SOURCE_DIR}/ML-PACE/pair_pace.cpp) +add_library(paceplugin MODULE paceplugin.cpp + ${LAMMPS_SOURCE_DIR}/ML-PACE/pair_pace.cpp + ${LAMMPS_SOURCE_DIR}/ML-PACE/pair_pace_extrapolation.cpp + ${LAMMPS_SOURCE_DIR}/ML-PACE/compute_pace.cpp) + target_link_libraries(paceplugin PRIVATE pace) target_link_libraries(paceplugin PRIVATE lammps) target_include_directories(paceplugin PRIVATE ${LAMMPS_SOURCE_DIR}/ML-PACE) diff --git a/examples/PACKAGES/pace/plugin/paceplugin.cpp b/examples/PACKAGES/pace/plugin/paceplugin.cpp index adf1c168f9..f231318d23 100644 --- a/examples/PACKAGES/pace/plugin/paceplugin.cpp +++ b/examples/PACKAGES/pace/plugin/paceplugin.cpp @@ -3,6 +3,8 @@ #include "version.h" #include "pair_pace.h" +#include "pair_pace_extrapolation.h" +#include "compute_pace.h" using namespace LAMMPS_NS; @@ -11,6 +13,16 @@ static Pair *pair_pace_creator(LAMMPS *lmp) return new PairPACE(lmp); } +static Pair *pair_pace_extrapolation_creator(LAMMPS *lmp) +{ + return new PairPACEExtrapolation(lmp); +} + +static Compute *compute_pace_creator(LAMMPS *lmp, int argc, char **argv) +{ + return new ComputePACE(lmp, argc, argv); +} + extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) { lammpsplugin_t plugin; @@ -25,4 +37,24 @@ extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) plugin.creator.v1 = (lammpsplugin_factory1 *) &pair_pace_creator; plugin.handle = handle; (*register_plugin)(&plugin, lmp); + + // register pace/extrapolation pair style + plugin.version = LAMMPS_VERSION; + plugin.style = "pair"; + plugin.name = "pace/extrapolation"; + plugin.info = "PACE plugin extrapolation pair style v1.0"; + plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; + plugin.creator.v1 = (lammpsplugin_factory1 *) &pair_pace_extrapolation_creator; + plugin.handle = handle; + (*register_plugin)(&plugin, lmp); + + // register pace compute style + plugin.version = LAMMPS_VERSION; + plugin.style = "compute"; + plugin.name = "pace"; + plugin.info = "PACE plugin compute style v1.0"; + plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; + plugin.creator.v2 = (lammpsplugin_factory2 *) &compute_pace_creator; + plugin.handle = handle; + (*register_plugin)(&plugin, lmp); } From 597c53756e1388d5a8b707bf6c5e3af1b087d2ba Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 3 Sep 2024 22:33:39 -0400 Subject: [PATCH 235/326] update plumed library to version 2.9.2 --- cmake/Modules/Packages/PLUMED.cmake | 4 ++-- lib/plumed/Install.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/Packages/PLUMED.cmake b/cmake/Modules/Packages/PLUMED.cmake index 595b6824c1..8dab157a24 100644 --- a/cmake/Modules/Packages/PLUMED.cmake +++ b/cmake/Modules/Packages/PLUMED.cmake @@ -32,9 +32,9 @@ endif() # Note: must also adjust check for supported API versions in # fix_plumed.cpp when version changes from v2.n.x to v2.n+1.y -set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.9.1/plumed-src-2.9.1.tgz" +set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.9.2/plumed-src-2.9.2.tgz" CACHE STRING "URL for PLUMED tarball") -set(PLUMED_MD5 "c3b2d31479c1e9ce211719d40e9efbd7" CACHE STRING "MD5 checksum of PLUMED tarball") +set(PLUMED_MD5 "04862602a372c1013bdfee2d6d03bace" CACHE STRING "MD5 checksum of PLUMED tarball") mark_as_advanced(PLUMED_URL) mark_as_advanced(PLUMED_MD5) diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 66501a74e9..485845b67a 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -19,7 +19,7 @@ parser = ArgumentParser(prog='Install.py', # Note: must also adjust check for supported API versions in # fix_plumed.cpp when version changes from v2.n.x to v2.n+1.y -version = "2.9.1" +version = "2.9.2" mode = "static" # help message @@ -51,6 +51,7 @@ checksums = { \ '2.8.4' : '9f59c4f9bda86fe5bef19543c295a981', \ '2.9.0' : '661eabeebee05cf84bbf9dc23d7d5f46', \ '2.9.1' : 'c3b2d31479c1e9ce211719d40e9efbd7', \ + '2.9.2' : '04862602a372c1013bdfee2d6d03bace', \ } # parse and process arguments From ec98481d010ed0a14e89282e1a30ff477910b801 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 4 Sep 2024 04:15:41 -0400 Subject: [PATCH 236/326] move check for libcurl to EXTRA-COMMAND.cmake package CMake module --- cmake/CMakeLists.txt | 10 +--------- cmake/Modules/Packages/EXTRA-COMMAND.cmake | 10 ++++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 cmake/Modules/Packages/EXTRA-COMMAND.cmake diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9c5ba9095a..c68a925324 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -515,14 +515,6 @@ if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR BUILD_T endif() endif() -find_package(CURL QUIET COMPONENTS HTTP HTTPS) -option(WITH_CURL "Enable libcurl support" ${CURL_FOUND}) -if(WITH_CURL) - find_package(CURL REQUIRED COMPONENTS HTTP HTTPS) - target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL) - target_link_libraries(lammps PRIVATE CURL::libcurl) -endif() - # tweak jpeg library names to avoid linker errors with MinGW cross-compilation set(JPEG_NAMES libjpeg libjpeg-62) find_package(JPEG QUIET) @@ -580,7 +572,7 @@ else() endif() foreach(PKG_WITH_INCL KSPACE PYTHON ML-IAP VORONOI COLVARS ML-HDNNP MDI MOLFILE NETCDF - PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM COMPRESS ML-PACE LEPTON RHEO) + PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM COMPRESS ML-PACE LEPTON RHEO EXTRA-COMMAND) if(PKG_${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL}) endif() diff --git a/cmake/Modules/Packages/EXTRA-COMMAND.cmake b/cmake/Modules/Packages/EXTRA-COMMAND.cmake new file mode 100644 index 0000000000..13c98bafd3 --- /dev/null +++ b/cmake/Modules/Packages/EXTRA-COMMAND.cmake @@ -0,0 +1,10 @@ +# the geturl command needs libcurl + +find_package(CURL QUIET COMPONENTS HTTP HTTPS) +option(WITH_CURL "Enable libcurl support" ${CURL_FOUND}) +if(WITH_CURL) + find_package(CURL REQUIRED COMPONENTS HTTP HTTPS) + target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL) + target_link_libraries(lammps PRIVATE CURL::libcurl) +endif() + From 311cac03489345531eb164071d1493983f73f182 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 4 Sep 2024 05:47:59 -0400 Subject: [PATCH 237/326] Add document describing how to implement a new command style --- doc/src/Developer_write.rst | 1 + doc/src/Developer_write_command.rst | 318 ++++++++++++++++++++++++++++ doc/src/Developer_write_pair.rst | 2 +- 3 files changed, 320 insertions(+), 1 deletion(-) create mode 100644 doc/src/Developer_write_command.rst diff --git a/doc/src/Developer_write.rst b/doc/src/Developer_write.rst index ef4d06a5f6..54b1b6eb81 100644 --- a/doc/src/Developer_write.rst +++ b/doc/src/Developer_write.rst @@ -12,3 +12,4 @@ details are provided for writing code for LAMMPS. Developer_write_pair Developer_write_fix + Developer_write_command diff --git a/doc/src/Developer_write_command.rst b/doc/src/Developer_write_command.rst new file mode 100644 index 0000000000..15142b2dfd --- /dev/null +++ b/doc/src/Developer_write_command.rst @@ -0,0 +1,318 @@ +Writing a new command style +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Command styles allow to do system manipulations or interfaces to the +operating system. + +In the text below, we will discuss the implementation of one example. As +shown on the page for :doc:`writing or extending command styles +`, in order to implement a new command style, a new class +must be written that is either directly or indirectly derived from the +``Command`` class. There is just one method that must be implemented: +``Command::command()``. In addition, a custom constructor is needed to get +access to the members of the ``LAMMPS`` class like the ``Error`` class to +print out error messages. The ``Command::command()`` method processes the +arguments passed to the command in the input and executes it. Any other +methods would be for the convenience of implementation of the new command. + +In general, new command styles should be added to the :ref:`EXTRA-COMMAND +package `. If you feel that your contribution should be +added to a different package, please consult with the :doc:`LAMMPS +developers ` first. The contributed code needs to support +the :doc:`traditional GNU make build process ` **and** the +:doc:`CMake build process `. + +---- + +Case 1: Implementing the geturl command +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In this section, we will describe the procedure of adding a simple command +style to LAMMPS: the :doc:`geturl command ` that allows to download +files directly without having to rely on an external program like "wget" or +"curl". The complete implementation can be found in the files +``src/EXTRA-COMMAND/geturl.cpp`` and ``src/EXTRA-COMMAND/geturl.h`` of the +LAMMPS source code. + +Interfacing the *libcurl* library +""""""""""""""""""""""""""""""""" + +Rather than implementing the various protocols for downloading files, we +rely on an external library: `libcurl library `_. +This requires that the library and its headers are installed. For the +traditional GNU make build system, this simply requires edits to the machine +makefile to add compilation flags like for other libraries. For the CMake +based build system, we need to add some lines to the file +``cmake/Modules/Packages/EXTRA-COMMAND.cmake``: + +.. code-block:: cmake + + find_package(CURL QUIET COMPONENTS HTTP HTTPS) + option(WITH_CURL "Enable libcurl support" ${CURL_FOUND}) + if(WITH_CURL) + find_package(CURL REQUIRED COMPONENTS HTTP HTTPS) + target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL) + target_link_libraries(lammps PRIVATE CURL::libcurl) + endif() + +The first ``find_package()`` command uses a built-in CMake module to find +an existing *libcurl* installation with development headers and support for +using the HTTP and HTTPS protocols. The "QUIET" flag ensures that there is +no screen output and no error if the search fails. The status of the search +is recorded in the "${CURL_FOUND}" variable. That variable sets the default +of the WITH_CURL option, which toggles whether support for *libcurl* is included +or not. + +The second ``find_package()`` uses the "REQUIRED" flag to produce an error +if the WITH_CURL option was set to ``True``, but no suitable *libcurl* +implementation with development support was found. This construct is used +so that the CMake script code inside the ``if(WITH_CURL)`` and ``endif()`` +block can be expanded later to download and compile *libcurl* as part of the +LAMMPS build process, if it is not found locally. The +``target_compile_definitions()`` function added the define ``-DLAMMPS_CURL`` +to the compilation flags when compiling objects for the LAMMPS library. +This allows to always compile the :doc:`geturl command `, but use +preprocessing to compile in the interface to *libcurl* only when it is +present and usable and otherwise stop with an error message about the +unavailability of *libcurl* to execute the functionality of the command. + +Header file +""""""""""" + +The first segment of any LAMMPS source should be the copyright and +license statement. Note the marker in the first line to indicate to +editors like emacs that this file is a C++ source, even though the .h +extension suggests a C source (this is a convention inherited from the +very beginning of the C++ version of LAMMPS). + +.. code-block:: c++ + + /* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + ------------------------------------------------------------------------- */ + +Every command style must be registered in LAMMPS by including the following +lines of code in the second part of the header after the copyright +message and before the include guards for the class definition: + +.. code-block:: c++ + + #ifdef COMMAND_CLASS + // clang-format off + CommandStyle(geturl,GetURL); + // clang-format on + #else + +This block between ``#ifdef COMMAND_CLASS`` and ``#else`` will be +included by the ``Input`` class in ``input.cpp`` to build a map of +"factory functions" that will create an instance of a Command class +and call its ``command()`` method. The map connects the name of the +command ``geturl`` with the name of the class ``GetURL``. During +compilation, LAMMPS constructs a file ``style_command.h`` that contains +``#include`` statements for all "installed" command styles. Before +including ``style_command.h`` into ``input.cpp``, the ``COMMAND_CLASS`` +define is set and the ``CommandStyle(name,class)`` macro defined. The +code of the macro adds the installed command styles to the "factory map" +which enables the ``Input`` to execute the command. + +The list of header files to include in ``style_command.h`` is automatically +updated by the build system if there are new files, so the presence of the +new header file in the ``src/EXTRA-COMMAND`` folder and the enabling of the +EXTRA-COMMAND package will trigger LAMMPS to include the new command style +when it is (re-)compiled. The "// clang-format" format comments are needed +so that running :ref:`clang-format ` on the file will not +insert unwanted blanks which would break the ``CommandStyle`` macro. + +The third part of the header file is the actual class definition of the +``GetURL`` class. This has the custom constructor and the ``command()`` +method implemented by this command style. For the constructor there is +nothing to do but to pass the ``lmp`` pointer to the base class. Since the +``command()`` method is labeled "virtual" in the base class, it must be +given the "override" property. + +.. code-block:: c++ + + #ifndef LMP_GETURL_H + #define LMP_GETURL_H + + #include "command.h" + + namespace LAMMPS_NS { + + class GetURL : public Command { + public: + GetURL(class LAMMPS *lmp) : Command(lmp) {}; + void command(int, char **) override; + }; + } // namespace LAMMPS_NS + #endif + #endif + +The "override" property helps to detect unexpected mismatches because +compilation will stop with an error in case the signature of a function +is changed in the base class without also changing it in all derived +classes. + +Implementation file +""""""""""""""""""" + +We move on to the implementation of the ``GetURL`` class in the +``geturl.cpp`` file. This file also starts with a LAMMPS copyright and +license header. Below that notice is typically the space where comments may +be added with additional information about this specific file, the +author(s), affiliation(s), and email address(es). This way the contributing +author(s) can be easily contacted, when there are questions about the +implementation later. Since the file(s) may be around for a long time, it +is beneficial to use some kind of "permanent" email address, if possible. + +.. code-block:: c++ + + /* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + ------------------------------------------------------------------------- */ + + /* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + ------------------------------------------------------------------------- */ + + #include "geturl.h" + + #include "comm.h" + #include "error.h" + + #if defined(LAMMPS_CURL) + #include + #endif + + using namespace LAMMPS_NS; + +The second section of the implementation file has various include +statements. The include file for the class header has to come first, +then a couple of LAMMPS classes (sorted alphabetically) followed by a +block of system headers and others, if needed. Note the standardized +C++ notation for headers of C-library functions (``cmath`` instead of +``math.h``). The final statement of this segment imports the +``LAMMPS_NS::`` namespace globally for this file. This way, all LAMMPS +specific functions and classes do not have to be prefixed with +``LAMMPS_NS::``. + +The command() function (required) +""""""""""""""""""""""""""""""""" + +Since the required custom constructor is trivial and implemented in the +header, there is only one function that must be implemented for a command +style and that is the ``command()`` function. + +.. code-block:: c++ + + void GetURL::command(int narg, char **arg) + { + #if !defined(LAMMPS_CURL) + error->all(FLERR, "LAMMPS has not been compiled with libcurl support"); + #else + if (narg < 1) utils::missing_cmd_args(FLERR, "geturl", error); + int verify = 1; + int overwrite = 1; + int verbose = 0; + + // process arguments + + std::string url = arg[0]; + + // sanity check + + if ((url.find(':') == std::string::npos) || (url.find('/') == std::string::npos)) + error->all(FLERR, "URL '{}' is not a supported URL", url); + + std::string output = url.substr(url.find_last_of('/') + 1); + if (output.empty()) error->all(FLERR, "URL '{}' must end in a file string", url); + + int iarg = 1; + while (iarg < narg) { + if (strcmp(arg[iarg], "output") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl output", error); + output = arg[iarg + 1]; + ++iarg; + } else if (strcmp(arg[iarg], "overwrite") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl overwrite", error); + overwrite = utils::logical(FLERR, arg[iarg + 1], false, lmp); + ++iarg; + } else if (strcmp(arg[iarg], "verify") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl verify", error); + verify = utils::logical(FLERR, arg[iarg + 1], false, lmp); + ++iarg; + } else if (strcmp(arg[iarg], "verbose") == 0) { + if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl verbose", error); + verbose = utils::logical(FLERR, arg[iarg + 1], false, lmp); + ++iarg; + } else { + error->all(FLERR, "Unknown geturl keyword: {}", arg[iarg]); + } + ++iarg; + } + +.. code-block:: c++ + + // only download files from rank 0 + + if (comm->me != 0) return; + + if (!overwrite && platform::file_is_readable(output)) return; + + // open output file for writing + + FILE *out = fopen(output.c_str(), "wb"); + if (!out) + error->all(FLERR, "Cannot open output file {} for writing: {}", output, utils::getsyserror()); + +.. code-block:: c++ + + // initialize curl and perform download + + CURL *curl; + curl_global_init(CURL_GLOBAL_DEFAULT); + curl = curl_easy_init(); + if (curl) { + (void) curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); + (void) curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) out); + (void) curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); + (void) curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L); + if (verbose && screen) { + (void) curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); + (void) curl_easy_setopt(curl, CURLOPT_STDERR, (void *) screen); + } + if (!verify) { + (void) curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + (void) curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + } + auto res = curl_easy_perform(curl); + if (res != CURLE_OK) { + long response = 0L; + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response); + error->one(FLERR, "Download of {} failed with: {} {}", output, curl_easy_strerror(res), + response); + } + curl_easy_cleanup(curl); + } + curl_global_cleanup(); + fclose(out); + #endif + } diff --git a/doc/src/Developer_write_pair.rst b/doc/src/Developer_write_pair.rst index 1433effc54..5d5e081042 100644 --- a/doc/src/Developer_write_pair.rst +++ b/doc/src/Developer_write_pair.rst @@ -160,7 +160,7 @@ message and before the include guards for the class definition: #endif -This block of between ``#ifdef PAIR_CLASS`` and ``#else`` will be +This block between ``#ifdef PAIR_CLASS`` and ``#else`` will be included by the ``Force`` class in ``force.cpp`` to build a map of "factory functions" that will create an instance of these classes and return a pointer to it. The map connects the name of the pair style, From 7d93460717109a3837bda12860ddec800e59c4a4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 4 Sep 2024 08:23:29 -0400 Subject: [PATCH 238/326] add commented example for implementing a command style --- doc/src/Developer_write_command.rst | 46 +++++++++++++++++---- doc/utils/sphinx-config/false_positives.txt | 1 + 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/doc/src/Developer_write_command.rst b/doc/src/Developer_write_command.rst index 15142b2dfd..16ac2092f6 100644 --- a/doc/src/Developer_write_command.rst +++ b/doc/src/Developer_write_command.rst @@ -72,7 +72,7 @@ LAMMPS build process, if it is not found locally. The ``target_compile_definitions()`` function added the define ``-DLAMMPS_CURL`` to the compilation flags when compiling objects for the LAMMPS library. This allows to always compile the :doc:`geturl command `, but use -preprocessing to compile in the interface to *libcurl* only when it is +pre-processing to compile in the interface to *libcurl* only when it is present and usable and otherwise stop with an error message about the unavailability of *libcurl* to execute the functionality of the command. @@ -205,13 +205,13 @@ is beneficial to use some kind of "permanent" email address, if possible. using namespace LAMMPS_NS; The second section of the implementation file has various include -statements. The include file for the class header has to come first, -then a couple of LAMMPS classes (sorted alphabetically) followed by a -block of system headers and others, if needed. Note the standardized -C++ notation for headers of C-library functions (``cmath`` instead of -``math.h``). The final statement of this segment imports the -``LAMMPS_NS::`` namespace globally for this file. This way, all LAMMPS -specific functions and classes do not have to be prefixed with +statements. The include file for the class header has to come first, then a +couple of LAMMPS classes (sorted alphabetically) followed by the header for +the *libcurl* interface. This is wrapped into an ``#ifdef`` block so that +LAMMPS will compile this file without error when the *libcurl* header is not +available and thus the define not set. The final statement of this segment +imports the ``LAMMPS_NS::`` namespace globally for this file. This way, all +LAMMPS specific functions and classes do not have to be prefixed with ``LAMMPS_NS::``. The command() function (required) @@ -233,6 +233,13 @@ style and that is the ``command()`` function. int overwrite = 1; int verbose = 0; +This first part also has the ``#ifdef`` block depending on the LAMMPS_CURL +define. This way the command will simply print an error, if *libcurl* is +not available but will not fail to compile. Furthermore, it sets the +defaults for the following optional arguments. + +.. code-block:: c++ + // process arguments std::string url = arg[0]; @@ -245,6 +252,12 @@ style and that is the ``command()`` function. std::string output = url.substr(url.find_last_of('/') + 1); if (output.empty()) error->all(FLERR, "URL '{}' must end in a file string", url); +This block stores the positional, i.e. non-optional argument of the URL to +be downloaded and adds a couple of sanity checks on the string to make sure it is +a valid URL. Also it derives the default name of the output file from the URL. + +.. code-block:: c++ + int iarg = 1; while (iarg < narg) { if (strcmp(arg[iarg], "output") == 0) { @@ -269,6 +282,9 @@ style and that is the ``command()`` function. ++iarg; } +This block parses the optional arguments following the URL and stops with an +error if there are arguments missing or an unknown argument is encountered. + .. code-block:: c++ // only download files from rank 0 @@ -283,6 +299,10 @@ style and that is the ``command()`` function. if (!out) error->all(FLERR, "Cannot open output file {} for writing: {}", output, utils::getsyserror()); +Here all MPI ranks other than 0 will return, so that the URL download will +only happen from a single MPI rank. For that rank the output file is opened +for writing using the C library function ``fopen()``. + .. code-block:: c++ // initialize curl and perform download @@ -311,8 +331,18 @@ style and that is the ``command()`` function. response); } curl_easy_cleanup(curl); + +This block now implements the actual URL download with the selected options +via the "easy" interface of *libcurl*. For the details of what these +function calls do, please have a look at the `*libcurl documentation +`_. + + .. code-block:: c++ + } curl_global_cleanup(); fclose(out); #endif } + +Finally, the previously opened file is closed and the command is complete. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index cfbddbe5f6..4ee25ffc12 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1539,6 +1539,7 @@ idx ie ielement ieni +ifdef ifdefs iff ifort From 26af8878c932aeaa24310118213a459a732e2e4a Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 4 Sep 2024 11:13:35 -0600 Subject: [PATCH 239/326] More general fix --- src/KOKKOS/fix_shake_kokkos.cpp | 11 ----------- src/KOKKOS/fix_shake_kokkos.h | 1 - src/KOKKOS/verlet_kokkos.cpp | 5 ++++- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/fix_shake_kokkos.cpp b/src/KOKKOS/fix_shake_kokkos.cpp index 4602546579..47f932d8f2 100644 --- a/src/KOKKOS/fix_shake_kokkos.cpp +++ b/src/KOKKOS/fix_shake_kokkos.cpp @@ -172,17 +172,6 @@ void FixShakeKokkos::init() k_angle_distance.sync(); } -/* ---------------------------------------------------------------------- - SHAKE as pre-integrator constraint -------------------------------------------------------------------------- */ - -template -void FixShakeKokkos::setup(int vflag) -{ - FixShake::setup(vflag); - atomKK->sync(Host,F_MASK); -} - /* ---------------------------------------------------------------------- run setup for minimization. ------------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fix_shake_kokkos.h b/src/KOKKOS/fix_shake_kokkos.h index 519db18b5f..31a6c340be 100644 --- a/src/KOKKOS/fix_shake_kokkos.h +++ b/src/KOKKOS/fix_shake_kokkos.h @@ -52,7 +52,6 @@ class FixShakeKokkos : public FixShake, public KokkosBase { FixShakeKokkos(class LAMMPS *, int, char **); ~FixShakeKokkos() override; void init() override; - void setup(int) override; void min_setup(int) override; void pre_neighbor() override; void post_force(int) override; diff --git a/src/KOKKOS/verlet_kokkos.cpp b/src/KOKKOS/verlet_kokkos.cpp index 858df5df6c..d839362aa5 100644 --- a/src/KOKKOS/verlet_kokkos.cpp +++ b/src/KOKKOS/verlet_kokkos.cpp @@ -162,8 +162,10 @@ void VerletKokkos::setup(int flag) lmp->kokkos->auto_sync = 0; modify->setup(vflag); - output->setup(flag); lmp->kokkos->auto_sync = 1; + + atomKK->sync(Host,ALL_MASK); + output->setup(flag); update->setupflag = 0; } @@ -252,6 +254,7 @@ void VerletKokkos::setup_minimal(int flag) lmp->kokkos->auto_sync = 0; modify->setup(vflag); lmp->kokkos->auto_sync = 1; + update->setupflag = 0; } From 9e8a1f473400fc6d32b3d31cd54c39cab315ced4 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 4 Sep 2024 11:15:59 -0600 Subject: [PATCH 240/326] Remove comment --- src/KOKKOS/fft3d_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 42020e2247..defccd337f 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -629,7 +629,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl // and scaling normalization #if defined(FFT_KOKKOS_MKL_GPU) - sycl::queue queue = LMPDeviceType().sycl_queue(); // is this the correct queue? + sycl::queue queue = LMPDeviceType().sycl_queue(); plan->desc_fast = new descriptor_t (nfast); plan->desc_fast->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nfast); From 37e6f3ef212b359cb3711ea8e9ac22aa16a22e72 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 23 Aug 2024 13:45:46 -0600 Subject: [PATCH 241/326] kspace: add NVPL FFT support --- cmake/Modules/Packages/KOKKOS.cmake | 10 +++++----- cmake/Modules/Packages/KSPACE.cmake | 6 +++++- src/KOKKOS/fft3d_kokkos.cpp | 19 +++++++++++-------- src/KOKKOS/fft3d_kokkos.h | 2 +- src/KOKKOS/fftdata_kokkos.h | 16 +++++++++++++++- src/KSPACE/fft3d.cpp | 28 ++++++++++++++-------------- src/KSPACE/fft3d.h | 11 ++++++++++- src/info.cpp | 4 ++++ 8 files changed, 65 insertions(+), 31 deletions(-) diff --git a/cmake/Modules/Packages/KOKKOS.cmake b/cmake/Modules/Packages/KOKKOS.cmake index 3776d18a3e..980b0595e7 100644 --- a/cmake/Modules/Packages/KOKKOS.cmake +++ b/cmake/Modules/Packages/KOKKOS.cmake @@ -127,7 +127,7 @@ if(PKG_KSPACE) ${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) set(FFT_KOKKOS "KISS" CACHE STRING "FFT library for Kokkos-enabled KSPACE package") - set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT) + set(FFT_KOKKOS_VALUES KISS FFTW3 MKL NVPL HIPFFT CUFFT) set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES}) validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES) string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS) @@ -137,10 +137,8 @@ if(PKG_KSPACE) message(FATAL_ERROR "The CUDA backend of Kokkos requires either KISS FFT or CUFFT.") elseif(FFT_KOKKOS STREQUAL "KISS") message(WARNING "Using KISS FFT with the CUDA backend of Kokkos may be sub-optimal.") - target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS) elseif(FFT_KOKKOS STREQUAL "CUFFT") find_package(CUDAToolkit REQUIRED) - target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_CUFFT) target_link_libraries(lammps PRIVATE CUDA::cufft) endif() elseif(Kokkos_ENABLE_HIP) @@ -148,14 +146,16 @@ if(PKG_KSPACE) message(FATAL_ERROR "The HIP backend of Kokkos requires either KISS FFT or HIPFFT.") elseif(FFT_KOKKOS STREQUAL "KISS") message(WARNING "Using KISS FFT with the HIP backend of Kokkos may be sub-optimal.") - target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS) elseif(FFT_KOKKOS STREQUAL "HIPFFT") include(DetectHIPInstallation) find_package(hipfft REQUIRED) - target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT) target_link_libraries(lammps PRIVATE hip::hipfft) endif() + elseif(FFT_KOKKOS STREQUAL "NVPL") + find_package(nvpl_fft REQUIRED) + target_link_libraries(lammps PRIVATE nvpl::fftw) endif() + target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_${FFT_KOKKOS}) endif() if(PKG_ML-IAP) diff --git a/cmake/Modules/Packages/KSPACE.cmake b/cmake/Modules/Packages/KSPACE.cmake index 1fdd898144..3801140fe0 100644 --- a/cmake/Modules/Packages/KSPACE.cmake +++ b/cmake/Modules/Packages/KSPACE.cmake @@ -10,7 +10,7 @@ if(${FFTW}_FOUND) else() set(FFT "KISS" CACHE STRING "FFT library for KSPACE package") endif() -set(FFT_VALUES KISS FFTW3 MKL) +set(FFT_VALUES KISS FFTW3 MKL NVPL) set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES}) validate_option(FFT FFT_VALUES) string(TOUPPER ${FFT} FFT) @@ -41,6 +41,10 @@ elseif(FFT STREQUAL "MKL") target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS) endif() target_link_libraries(lammps PRIVATE MKL::MKL) +elseif(FFT STREQUAL "NVPL") + find_package(nvpl_fft REQUIRED) + target_compile_definitions(lammps PRIVATE -DFFT_NVPL) + target_link_libraries(lammps PRIVATE nvpl::fftw) else() # last option is KISSFFT target_compile_definitions(lammps PRIVATE -DFFT_KISS) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 9d5347f173..687c7dc4e8 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -50,6 +50,9 @@ FFT3dKokkos::FFT3dKokkos(LAMMPS *lmp, MPI_Comm comm, int nfast, int #elif defined(FFT_KOKKOS_FFTW3) if (ngpus > 0 && execution_space == Device) lmp->error->all(FLERR,"Cannot use the FFTW library with Kokkos on GPUs"); +#elif defined(FFT_KOKKOS_NVPL) + if (ngpus > 0 && execution_space == Device) + lmp->error->all(FLERR,"Cannot use the NVPL FFT library with Kokkos on GPUs"); #elif defined(FFT_KOKKOS_CUFFT) if (ngpus > 0 && execution_space == Host) lmp->error->all(FLERR,"Cannot use the cuFFT library with Kokkos on the host CPUs"); @@ -151,7 +154,7 @@ public: KOKKOS_INLINE_FUNCTION void operator() (const int &i) const { -#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) +#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) || defined(FFT_KOKKOS_NVPL) FFT_SCALAR* out_ptr = (FFT_SCALAR *)(d_out.data()+i); *(out_ptr++) *= norm; *(out_ptr++) *= norm; @@ -226,7 +229,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, DftiComputeForward(plan->handle_fast,d_data.data()); else DftiComputeBackward(plan->handle_fast,d_data.data()); - #elif defined(FFT_KOKKOS_FFTW3) + #elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) if (flag == 1) FFTW_API(execute_dft)(plan->plan_fast_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); else @@ -272,7 +275,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, DftiComputeForward(plan->handle_mid,d_data.data()); else DftiComputeBackward(plan->handle_mid,d_data.data()); - #elif defined(FFT_KOKKOS_FFTW3) + #elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) if (flag == 1) FFTW_API(execute_dft)(plan->plan_mid_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); else @@ -316,7 +319,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, DftiComputeForward(plan->handle_slow,d_data.data()); else DftiComputeBackward(plan->handle_slow,d_data.data()); - #elif defined(FFT_KOKKOS_FFTW3) + #elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) if (flag == 1) FFTW_API(execute_dft)(plan->plan_slow_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); else @@ -647,7 +650,7 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl #endif DftiCommitDescriptor(plan->handle_slow); -#elif defined(FFT_KOKKOS_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) #if defined (FFT_KOKKOS_FFTW_THREADS) if (nthreads > 1) { @@ -786,7 +789,7 @@ void FFT3dKokkos::fft_3d_destroy_plan_kokkos(struct fft_plan_3d_kokk DftiFreeDescriptor(&(plan->handle_fast)); DftiFreeDescriptor(&(plan->handle_mid)); DftiFreeDescriptor(&(plan->handle_slow)); -#elif defined(FFT_KOKKOS_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) FFTW_API(destroy_plan)(plan->plan_slow_forward); FFTW_API(destroy_plan)(plan->plan_slow_backward); FFTW_API(destroy_plan)(plan->plan_mid_forward); @@ -857,7 +860,7 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ // fftw3 and Dfti in MKL encode the number of transforms // into the plan, so we cannot operate on a smaller data set -#if defined(FFT_KOKKOS_MKL) || defined(FFT_KOKKOS_FFTW3) +#if defined(FFT_KOKKOS_MKL) || defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) if ((total1 > nsize) || (total2 > nsize) || (total3 > nsize)) return; #endif @@ -878,7 +881,7 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ DftiComputeBackward(plan->handle_mid,d_data.data()); DftiComputeBackward(plan->handle_slow,d_data.data()); } -#elif defined(FFT_KOKKOS_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) if (flag == -1) { FFTW_API(execute_dft)(plan->plan_fast_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); FFTW_API(execute_dft)(plan->plan_mid_forward,(FFT_KOKKOS_DATA*)d_data.data(),(FFT_KOKKOS_DATA*)d_data.data()); diff --git a/src/KOKKOS/fft3d_kokkos.h b/src/KOKKOS/fft3d_kokkos.h index 48b0fd76de..dd771ef6c8 100644 --- a/src/KOKKOS/fft3d_kokkos.h +++ b/src/KOKKOS/fft3d_kokkos.h @@ -49,7 +49,7 @@ struct fft_plan_3d_kokkos { DFTI_DESCRIPTOR *handle_fast; DFTI_DESCRIPTOR *handle_mid; DFTI_DESCRIPTOR *handle_slow; -#elif defined(FFT_KOKKOS_FFTW3) +#elif defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) FFTW_API(plan) plan_fast_forward; FFTW_API(plan) plan_fast_backward; FFTW_API(plan) plan_mid_forward; diff --git a/src/KOKKOS/fftdata_kokkos.h b/src/KOKKOS/fftdata_kokkos.h index 0cb59f49cb..88016aa7cf 100644 --- a/src/KOKKOS/fftdata_kokkos.h +++ b/src/KOKKOS/fftdata_kokkos.h @@ -60,6 +60,9 @@ # if defined(FFT_KOKKOS_FFTW3) # undef FFT_KOKKOS_FFTW3 # endif +# if defined(FFT_KOKKOS_NVPL) +# undef FFT_KOKKOS_NVPL +# endif # if defined(FFT_KOKKOS_MKL) # undef FFT_KOKKOS_MKL # endif @@ -85,6 +88,8 @@ #define LMP_FFT_KOKKOS_LIB "FFTW3" #elif defined(FFT_KOKKOS_MKL) #define LMP_FFT_KOKKOS_LIB "MKL FFT" +#elif defined(FFT_KOKKOS_NVPL) +#define LMP_FFT_KOKKOS_LIB "NVPL FFT" #else #define LMP_FFT_KOKKOS_LIB "KISS FFT" #endif @@ -108,6 +113,15 @@ typedef fftw_complex FFT_KOKKOS_DATA; #define FFTW_API(function) fftw_ ## function #endif +#elif defined(FFT_KOKKOS_NVPL) + #include "nvpl_fftw.h" + #if defined(FFT_SINGLE) + typedef fftwf_complex FFT_KOKKOS_DATA; + #define FFTW_API(function) fftwf_ ## function + #else + typedef fftw_complex FFT_KOKKOS_DATA; + #define FFTW_API(function) fftw_ ## function + #endif #elif defined(FFT_KOKKOS_CUFFT) #include "cufft.h" #if defined(FFT_SINGLE) @@ -146,7 +160,7 @@ #endif // (double[2]*) is not a 1D pointer -#if defined(FFT_KOKKOS_FFTW3) +#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_NVPL) typedef FFT_SCALAR* FFT_KOKKOS_DATA_POINTER; #else typedef FFT_KOKKOS_DATA* FFT_KOKKOS_DATA_POINTER; diff --git a/src/KSPACE/fft3d.cpp b/src/KSPACE/fft3d.cpp index a9956f4397..9ee798b50d 100644 --- a/src/KSPACE/fft3d.cpp +++ b/src/KSPACE/fft3d.cpp @@ -72,14 +72,14 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan) { FFT_SCALAR norm; -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) FFT_SCALAR *out_ptr; #endif FFT_DATA *data,*copy; // system specific constants -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) FFTW_API(plan) theplan; #else // nothing to do for other FFTs @@ -105,7 +105,7 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan) DftiComputeForward(plan->handle_fast,data); else DftiComputeBackward(plan->handle_fast,data); -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) if (flag == 1) theplan=plan->plan_fast_forward; else @@ -139,7 +139,7 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan) DftiComputeForward(plan->handle_mid,data); else DftiComputeBackward(plan->handle_mid,data); -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) if (flag == 1) theplan=plan->plan_mid_forward; else @@ -173,7 +173,7 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan) DftiComputeForward(plan->handle_slow,data); else DftiComputeBackward(plan->handle_slow,data); -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) if (flag == 1) theplan=plan->plan_slow_forward; else @@ -203,11 +203,11 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan) if (flag == -1 && plan->scaled) { norm = plan->norm; const int num = plan->normnum; -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) out_ptr = (FFT_SCALAR *)out; #endif for (int i = 0; i < num; i++) { -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) *(out_ptr++) *= norm; *(out_ptr++) *= norm; #elif defined(FFT_MKL) @@ -515,7 +515,7 @@ struct fft_plan_3d *fft_3d_create_plan( #endif DftiCommitDescriptor(plan->handle_slow); -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) #if defined(FFT_FFTW_THREADS) if (nthreads > 1) { FFTW_API(init_threads)(); @@ -613,7 +613,7 @@ void fft_3d_destroy_plan(struct fft_plan_3d *plan) DftiFreeDescriptor(&(plan->handle_fast)); DftiFreeDescriptor(&(plan->handle_mid)); DftiFreeDescriptor(&(plan->handle_slow)); -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) FFTW_API(destroy_plan)(plan->plan_slow_forward); FFTW_API(destroy_plan)(plan->plan_slow_backward); FFTW_API(destroy_plan)(plan->plan_mid_forward); @@ -714,7 +714,7 @@ void fft_1d_only(FFT_DATA *data, int nsize, int flag, struct fft_plan_3d *plan) { int i,num; FFT_SCALAR norm; -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) FFT_SCALAR *data_ptr; #endif @@ -733,7 +733,7 @@ void fft_1d_only(FFT_DATA *data, int nsize, int flag, struct fft_plan_3d *plan) // fftw3 and Dfti in MKL encode the number of transforms // into the plan, so we cannot operate on a smaller data set -#if defined(FFT_MKL) || defined(FFT_FFTW3) +#if defined(FFT_MKL) || defined(FFT_FFTW3) || defined(FFT_NVPL) if ((total1 > nsize) || (total2 > nsize) || (total3 > nsize)) return; #endif @@ -754,7 +754,7 @@ void fft_1d_only(FFT_DATA *data, int nsize, int flag, struct fft_plan_3d *plan) DftiComputeBackward(plan->handle_mid,data); DftiComputeBackward(plan->handle_slow,data); } -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) FFTW_API(plan) theplan; if (flag == 1) theplan=plan->plan_fast_forward; @@ -795,11 +795,11 @@ void fft_1d_only(FFT_DATA *data, int nsize, int flag, struct fft_plan_3d *plan) if (flag == -1 && plan->scaled) { norm = plan->norm; num = MIN(plan->normnum,nsize); -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) data_ptr = (FFT_SCALAR *)data; #endif for (i = 0; i < num; i++) { -#if defined(FFT_FFTW3) +#if defined(FFT_FFTW3) || defined(FFT_NVPL) *(data_ptr++) *= norm; *(data_ptr++) *= norm; #elif defined(FFT_MKL) diff --git a/src/KSPACE/fft3d.h b/src/KSPACE/fft3d.h index f4ddeebc4d..34b9c3d4fc 100644 --- a/src/KSPACE/fft3d.h +++ b/src/KSPACE/fft3d.h @@ -31,6 +31,10 @@ typedef MKL_Complex8 FFT_DATA; typedef fftwf_complex FFT_DATA; #define FFTW_API(function) fftwf_##function +#elif defined(FFT_NVPL) +#include "nvpl_fftw.h" +typedef fftwf_complex FFT_DATA; +#define FFTW_API(function) fftwf_##function #else /* use a stripped down version of kiss fft as default fft */ @@ -64,6 +68,11 @@ typedef MKL_Complex16 FFT_DATA; typedef fftw_complex FFT_DATA; #define FFTW_API(function) fftw_##function +#elif defined(FFT_NVPL) +#include "nvpl_fftw.h" +typedef fftw_complex FFT_DATA; +#define FFTW_API(function) fftw_##function + #else /* use a stripped down version of kiss fft as default fft */ @@ -108,7 +117,7 @@ struct fft_plan_3d { DFTI_DESCRIPTOR *handle_fast; DFTI_DESCRIPTOR *handle_mid; DFTI_DESCRIPTOR *handle_slow; -#elif defined(FFT_FFTW3) +#elif defined(FFT_FFTW3) || defined(FFT_NVPL) FFTW_API(plan) plan_fast_forward; FFTW_API(plan) plan_fast_backward; FFTW_API(plan) plan_mid_forward; diff --git a/src/info.cpp b/src/info.cpp index 98ed06f498..9122280550 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -1316,6 +1316,8 @@ std::string Info::get_fft_info() #else fft_info += "FFT library = MKL\n"; #endif +#elif defined(FFT_NVPL) + fft_info += "FFT library = NVPL\n"; #elif defined(FFT_FFTW3) #if defined(FFT_FFTW_THREADS) fft_info += "FFT library = FFTW3 with threads\n"; @@ -1338,6 +1340,8 @@ std::string Info::get_fft_info() #else fft_info += "KOKKOS FFT library = FFTW3\n"; #endif +#elif defined(FFT_KOKKOS_NVPL) + fft_info += "KOKKOS FFT library = NVPL\n"; #elif defined(FFT_KOKKOS_MKL) #if defined(FFT_KOKKOS_MKL_THREADS) fft_info += "KOKKOS FFT library = MKL with threads\n"; From 18514f404f826a573bba0baa3e5d2f3b637d38ef Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 4 Sep 2024 11:59:01 -0600 Subject: [PATCH 242/326] docs: mentiond build options for NVPL FFT --- doc/src/Build_settings.rst | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 9d31f6b431..e5ebfa0027 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -67,9 +67,9 @@ libraries and better pipelining for packing and communication. .. code-block:: bash - -D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, - # else KISS - -D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT, + -D FFT=value # FFTW3 or MKL or NVPL or KISS, + # default is FFTW3 if found, else KISS + -D FFT_KOKKOS=value # FFTW3 or MKL or NVPL or KISS or CUFFT or HIPFFT, # default is KISS -D FFT_SINGLE=value # yes or no (default), no = double precision -D FFT_PACK=value # array (default) or pointer or memcpy @@ -103,6 +103,8 @@ libraries and better pipelining for packing and communication. -D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock # heFFTe back end -D Heffte_ROOT=path # path to an existing heFFTe installation + -D nvpl_fft_INCLUDE_DIR=path # path to NVPL FFT include files + -D nvpl_fft_LIBRARY_DIR=path # path to NVPL FFT libraries .. note:: @@ -121,9 +123,9 @@ libraries and better pipelining for packing and communication. .. code-block:: make FFT_INC = -DFFT_ # where is KISS (default), FFTW3, - # FFTW (same as FFTW3), or MKL + # FFTW (same as FFTW3), NVPL, or MKL FFT_INC = -DFFT_KOKKOS_ # where is KISS (default), FFTW3, - # FFTW (same as FFTW3), MKL, CUFFT, or HIPFFT + # FFTW (same as FFTW3), MKL, NVPL, CUFFT, or HIPFFT FFT_INC = -DFFT_SINGLE # do not specify for double precision FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries @@ -165,6 +167,10 @@ libraries and better pipelining for packing and communication. # MKL with automatic runtime selection of interface libs FFT_LIB = -lmkl_rt + # threaded NVPL FFT + FFT_LIB = -lnvpl_fftw + + As with CMake, you do not need to set paths in ``FFT_INC`` or ``FFT_PATH``, if the compiler can find the FFT header and library files in its default search path. You must specify ``FFT_LIB`` @@ -218,6 +224,10 @@ The Intel MKL math library is part of the Intel compiler suite. It can be used with the Intel or GNU compiler (see the ``FFT_LIB`` setting above). +The NVIDIA Performance Libraries (NVPL) FFT library is optimized for NVIDIA +Grace Armv9.0 architecture. You can download it from +`https://docs.nvidia.com/nvpl/`_. + The cuFFT and hipFFT FFT libraries are packaged with NVIDIA's CUDA and AMD's HIP installations, respectively. These FFT libraries require the Kokkos acceleration package to be enabled and the Kokkos back end to be From 4ed5dfe88d891f1c8034550c55576484a45356ee Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 4 Sep 2024 15:32:20 -0500 Subject: [PATCH 243/326] 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 29cd430da6b8da20ae9b10685866f17bbcb9931c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 4 Sep 2024 23:09:10 -0400 Subject: [PATCH 244/326] no longer need the warnings module since the deprecated functions were removed --- python/lammps/numpy_wrapper.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/lammps/numpy_wrapper.py b/python/lammps/numpy_wrapper.py index a980a972fd..add4268b52 100644 --- a/python/lammps/numpy_wrapper.py +++ b/python/lammps/numpy_wrapper.py @@ -16,7 +16,6 @@ # Written by Richard Berger ################################################################################ -import warnings from ctypes import POINTER, c_void_p, c_char_p, c_double, c_int, c_int32, c_int64, cast From e3ced6d26fab730e340da5bb92bf0448e123109f Mon Sep 17 00:00:00 2001 From: cjknight Date: Wed, 4 Sep 2024 23:44:44 -0500 Subject: [PATCH 245/326] docs --- doc/src/Build_extras.rst | 38 ++++++++++++++++++++++++++++++++------ doc/src/Build_settings.rst | 12 +++++++++--- doc/src/Howto_cmake.rst | 2 +- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 1dd64b3160..a7c22493a3 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -751,14 +751,27 @@ This list was last updated for version 4.3.0 of the Kokkos library. platform-appropriate vendor library: rocFFT on AMD GPUs or cuFFT on NVIDIA GPUs. - To simplify compilation, five preset files are included in the + For Intel GPUs using SYCL, set these variables: + + .. code-block:: bash + + -D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above + -D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above + -D Kokkos_ENABLE_SYCL=yes + -D Kokkos_ENABLE_OPENMP=yes + -D FFT_KOKKOS=MKL_GPU + + This will enable FFTs on the GPU using the oneMKL library. + + To simplify compilation, six preset files are included in the ``cmake/presets`` folder, ``kokkos-serial.cmake``, ``kokkos-openmp.cmake``, ``kokkos-cuda.cmake``, - ``kokkos-hip.cmake``, and ``kokkos-sycl.cmake``. They will enable - the KOKKOS package and enable some hardware choices. For GPU - support those preset files must be customized to match the - hardware used. So to compile with CUDA device parallelization with - some common packages enabled, you can do the following: + ``kokkos-hip.cmake``, ``kokkos-sycl-nvidia.cmake``, and + ``kokkos-sycl-intel.cmake``. They will enable the KOKKOS + package and enable some hardware choices. For GPU support those + preset files must be customized to match the hardware used. So + to compile with CUDA device parallelization with some common + packages enabled, you can do the following: .. code-block:: bash @@ -830,6 +843,19 @@ This list was last updated for version 4.3.0 of the Kokkos library. FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional) FFT_LIB = -lhipfft # link to hipFFT library + For Intel GPUs using SYCL: + + .. code-block:: make + + KOKKOS_DEVICES = SYCL + KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is + # hosting the GPU + # GPUARCH = GPU from list above + FFT_INC = -DFFT_KOKKOS_MKL_GPU # enable use of hipFFT (optional) + # link to hipFFT library + FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread + -mkl_core -ltbb + Advanced KOKKOS compilation settings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 9d31f6b431..a1a900a385 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -69,7 +69,7 @@ libraries and better pipelining for packing and communication. -D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, # else KISS - -D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT, + -D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT or MKL_GPU, # default is KISS -D FFT_SINGLE=value # yes or no (default), no = double precision -D FFT_PACK=value # array (default) or pointer or memcpy @@ -123,7 +123,8 @@ libraries and better pipelining for packing and communication. FFT_INC = -DFFT_ # where is KISS (default), FFTW3, # FFTW (same as FFTW3), or MKL FFT_INC = -DFFT_KOKKOS_ # where is KISS (default), FFTW3, - # FFTW (same as FFTW3), MKL, CUFFT, or HIPFFT + # FFTW (same as FFTW3), MKL, CUFFT, HIPFFT + # or MKL_GPU FFT_INC = -DFFT_SINGLE # do not specify for double precision FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries @@ -141,6 +142,9 @@ libraries and better pipelining for packing and communication. # cuFFT either precision FFT_LIB = -lcufft + # MKL_GPU either precision + FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -ltbb + # FFTW3 double precision FFT_LIB = -lfftw3 @@ -221,7 +225,9 @@ above). The cuFFT and hipFFT FFT libraries are packaged with NVIDIA's CUDA and AMD's HIP installations, respectively. These FFT libraries require the Kokkos acceleration package to be enabled and the Kokkos back end to be -GPU-resident (i.e., HIP or CUDA). +GPU-resident (i.e., HIP or CUDA). Similarly, GPU offload of FFTs on +Intel GPUs with oneMKL currently requires the Kokkos acceleration +package to be enabled with the SYCL backend. Performing 3d FFTs in parallel can be time-consuming due to data access and required communication. This cost can be reduced by performing diff --git a/doc/src/Howto_cmake.rst b/doc/src/Howto_cmake.rst index 55e5b171a6..43aa519293 100644 --- a/doc/src/Howto_cmake.rst +++ b/doc/src/Howto_cmake.rst @@ -348,7 +348,7 @@ Some common LAMMPS specific variables * - ``FFT`` - select which FFT library to use: ``FFTW3``, ``MKL``, ``KISS`` (default, unless FFTW3 is found) * - ``FFT_KOKKOS`` - - select which FFT library to use in Kokkos-enabled styles: ``FFTW3``, ``MKL``, ``HIPFFT``, ``CUFFT``, ``KISS`` (default) + - select which FFT library to use in Kokkos-enabled styles: ``FFTW3``, ``MKL``, ``HIPFFT``, ``CUFFT``, ``MKL_GPU``, ``KISS`` (default) * - ``FFT_SINGLE`` - select whether to use single precision FFTs (default: ``off``) * - ``WITH_JPEG`` From 04ff7b47369d63616929fe1c269d49935c4d0269 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 04:18:23 -0400 Subject: [PATCH 246/326] add missing import --- python/lammps/core.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/lammps/core.py b/python/lammps/core.py index 6eba38b1e6..249b4719e0 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -19,7 +19,8 @@ from __future__ import print_function import os import sys from ctypes import CDLL, POINTER, RTLD_GLOBAL, CFUNCTYPE, py_object, byref, cast, sizeof, \ - create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, pythonapi + create_string_buffer, c_int, c_int32, c_int64, c_double, c_void_p, c_char_p, pythonapi, \ + pointer from os.path import dirname, abspath, join from inspect import getsourcefile From dfd0772affd377f3d6eef33449edf93eeab46415 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 5 Sep 2024 10:38:32 -0500 Subject: [PATCH 247/326] 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 248/326] 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 5881a60f50991b3eba5105a96917a5892a85e641 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 5 Sep 2024 14:42:51 -0600 Subject: [PATCH 249/326] Revert change to fix shake that is no longer needed --- src/RIGID/fix_shake.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RIGID/fix_shake.h b/src/RIGID/fix_shake.h index 2a629f6345..d02fdd784a 100644 --- a/src/RIGID/fix_shake.h +++ b/src/RIGID/fix_shake.h @@ -33,7 +33,7 @@ class FixShake : public Fix { ~FixShake() override; int setmask() override; void init() override; - virtual void setup(int) override; + void setup(int) override; void setup_pre_reverse(int, int) override; void min_setup(int) override; void pre_neighbor() override; From 3357889d57da53651819baf4190c43d62fa7195e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 17:21:42 -0400 Subject: [PATCH 250/326] 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 03631aab00a2d43ef9d07d29dda4f32082788194 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 21:46:32 -0400 Subject: [PATCH 251/326] whitespace and spelling fixes --- doc/src/Build_extras.rst | 9 ++++----- doc/src/Build_settings.rst | 8 ++++---- doc/utils/sphinx-config/false_positives.txt | 1 + src/KOKKOS/fft3d_kokkos.cpp | 14 +++++++------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index a7c22493a3..e6df3fb025 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -759,7 +759,7 @@ This list was last updated for version 4.3.0 of the Kokkos library. -D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above -D Kokkos_ENABLE_SYCL=yes -D Kokkos_ENABLE_OPENMP=yes - -D FFT_KOKKOS=MKL_GPU + -D FFT_KOKKOS=MKL_GPU This will enable FFTs on the GPU using the oneMKL library. @@ -851,10 +851,9 @@ This list was last updated for version 4.3.0 of the Kokkos library. KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is # hosting the GPU # GPUARCH = GPU from list above - FFT_INC = -DFFT_KOKKOS_MKL_GPU # enable use of hipFFT (optional) - # link to hipFFT library - FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread - -mkl_core -ltbb + FFT_INC = -DFFT_KOKKOS_MKL_GPU # enable use of oneMKL for Intel GPUs (optional) + # link to oneMKL FFT library + FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -mkl_core -ltbb Advanced KOKKOS compilation settings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index a1a900a385..6db19c3379 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -124,7 +124,7 @@ libraries and better pipelining for packing and communication. # FFTW (same as FFTW3), or MKL FFT_INC = -DFFT_KOKKOS_ # where is KISS (default), FFTW3, # FFTW (same as FFTW3), MKL, CUFFT, HIPFFT - # or MKL_GPU + # or MKL_GPU FFT_INC = -DFFT_SINGLE # do not specify for double precision FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries @@ -142,8 +142,8 @@ libraries and better pipelining for packing and communication. # cuFFT either precision FFT_LIB = -lcufft - # MKL_GPU either precision - FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -ltbb + # MKL_GPU either precision + FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -ltbb # FFTW3 double precision FFT_LIB = -lfftw3 @@ -227,7 +227,7 @@ AMD's HIP installations, respectively. These FFT libraries require the Kokkos acceleration package to be enabled and the Kokkos back end to be GPU-resident (i.e., HIP or CUDA). Similarly, GPU offload of FFTs on Intel GPUs with oneMKL currently requires the Kokkos acceleration -package to be enabled with the SYCL backend. +package to be enabled with the SYCL back end. Performing 3d FFTs in parallel can be time-consuming due to data access and required communication. This cost can be reduced by performing diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index cfbddbe5f6..44659030ec 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -2725,6 +2725,7 @@ OMP oneAPI onebody onelevel +oneMKL oneway onlysalt ons diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index defccd337f..2f678f1af3 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -223,7 +223,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total1; length = plan->length1; - + #if defined(FFT_KOKKOS_MKL_GPU) if (flag == 1) oneapi::mkl::dft::compute_forward(*(plan->desc_fast), (FFT_SCALAR*)d_data.data()); @@ -274,7 +274,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, total = plan->total2; length = plan->length2; - + #if defined(FFT_KOKKOS_MKL_GPU) if (flag == 1) oneapi::mkl::dft::compute_forward(*(plan->desc_mid), (FFT_SCALAR*)d_data.data()); @@ -630,25 +630,25 @@ struct fft_plan_3d_kokkos* FFT3dKokkos::fft_3d_create_pl #if defined(FFT_KOKKOS_MKL_GPU) sycl::queue queue = LMPDeviceType().sycl_queue(); - + plan->desc_fast = new descriptor_t (nfast); plan->desc_fast->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total1/nfast); plan->desc_fast->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, plan->length1); plan->desc_fast->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, plan->length1); plan->desc_fast->commit(queue); - + plan->desc_mid = new descriptor_t (nmid); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total2/nmid); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, plan->length2); plan->desc_mid->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, plan->length2); plan->desc_mid->commit(queue); - + plan->desc_slow = new descriptor_t (nslow); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::NUMBER_OF_TRANSFORMS, plan->total3/nslow); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::FWD_DISTANCE, plan->length3); plan->desc_slow->set_value(oneapi::mkl::dft::config_param::BWD_DISTANCE, plan->length3); plan->desc_slow->commit(queue); - + #elif defined(FFT_KOKKOS_MKL) DftiCreateDescriptor( &(plan->handle_fast), FFT_KOKKOS_MKL_PREC, DFTI_COMPLEX, 1, (MKL_LONG)nfast); @@ -910,7 +910,7 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ // perform 1d FFTs in each of 3 dimensions // data is just an array of 0.0 - + #if defined(FFT_KOKKOS_MKL_GPU) if (flag == -1) { oneapi::mkl::dft::compute_forward(*(plan->desc_fast), (FFT_SCALAR*)d_data.data()); From d67e0e6a4168e7a60350e82d4c6ac7bcb7122728 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 21:47:35 -0400 Subject: [PATCH 252/326] consolidate spelling --- doc/src/Build_extras.rst | 6 ++++-- doc/utils/sphinx-config/false_positives.txt | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 1dd64b3160..6af3b28dc8 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -7,6 +7,8 @@ in addition to .. list-table:: :align: center :header-rows: 1 + :widths: 50 50 + :width: 80% * - CMake build - Traditional make @@ -115,7 +117,7 @@ GPU package To build with this package, you must choose options for precision and which GPU hardware to build for. The GPU package currently supports -three different types of backends: OpenCL, CUDA and HIP. +three different types of back ends: OpenCL, CUDA and HIP. CMake build ^^^^^^^^^^^ @@ -205,7 +207,7 @@ necessary for ``hipcc`` and the linker to work correctly. .. versionadded:: 3Aug2022 Using the CHIP-SPV implementation of HIP is supported. It allows one to -run HIP code on Intel GPUs via the OpenCL or Level Zero backends. To use +run HIP code on Intel GPUs via the OpenCL or Level Zero back ends. To use CHIP-SPV, you must set ``-DHIP_USE_DEVICE_SORT=OFF`` in your CMake command line as CHIP-SPV does not yet support hipCUB. As of Summer 2022, the use of HIP for Intel GPUs is experimental. You should only use this diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 4ee25ffc12..c4164d9f1d 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -215,7 +215,6 @@ ba Babadi Babaei backcolor -backends Baczewski Bagchi Bagi From 360fdabc19b67e89906f6a27cbfd9acfcd16264b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 23:05:25 -0400 Subject: [PATCH 253/326] small clarification --- doc/src/Howto_pylammps.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/src/Howto_pylammps.rst b/doc/src/Howto_pylammps.rst index 5ef3248e1d..645434bbab 100644 --- a/doc/src/Howto_pylammps.rst +++ b/doc/src/Howto_pylammps.rst @@ -39,16 +39,18 @@ lammps.lammps * interface modeled after the LAMMPS :ref:`C language library interface API ` * requires knowledge of how LAMMPS internally works (C pointers, etc) * full support for running Python with MPI using `mpi4py `_ +* no overhead from creating a more Python-like interface lammps.PyLammps """"""""""""""" -* higher-level abstraction built on *top* of original :py:class:`ctypes based interface ` +* higher-level abstraction built on *top* of the original :py:class:`ctypes based interface ` * manipulation of Python objects * communication with LAMMPS is hidden from API user * shorter, more concise Python * better IPython integration, designed for quick prototyping * designed for serial execution +* additional overhead from capturing and parsing the LAMMPS screen output Quick Start ----------- From 3e2f929f3196534207210c80135dbc2370e31868 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 23:22:04 -0400 Subject: [PATCH 254/326] must call Error::all() from all MPI ranks. --- src/MC/fix_charge_regulation.cpp | 2 +- src/MC/fix_gcmc.cpp | 4 ++-- src/MC/fix_widom.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/MC/fix_charge_regulation.cpp b/src/MC/fix_charge_regulation.cpp index cd035781c8..ddf14f6804 100644 --- a/src/MC/fix_charge_regulation.cpp +++ b/src/MC/fix_charge_regulation.cpp @@ -218,7 +218,7 @@ void FixChargeRegulation::init() { int flagall = flag; MPI_Allreduce(&flag, &flagall, 1, MPI_INT, MPI_SUM, world); - if (flagall && comm->me == 0) + if (flagall) error->all(FLERR, "fix charge/regulation cannot exchange " "individual atoms (ions) belonging to a molecule"); } diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp index e0f1cd243b..8fb778207b 100644 --- a/src/MC/fix_gcmc.cpp +++ b/src/MC/fix_gcmc.cpp @@ -564,7 +564,7 @@ void FixGCMC::init() if (molecule[i]) flag = 1; int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall && comm->me == 0) + if (flagall) error->all(FLERR, "Fix gcmc cannot exchange individual atoms belonging to a molecule"); } @@ -579,7 +579,7 @@ void FixGCMC::init() if (molecule[i] == 0) flag = 1; int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall && comm->me == 0) + if (flagall) error->all(FLERR, "All mol IDs should be set for fix gcmc group atoms"); } diff --git a/src/MC/fix_widom.cpp b/src/MC/fix_widom.cpp index 2c76050430..c72beb5051 100644 --- a/src/MC/fix_widom.cpp +++ b/src/MC/fix_widom.cpp @@ -356,7 +356,7 @@ void FixWidom::init() if (molecule[i] == 0) flag = 1; int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); - if (flagall && comm->me == 0) + if (flagall) error->all(FLERR, "All mol IDs should be set for fix widom group atoms"); } From 4554c0367b47676b84c639f9178c0a5215c3e4eb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 07:24:07 -0400 Subject: [PATCH 255/326] use memcpy() instead of strncpy() to avoid issues with adding a terminal zero and array boundaries --- tools/msi2lmp/src/GetParameters.c | 120 ++++++++++++++---------------- tools/msi2lmp/src/MakeLists.c | 4 +- tools/msi2lmp/src/SearchAndFill.c | 4 +- tools/msi2lmp/src/msi2lmp.c | 4 + tools/msi2lmp/src/msi2lmp.h | 2 +- 5 files changed, 66 insertions(+), 68 deletions(-) diff --git a/tools/msi2lmp/src/GetParameters.c b/tools/msi2lmp/src/GetParameters.c index 921e37491f..b7796de939 100644 --- a/tools/msi2lmp/src/GetParameters.c +++ b/tools/msi2lmp/src/GetParameters.c @@ -44,7 +44,7 @@ void GetParameters() for (i=0; i < no_atom_types; i++) { backwards = -1; - strncpy(potential_types[0],atomtypes[i].potential,5); + memcpy(potential_types[0],atomtypes[i].potential,5); k = find_match(1,potential_types,ff_atomtypes,&backwards); if (k < 0) { printf(" Unable to find mass for %s\n",atomtypes[i].potential); @@ -63,7 +63,7 @@ void GetParameters() for (i=0; i < no_atom_types; i++) { backwards = 0; for (j=0; j < 2; j++) atomtypes[i].params[j] = 0.0; - strncpy(potential_types[0],atomtypes[i].potential,5); + memcpy(potential_types[0],atomtypes[i].potential,5); k = find_match(1,potential_types,ff_vdw,&backwards); if (k < 0) { get_equivs(1,potential_types,equiv_types); @@ -101,7 +101,7 @@ void GetParameters() printf("\n Atom Types, Masses and VDW Parameters\n"); for (i=0; i < no_atom_types; i++) { printf(" %3s %8.4f %8.4f %8.4f\n", - atomtypes[i].potential,atomtypes[i].mass, atomtypes[i].params[0],atomtypes[i].params[1]); + atomtypes[i].potential,atomtypes[i].mass,atomtypes[i].params[0],atomtypes[i].params[1]); } } @@ -115,8 +115,7 @@ void GetParameters() backwards = 0; for (j=0; j < 4; j++) bondtypes[i].params[j] = 0.0; for (j=0; j < 2; j++) - strncpy(potential_types[j], - atomtypes[bondtypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[bondtypes[i].types[j]].potential,5); k = find_match(2,potential_types,ff_bond,&backwards); if (k < 0) { get_equivs(2,potential_types,equiv_types); @@ -172,7 +171,7 @@ void GetParameters() backwards = 0; for (j=0; j < 4; j++) angletypes[i].params[j] = 0.0; for (j=0; j < 3; j++) - strncpy(potential_types[j],atomtypes[angletypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[angletypes[i].types[j]].potential,5); k = find_match(3,potential_types,ff_ang,&backwards); if (k < 0) { get_equivs(3,potential_types,equiv_types); @@ -295,8 +294,7 @@ void GetParameters() for (j=0; j < 6; j++) dihedraltypes[i].params[j] = 0.0; for (j=0; j < 4; j++) - strncpy(potential_types[j], - atomtypes[dihedraltypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[dihedraltypes[i].types[j]].potential,5); backwards = 0; k = find_match(4,potential_types,ff_tor,&backwards); @@ -614,8 +612,7 @@ void GetParameters() for (i=0; i < no_oop_types; i++) { for (j=0; j < 3; j++) ooptypes[i].params[j] = 0.0; for (j=0; j < 4; j++) - strncpy(potential_types[j], - atomtypes[ooptypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[ooptypes[i].types[j]].potential,5); k = find_improper_body_data(potential_types,ff_oop,&rearrange); if (k < 0) { @@ -658,8 +655,7 @@ void GetParameters() for (j=0; j < 3; j++) ooptypes[i].params[j] = 0.0; for (j=0; j < 4; j++) - strncpy(potential_types[j], - atomtypes[ooptypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[ooptypes[i].types[j]].potential,5); k = find_trigonal_body_data(potential_types,ff_oop); if (k < 0) { get_equivs(5,potential_types,equiv_types); @@ -715,8 +711,7 @@ void GetParameters() for (j=0; j < 6; j++) ooptypes[i].angleangle_params[j] = 0.0; for (j=0; j < 4; j++) - strncpy(potential_types[j], - atomtypes[ooptypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[ooptypes[i].types[j]].potential,5); tabc = get_t0(ooptypes[i].types[0], @@ -763,8 +758,7 @@ void GetParameters() for (i=0; i < no_angleangle_types; i++) { for (j=0; j < 6; j++) angleangletypes[i].params[j] = 0.0; for (j=0; j < 4; j++) - strncpy(potential_types[j], - atomtypes[angleangletypes[i].types[j]].potential,5); + memcpy(potential_types[j],atomtypes[angleangletypes[i].types[j]].potential,5); tabc = get_t0(angleangletypes[i].types[0], angleangletypes[i].types[1], @@ -841,44 +835,44 @@ int find_improper_body_data(char types1[][5],struct FrcFieldItem item, /* a b d c */ *rearrange_ptr = 1; - strncpy(mirror_types[0],types1[0],5); - strncpy(mirror_types[1],types1[1],5); - strncpy(mirror_types[2],types1[3],5); - strncpy(mirror_types[3],types1[2],5); + memcpy(mirror_types[0],types1[0],5); + memcpy(mirror_types[1],types1[1],5); + memcpy(mirror_types[2],types1[3],5); + memcpy(mirror_types[3],types1[2],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* d b a c */ *rearrange_ptr = 2; - strncpy(mirror_types[0],types1[3],5); - strncpy(mirror_types[2],types1[0],5); - strncpy(mirror_types[3],types1[2],5); + memcpy(mirror_types[0],types1[3],5); + memcpy(mirror_types[2],types1[0],5); + memcpy(mirror_types[3],types1[2],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* d b c a */ *rearrange_ptr = 3; - strncpy(mirror_types[2],types1[2],5); - strncpy(mirror_types[3],types1[0],5); + memcpy(mirror_types[2],types1[2],5); + memcpy(mirror_types[3],types1[0],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* c b a d */ *rearrange_ptr = 4; - strncpy(mirror_types[0],types1[2],5); - strncpy(mirror_types[2],types1[0],5); - strncpy(mirror_types[3],types1[3],5); + memcpy(mirror_types[0],types1[2],5); + memcpy(mirror_types[2],types1[0],5); + memcpy(mirror_types[3],types1[3],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* c b d a */ *rearrange_ptr = 5; - strncpy(mirror_types[2],types1[3],5); - strncpy(mirror_types[3],types1[0],5); + memcpy(mirror_types[2],types1[3],5); + memcpy(mirror_types[3],types1[0],5); k = find_match(4,mirror_types,item,&backwards); return k; } @@ -973,39 +967,39 @@ int find_trigonal_body_data(char types1[][5],struct FrcFieldItem item) /* a b d c */ - strncpy(mirror_types[0],types1[0],5); - strncpy(mirror_types[1],types1[1],5); - strncpy(mirror_types[2],types1[3],5); - strncpy(mirror_types[3],types1[2],5); + memcpy(mirror_types[0],types1[0],5); + memcpy(mirror_types[1],types1[1],5); + memcpy(mirror_types[2],types1[3],5); + memcpy(mirror_types[3],types1[2],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* d b a c */ - strncpy(mirror_types[0],types1[3],5); - strncpy(mirror_types[2],types1[0],5); - strncpy(mirror_types[3],types1[2],5); + memcpy(mirror_types[0],types1[3],5); + memcpy(mirror_types[2],types1[0],5); + memcpy(mirror_types[3],types1[2],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* d b c a */ - strncpy(mirror_types[2],types1[2],5); - strncpy(mirror_types[3],types1[0],5); + memcpy(mirror_types[2],types1[2],5); + memcpy(mirror_types[3],types1[0],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* c b a d */ - strncpy(mirror_types[0],types1[2],5); - strncpy(mirror_types[2],types1[0],5); - strncpy(mirror_types[3],types1[3],5); + memcpy(mirror_types[0],types1[2],5); + memcpy(mirror_types[2],types1[0],5); + memcpy(mirror_types[3],types1[3],5); k = find_match(4,mirror_types,item,&backwards); if (k >= 0) return k; /* c b d a */ - strncpy(mirror_types[2],types1[3],5); - strncpy(mirror_types[3],types1[0],5); + memcpy(mirror_types[2],types1[3],5); + memcpy(mirror_types[3],types1[0],5); k = find_match(4,mirror_types,item,&backwards); return k; } @@ -1015,41 +1009,41 @@ int find_angleangle_data(char types1[][5],struct FrcFieldItem item,int kloc[3]) int k,backwards = -1; char mirror_types[4][5]; - strncpy(mirror_types[1],types1[1],5); + memcpy(mirror_types[1],types1[1],5); /* go for first parameter a b c d or d b c a */ k = find_match(4,types1,item,&backwards); if (k < 0) { - strncpy(mirror_types[0],types1[3],5); - strncpy(mirror_types[2],types1[2],5); - strncpy(mirror_types[3],types1[0],5); + memcpy(mirror_types[0],types1[3],5); + memcpy(mirror_types[2],types1[2],5); + memcpy(mirror_types[3],types1[0],5); k = find_match(4,mirror_types,item,&backwards); } kloc[0] = k; /* go for second parameter d b a c or c b a d */ - strncpy(mirror_types[0],types1[3],5); - strncpy(mirror_types[2],types1[0],5); - strncpy(mirror_types[3],types1[2],5); + memcpy(mirror_types[0],types1[3],5); + memcpy(mirror_types[2],types1[0],5); + memcpy(mirror_types[3],types1[2],5); k = find_match(4,mirror_types,item,&backwards); if (k < 0) { - strncpy(mirror_types[0],types1[2],5); - strncpy(mirror_types[3],types1[3],5); + memcpy(mirror_types[0],types1[2],5); + memcpy(mirror_types[3],types1[3],5); k = find_match(4,mirror_types,item,&backwards); } kloc[1] = k; /* go for third parameter a b d c or c b d a */ - strncpy(mirror_types[0],types1[0],5); - strncpy(mirror_types[2],types1[3],5); - strncpy(mirror_types[3],types1[2],5); + memcpy(mirror_types[0],types1[0],5); + memcpy(mirror_types[2],types1[3],5); + memcpy(mirror_types[3],types1[2],5); k = find_match(4,mirror_types,item,&backwards); if (k < 0) { - strncpy(mirror_types[0],types1[2],5); - strncpy(mirror_types[3],types1[0],5); + memcpy(mirror_types[0],types1[2],5); + memcpy(mirror_types[3],types1[0],5); k = find_match(4,mirror_types,item,&backwards); } kloc[2] = k; @@ -1250,25 +1244,25 @@ void get_equivs(int ic,char potential_types[][5],char equiv_types[][5]) switch (ic) { case 1: k = find_equiv_type(potential_types[0]); - if (k > -1) strncpy(equiv_types[0],equivalence.data[k].ff_types[1],5); + if (k > -1) memcpy(equiv_types[0],equivalence.data[k].ff_types[1],5); break; case 2: for (i=0; i < 2; i++) { k = find_equiv_type(potential_types[i]); - if (k > -1) strncpy(equiv_types[i],equivalence.data[k].ff_types[2],5); + if (k > -1) memcpy(equiv_types[i],equivalence.data[k].ff_types[2],5); } break; case 3: for (i=0; i < 3; i++) { k = find_equiv_type(potential_types[i]); - if (k > -1) strncpy(equiv_types[i],equivalence.data[k].ff_types[3],5); + if (k > -1) memcpy(equiv_types[i],equivalence.data[k].ff_types[3],5); } break; case 4: for (i=0; i < 4; i++) { k = find_equiv_type(potential_types[i]); - if (k > -1) strncpy(equiv_types[i],equivalence.data[k].ff_types[4],5); + if (k > -1) memcpy(equiv_types[i],equivalence.data[k].ff_types[4],5); } break; @@ -1276,7 +1270,7 @@ void get_equivs(int ic,char potential_types[][5],char equiv_types[][5]) for (i=0; i < 4; i++) { k = find_equiv_type(potential_types[i]); if (k > -1) - strncpy(equiv_types[i],equivalence.data[k].ff_types[5],5); + memcpy(equiv_types[i],equivalence.data[k].ff_types[5],5); } break; default: diff --git a/tools/msi2lmp/src/MakeLists.c b/tools/msi2lmp/src/MakeLists.c index 18b261a561..4f9a9f1548 100644 --- a/tools/msi2lmp/src/MakeLists.c +++ b/tools/msi2lmp/src/MakeLists.c @@ -476,7 +476,7 @@ void build_atomtypes_list() { int j,k,n,match,atom_type=0; - strncpy(atomtypes[0].potential,atoms[0].potential,5); + memcpy(atomtypes[0].potential,atoms[0].potential,5); atoms[0].type = 0; atomtypes[0].no_connect = atoms[0].no_connect; @@ -497,7 +497,7 @@ void build_atomtypes_list() if (match == 0) { atom_type = n; atomtypes[n].no_connect = atoms[j].no_connect; - strncpy(atomtypes[n++].potential,atoms[j].potential,5); + memcpy(atomtypes[n++].potential,atoms[j].potential,5); } if (n >= MAX_ATOM_TYPES) { fprintf(stderr,"Too many atom types (> 100) - error\n"); diff --git a/tools/msi2lmp/src/SearchAndFill.c b/tools/msi2lmp/src/SearchAndFill.c index 35de0c81fe..a26554aeaa 100644 --- a/tools/msi2lmp/src/SearchAndFill.c +++ b/tools/msi2lmp/src/SearchAndFill.c @@ -212,7 +212,7 @@ void SearchAndFill(struct FrcFieldItem *item) item->data[replace].ver = version; item->data[replace].ref = reference; for (i=0; i < item->number_of_members; i++) { - strncpy(item->data[replace].ff_types[i],atom_types[i],5); + memcpy(item->data[replace].ff_types[i],atom_types[i],5); } for (i=0; i < item->number_of_parameters; i++) { item->data[replace].ff_param[i] = parameters[i]; @@ -230,7 +230,7 @@ void SearchAndFill(struct FrcFieldItem *item) item->data[ctr].ver = version; item->data[ctr].ref = reference; for (i=0; i < item->number_of_members; i++) { - strncpy(item->data[ctr].ff_types[i],atom_types[i],5); + memcpy(item->data[ctr].ff_types[i],atom_types[i],5); } for (i=0; i < item->number_of_parameters; i++) { item->data[ctr].ff_param[i] = parameters[i]; diff --git a/tools/msi2lmp/src/msi2lmp.c b/tools/msi2lmp/src/msi2lmp.c index 68aaf566b2..8228fd0f7f 100644 --- a/tools/msi2lmp/src/msi2lmp.c +++ b/tools/msi2lmp/src/msi2lmp.c @@ -2,6 +2,10 @@ * * msi2lmp.exe * +* v3.9.11 AK - Replace call to strncpy() with memcpy() when copying atom type strings +* to avoid problems with fixed array sizes +* - update tests for newer LAMMPS versions +* * v3.9.10 AK - Substitute UTF-8 characters in .frc files with known ASCII equivalents * - add help message output * diff --git a/tools/msi2lmp/src/msi2lmp.h b/tools/msi2lmp/src/msi2lmp.h index 3e1de85cbe..ca745bdc6e 100644 --- a/tools/msi2lmp/src/msi2lmp.h +++ b/tools/msi2lmp/src/msi2lmp.h @@ -36,7 +36,7 @@ #include /* IWYU pragma: export */ -#define MSI2LMP_VERSION "v3.9.10 / 10 Mar 2023" +#define MSI2LMP_VERSION "v3.9.11 / 6 Sep 2024" #define PI_180 0.01745329251994329576 From 683643c2489189b3b8600ba62658092b9d48d396 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 07:25:01 -0400 Subject: [PATCH 256/326] sort lists of bonds, angles, dihedrals and impropers by atom IDs before comparing --- tools/msi2lmp/test/data-compare.pl | 115 ++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) diff --git a/tools/msi2lmp/test/data-compare.pl b/tools/msi2lmp/test/data-compare.pl index 7411f2a017..38bbed051d 100755 --- a/tools/msi2lmp/test/data-compare.pl +++ b/tools/msi2lmp/test/data-compare.pl @@ -2,11 +2,12 @@ # Tool to validate and compare two LAMMPS data files # with "inexact" floating point comparisons # July 2013 by Axel Kohlmeyer +# last update September 2024 by Axel Kohlmeyer use strict; use warnings; -my $version = 'v0.3'; +my $version = 'v0.4'; # delta for floating point comparisons. my $small = 1.0e-4; @@ -596,6 +597,26 @@ sub read_data { last; } + # apply sort + if ($data->{nbonds} > 1) { + my ($did_swap, $num) = (1, $data->{nbonds}); + while ($did_swap) { + $did_swap = 0; + for ($i=0; $i < $num-1; ++$i) { + $j = $i+1; + if (($data->{bond1}[$i] > $data->{bond1}[$j]) + or (($data->{bond1}[$i] == $data->{bond1}[$j]) + and ($data->{bond2}[$i] > $data->{bond2}[$j]))) { + $did_swap = 1; + my @tmp = ($data->{bondt}[$i], $data->{bond1}[$i], $data->{bond2}[$i]); + ($data->{bondt}[$i], $data->{bond1}[$i], $data->{bond2}[$i]) = + ($data->{bondt}[$j], $data->{bond1}[$j], $data->{bond2}[$j]); + ($data->{bondt}[$j], $data->{bond1}[$j], $data->{bond2}[$j]) = @tmp; + } + } + --$num; + } + } } elsif ($1 eq "Angles") { $data->{anglet} = []; $data->{angle1} = []; @@ -638,6 +659,33 @@ sub read_data { last; } + # apply sort + if ($data->{nangles} > 1) { + my ($did_swap, $num) = (1, $data->{nangles}); + while ($did_swap) { + $did_swap = 0; + for ($i=0; $i < $num-1; ++$i) { + $j = $i+1; + if (($data->{angle1}[$i] > $data->{angle1}[$j]) + or (($data->{angle1}[$i] == $data->{angle1}[$j]) + and ($data->{angle2}[$i] > $data->{angle2}[$j])) + or (($data->{angle1}[$i] == $data->{angle1}[$j]) + and ($data->{angle2}[$i] == $data->{angle2}[$j]) + and ($data->{angle3}[$i] > $data->{angle3}[$j]))) { + $did_swap = 1; + my @tmp = ($data->{anglet}[$i], $data->{angle1}[$i], + $data->{angle2}[$i], $data->{angle3}[$i]); + ($data->{anglet}[$i], $data->{angle1}[$i], + $data->{angle2}[$i], $data->{angle3}[$i]) = + ($data->{anglet}[$j], $data->{angle1}[$j], + $data->{angle2}[$j], $data->{angle3}[$j]); + ($data->{anglet}[$j], $data->{angle1}[$j], + $data->{angle2}[$j], $data->{angle3}[$j]) = @tmp; + } + } + --$num; + } + } } elsif ($1 eq "Dihedrals") { $data->{dihedralt} = []; $data->{dihedral1} = []; @@ -684,6 +732,38 @@ sub read_data { last; } + # apply sort + if ($data->{ndihedrals} > 1) { + my ($did_swap, $num) = (1, $data->{ndihedrals}); + while ($did_swap) { + $did_swap = 0; + for ($i=0; $i < $num-1; ++$i) { + $j = $i+1; + if (($data->{dihedral1}[$i] > $data->{dihedral1}[$j]) + or (($data->{dihedral1}[$i] == $data->{dihedral1}[$j]) + and ($data->{dihedral2}[$i] > $data->{dihedral2}[$j])) + or (($data->{dihedral1}[$i] == $data->{dihedral1}[$j]) + and ($data->{dihedral2}[$i] == $data->{dihedral2}[$j]) + and ($data->{dihedral3}[$i] > $data->{dihedral3}[$j])) + or (($data->{dihedral1}[$i] == $data->{dihedral1}[$j]) + and ($data->{dihedral2}[$i] == $data->{dihedral2}[$j]) + and ($data->{dihedral3}[$i] == $data->{dihedral3}[$j]) + and ($data->{dihedral4}[$i] > $data->{dihedral4}[$j]))) { + $did_swap = 1; + my @tmp = ($data->{dihedralt}[$i], $data->{dihedral1}[$i], + $data->{dihedral2}[$i], $data->{dihedral3}[$i], + $data->{dihedral4}[$i]); + ($data->{dihedralt}[$i], $data->{dihedral1}[$i], $data->{dihedral2}[$i], + $data->{dihedral3}[$i], $data->{dihedral4}[$i]) = + ($data->{dihedralt}[$j], $data->{dihedral1}[$j], + $data->{dihedral2}[$j], $data->{dihedral3}[$j], $data->{dihedral4}[$j]); + ($data->{dihedralt}[$j], $data->{dihedral1}[$j], $data->{dihedral2}[$j], + $data->{dihedral3}[$j], $data->{dihedral4}[$j]) = @tmp; + } + } + --$num; + } + } } elsif ($1 eq "Impropers") { $data->{impropert} = []; $data->{improper1} = []; @@ -730,6 +810,39 @@ sub read_data { last; } + # apply sort + if ($data->{nimpropers} > 1) { + my ($did_swap, $num) = (1, $data->{nimpropers}); + while ($did_swap) { + $did_swap = 0; + for ($i=0; $i < $num-1; ++$i) { + $j = $i+1; + if (($data->{improper1}[$i] > $data->{improper1}[$j]) + or (($data->{improper1}[$i] == $data->{improper1}[$j]) + and ($data->{improper2}[$i] > $data->{improper2}[$j])) + or (($data->{improper1}[$i] == $data->{improper1}[$j]) + and ($data->{improper2}[$i] == $data->{improper2}[$j]) + and ($data->{improper3}[$i] > $data->{improper3}[$j])) + or (($data->{improper1}[$i] == $data->{improper1}[$j]) + and ($data->{improper2}[$i] == $data->{improper2}[$j]) + and ($data->{improper3}[$i] == $data->{improper3}[$j]) + and ($data->{improper4}[$i] > $data->{improper4}[$j]))) { + $did_swap = 1; + my @tmp = ($data->{impropert}[$i], $data->{improper1}[$i], + $data->{improper2}[$i], $data->{improper3}[$i], + $data->{improper4}[$i]); + ($data->{impropert}[$i], $data->{improper1}[$i], $data->{improper2}[$i], + $data->{improper3}[$i], $data->{improper4}[$i]) = + ($data->{impropert}[$j], $data->{improper1}[$j], + $data->{improper2}[$j], $data->{improper3}[$j], $data->{improper4}[$j]); + ($data->{impropert}[$j], $data->{improper1}[$j], $data->{improper2}[$j], + $data->{improper3}[$j], $data->{improper4}[$j]) = @tmp; + } + } + --$num; + } + } + } else { die "Bad data: $_"; } From 93de00f6498c5998fa74e5a216b2e601ddc52fe3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 07:25:52 -0400 Subject: [PATCH 257/326] move kspace style definition after reading the data file to comply with needs of recent LAMMPS versions --- tools/msi2lmp/test/in.PyAC_bulk-clayff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/msi2lmp/test/in.PyAC_bulk-clayff b/tools/msi2lmp/test/in.PyAC_bulk-clayff index 1c6663a679..923891b920 100644 --- a/tools/msi2lmp/test/in.PyAC_bulk-clayff +++ b/tools/msi2lmp/test/in.PyAC_bulk-clayff @@ -5,9 +5,9 @@ atom_style full pair_style lj/cut/coul/long 15.0 pair_modify mix geometric bond_style harmonic -kspace_style pppm 1.0e-5 read_data PyAC_bulk-clayff.data +kspace_style pppm 1.0e-5 thermo_style multi minimize 0.0 0.0 100 1000 From 513fc95f81b593a00f1ff1cd84dae1f9c9276cce Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 07:30:50 -0400 Subject: [PATCH 258/326] update msi2lmp manpage --- doc/msi2lmp.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/msi2lmp.1 b/doc/msi2lmp.1 index 5cb0754e4f..075e25e3b9 100644 --- a/doc/msi2lmp.1 +++ b/doc/msi2lmp.1 @@ -1,4 +1,4 @@ -.TH MSI2LMP "1" "v3.9.10" "2023-03-10" +.TH MSI2LMP "1" "v3.9.11" "2024-09-06" .SH NAME .B MSI2LMP \- Converter for Materials Studio files to LAMMPS @@ -101,7 +101,7 @@ msi2lmp decane -c 0 -f oplsaa .SH COPYRIGHT -© 2003--2022 Sandia Corporation +© 2003--2024 Sandia Corporation This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as From f179f2a80dc5280e3b9ffe964115cb564bc4b2aa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 07:32:19 -0400 Subject: [PATCH 259/326] update a few reference data files for current LAMMPS --- .../test/reference/PyAC_bulk-clayff.data | 708 +-- .../test/reference/PyAC_bulk-clayff.data2 | 5388 ++++++++--------- .../test/reference/ethane-oplsaa.data2 | 42 +- tools/msi2lmp/test/runtests.sh | 4 +- 4 files changed, 3071 insertions(+), 3071 deletions(-) diff --git a/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data b/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data index 6b6602d69d..0a304ea296 100644 --- a/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data +++ b/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data @@ -1,4 +1,4 @@ -LAMMPS data file. msi2lmp v3.9.8 / 06 Oct 2016 / CGCMM for PyAC_bulk-clayff +LAMMPS data file. msi2lmp v3.9.10 / 10 Mar 2023 / CGCMM for PyAC_bulk-clayff 1280 atoms 128 bonds @@ -11,7 +11,7 @@ LAMMPS data file. msi2lmp v3.9.8 / 06 Oct 2016 / CGCMM for PyAC_bulk-clayff -10.320000000 10.320000000 xlo xhi -17.931646038 17.931646038 ylo yhi - -9.196614681 9.196614681 zlo zhi + -9.189871922 9.189871922 zlo zhi 0.225338675 -3.393877748 -0.363656523 xy xz yz Masses @@ -676,27 +676,27 @@ Atoms # full 638 1 3 -1.050000 -0.590722660 -5.885450799 -3.293650032 1 1 0 # ob 639 1 3 -1.050000 0.277898824 -8.390728187 -3.055632561 1 1 0 # ob 640 1 5 0.425000 -4.694842406 -6.184112754 -1.194847627 1 1 0 # ho - 641 1 1 1.575000 0.889889112 1.315464043 9.189872068 0 0 0 # ao - 642 1 2 2.100000 5.101961261 9.067732250 -6.523590700 0 0 1 # st - 643 1 2 2.100000 5.138292081 3.048848378 -6.517157818 0 0 1 # st - 644 1 3 -1.050000 4.852463935 0.176965538 -8.141927041 0 0 1 # ob - 645 1 3 -1.050000 5.291802919 2.921349398 -8.139170101 0 0 1 # ob - 646 1 4 -0.950000 2.692063605 1.889886595 -8.209932150 0 0 1 # oh - 647 1 3 -1.050000 1.366795516 3.605171499 -5.905112111 0 0 1 # ob - 648 1 3 -1.050000 4.839493963 1.584366125 -5.909707262 0 0 1 # ob - 649 1 3 -1.050000 3.970872479 4.089643514 -6.147724732 0 0 1 # ob - 650 1 5 0.425000 3.783613862 1.883028080 -8.008509666 0 0 1 # ho - 651 1 1 1.575000 3.498056417 5.798375353 9.189872068 0 0 0 # ao - 652 1 2 2.100000 2.493793956 4.584820940 -6.523590700 0 0 1 # st - 653 1 2 2.100000 2.586459538 7.531759689 -6.517157818 0 0 1 # st - 654 1 3 -1.050000 2.300631392 4.659876849 -8.141927041 0 0 1 # ob - 655 1 3 -1.050000 2.739970376 7.404260709 -8.139170101 0 0 1 # ob - 656 1 4 -0.950000 5.300230909 6.372797905 -8.209932150 0 0 1 # oh - 657 1 3 -1.050000 3.974962821 8.088082810 -5.905112111 0 0 1 # ob - 658 1 3 -1.050000 2.287661420 6.067277436 -5.909707262 0 0 1 # ob - 659 1 3 -1.050000 1.419039936 8.572554825 -6.147724732 0 0 1 # ob - 660 1 5 0.425000 6.391781167 6.365939391 -8.008509666 0 0 1 # ho - 661 1 1 1.575000 0.932567998 7.286701985 9.189872068 0 0 0 # ao + 641 1 1 1.575000 4.283766860 1.679120566 -9.189871776 0 0 1 # ao + 642 1 2 2.100000 5.101961261 9.067732250 -6.510105182 0 0 1 # st + 643 1 2 2.100000 5.138292081 3.048848378 -6.503672300 0 0 1 # st + 644 1 3 -1.050000 4.852463935 0.176965538 -8.128441523 0 0 1 # ob + 645 1 3 -1.050000 5.291802919 2.921349398 -8.125684583 0 0 1 # ob + 646 1 4 -0.950000 2.692063605 1.889886595 -8.196446632 0 0 1 # oh + 647 1 3 -1.050000 1.366795516 3.605171499 -5.891626593 0 0 1 # ob + 648 1 3 -1.050000 4.839493963 1.584366125 -5.896221744 0 0 1 # ob + 649 1 3 -1.050000 3.970872479 4.089643514 -6.134239214 0 0 1 # ob + 650 1 5 0.425000 3.783613862 1.883028080 -7.995024148 0 0 1 # ho + 651 1 1 1.575000 6.891934165 6.162031876 -9.189871776 0 0 1 # ao + 652 1 2 2.100000 2.493793956 4.584820940 -6.510105182 0 0 1 # st + 653 1 2 2.100000 2.586459538 7.531759689 -6.503672300 0 0 1 # st + 654 1 3 -1.050000 2.300631392 4.659876849 -8.128441523 0 0 1 # ob + 655 1 3 -1.050000 2.739970376 7.404260709 -8.125684583 0 0 1 # ob + 656 1 4 -0.950000 5.300230909 6.372797905 -8.196446632 0 0 1 # oh + 657 1 3 -1.050000 3.974962821 8.088082810 -5.891626593 0 0 1 # ob + 658 1 3 -1.050000 2.287661420 6.067277436 -5.896221744 0 0 1 # ob + 659 1 3 -1.050000 1.419039936 8.572554825 -6.134239214 0 0 1 # ob + 660 1 5 0.425000 6.391781167 6.365939391 -7.995024148 0 0 1 # ho + 661 1 1 1.575000 4.326445746 7.650358508 -9.189871776 0 0 1 # ao 662 1 2 2.100000 0.114373597 -0.101909699 6.510105475 0 0 0 # st 663 1 2 2.100000 0.078042778 5.916974173 6.503672592 0 0 0 # st 664 1 3 -1.050000 0.363870923 8.788857013 8.128441816 0 0 0 # ob @@ -706,7 +706,7 @@ Atoms # full 668 1 3 -1.050000 0.376840895 7.381456426 5.896222036 0 0 0 # ob 669 1 3 -1.050000 1.245462379 4.876179037 6.134239507 0 0 0 # ob 670 1 5 0.425000 1.432720996 7.082794471 7.995024441 0 0 0 # ho - 671 1 1 1.575000 -1.675599307 2.803790675 9.189872068 0 0 0 # ao + 671 1 1 1.575000 1.718278441 3.167447198 -9.189871776 0 0 1 # ao 672 1 2 2.100000 2.722540902 4.381001611 6.510105475 0 0 0 # st 673 1 2 2.100000 2.629875320 1.434062862 6.503672592 0 0 0 # st 674 1 3 -1.050000 2.915703466 4.305945702 8.128441816 0 0 0 # ob @@ -716,27 +716,27 @@ Atoms # full 678 1 3 -1.050000 2.928673438 2.898545115 5.896222036 0 0 0 # ob 679 1 3 -1.050000 3.797294922 0.393267726 6.134239507 0 0 0 # ob 680 1 5 0.425000 -1.175446309 2.599883160 7.995024441 0 0 0 # ho - 681 1 1 1.575000 6.049888960 1.315464043 9.189872068 0 0 0 # ao - 682 1 2 2.100000 -10.378038892 9.067732250 -6.523590700 1 0 1 # st - 683 1 2 2.100000 -10.341708072 3.048848378 -6.517157818 1 0 1 # st - 684 1 3 -1.050000 10.012463782 0.176965538 -8.141927041 0 0 1 # ob - 685 1 3 -1.050000 -10.188197233 2.921349398 -8.139170101 1 0 1 # ob - 686 1 4 -0.950000 7.852063452 1.889886595 -8.209932150 0 0 1 # oh - 687 1 3 -1.050000 6.526795364 3.605171499 -5.905112111 0 0 1 # ob - 688 1 3 -1.050000 -10.640506189 1.584366125 -5.909707262 1 0 1 # ob - 689 1 3 -1.050000 9.130872326 4.089643514 -6.147724732 0 0 1 # ob - 690 1 5 0.425000 8.943613710 1.883028080 -8.008509666 0 0 1 # ho - 691 1 1 1.575000 -11.981943736 5.798375353 9.189872068 1 0 0 # ao - 692 1 2 2.100000 7.653793804 4.584820940 -6.523590700 0 0 1 # st - 693 1 2 2.100000 7.746459385 7.531759689 -6.517157818 0 0 1 # st - 694 1 3 -1.050000 7.460631240 4.659876849 -8.141927041 0 0 1 # ob - 695 1 3 -1.050000 7.899970224 7.404260709 -8.139170101 0 0 1 # ob - 696 1 4 -0.950000 -10.179769243 6.372797905 -8.209932150 1 0 1 # oh - 697 1 3 -1.050000 9.134962668 8.088082810 -5.905112111 0 0 1 # ob - 698 1 3 -1.050000 7.447661268 6.067277436 -5.909707262 0 0 1 # ob - 699 1 3 -1.050000 6.579039784 8.572554825 -6.147724732 0 0 1 # ob - 700 1 5 0.425000 -9.088218986 6.365939391 -8.008509666 1 0 1 # ho - 701 1 1 1.575000 6.092567845 7.286701985 9.189872068 0 0 0 # ao + 681 1 1 1.575000 9.443766708 1.679120566 -9.189871776 0 0 1 # ao + 682 1 2 2.100000 -10.378038892 9.067732250 -6.510105182 1 0 1 # st + 683 1 2 2.100000 -10.341708072 3.048848378 -6.503672300 1 0 1 # st + 684 1 3 -1.050000 10.012463782 0.176965538 -8.128441523 0 0 1 # ob + 685 1 3 -1.050000 -10.188197233 2.921349398 -8.125684583 1 0 1 # ob + 686 1 4 -0.950000 7.852063452 1.889886595 -8.196446632 0 0 1 # oh + 687 1 3 -1.050000 6.526795364 3.605171499 -5.891626593 0 0 1 # ob + 688 1 3 -1.050000 -10.640506189 1.584366125 -5.896221744 1 0 1 # ob + 689 1 3 -1.050000 9.130872326 4.089643514 -6.134239214 0 0 1 # ob + 690 1 5 0.425000 8.943613710 1.883028080 -7.995024148 0 0 1 # ho + 691 1 1 1.575000 -8.588065988 6.162031876 -9.189871776 1 0 1 # ao + 692 1 2 2.100000 7.653793804 4.584820940 -6.510105182 0 0 1 # st + 693 1 2 2.100000 7.746459385 7.531759689 -6.503672300 0 0 1 # st + 694 1 3 -1.050000 7.460631240 4.659876849 -8.128441523 0 0 1 # ob + 695 1 3 -1.050000 7.899970224 7.404260709 -8.125684583 0 0 1 # ob + 696 1 4 -0.950000 -10.179769243 6.372797905 -8.196446632 1 0 1 # oh + 697 1 3 -1.050000 9.134962668 8.088082810 -5.891626593 0 0 1 # ob + 698 1 3 -1.050000 7.447661268 6.067277436 -5.896221744 0 0 1 # ob + 699 1 3 -1.050000 6.579039784 8.572554825 -6.134239214 0 0 1 # ob + 700 1 5 0.425000 -9.088218986 6.365939391 -7.995024148 1 0 1 # ho + 701 1 1 1.575000 9.486445593 7.650358508 -9.189871776 0 0 1 # ao 702 1 2 2.100000 5.274373445 -0.101909699 6.510105475 0 0 0 # st 703 1 2 2.100000 5.238042625 5.916974173 6.503672592 0 0 0 # st 704 1 3 -1.050000 5.523870771 8.788857013 8.128441816 0 0 0 # ob @@ -746,7 +746,7 @@ Atoms # full 708 1 3 -1.050000 5.536840742 7.381456426 5.896222036 0 0 0 # ob 709 1 3 -1.050000 6.405462227 4.876179037 6.134239507 0 0 0 # ob 710 1 5 0.425000 6.592720843 7.082794471 7.995024441 0 0 0 # ho - 711 1 1 1.575000 3.484400541 2.803790675 9.189872068 0 0 0 # ao + 711 1 1 1.575000 6.878278289 3.167447198 -9.189871776 0 0 1 # ao 712 1 2 2.100000 -12.757459251 4.381001611 6.510105475 1 0 0 # st 713 1 2 2.100000 -12.850124832 1.434062862 6.503672592 1 0 0 # st 714 1 3 -1.050000 -12.564296687 4.305945702 8.128441816 1 0 0 # ob @@ -756,27 +756,27 @@ Atoms # full 718 1 3 -1.050000 -12.551326715 2.898545115 5.896222036 1 0 0 # ob 719 1 3 -1.050000 -11.682705231 0.393267726 6.134239507 1 0 0 # ob 720 1 5 0.425000 3.984553539 2.599883160 7.995024441 0 0 0 # ho - 721 1 1 1.575000 -9.430111193 1.315464043 9.189872068 1 0 0 # ao - 722 1 2 2.100000 -5.218039044 9.067732250 -6.523590700 1 0 1 # st - 723 1 2 2.100000 -5.181708225 3.048848378 -6.517157818 1 0 1 # st - 724 1 3 -1.050000 -5.467536370 0.176965538 -8.141927041 1 0 1 # ob - 725 1 3 -1.050000 -5.028197386 2.921349398 -8.139170101 1 0 1 # ob - 726 1 4 -0.950000 -7.627936701 1.889886595 -8.209932150 1 0 1 # oh - 727 1 3 -1.050000 -8.953204789 3.605171499 -5.905112111 1 0 1 # ob - 728 1 3 -1.050000 -5.480506342 1.584366125 -5.909707262 1 0 1 # ob - 729 1 3 -1.050000 -6.349127826 4.089643514 -6.147724732 1 0 1 # ob - 730 1 5 0.425000 -6.536386443 1.883028080 -8.008509666 1 0 1 # ho - 731 1 1 1.575000 -6.821943888 5.798375353 9.189872068 1 0 0 # ao - 732 1 2 2.100000 -7.826206349 4.584820940 -6.523590700 1 0 1 # st - 733 1 2 2.100000 -7.733540767 7.531759689 -6.517157818 1 0 1 # st - 734 1 3 -1.050000 -8.019368913 4.659876849 -8.141927041 1 0 1 # ob - 735 1 3 -1.050000 -7.580029929 7.404260709 -8.139170101 1 0 1 # ob - 736 1 4 -0.950000 -5.019769396 6.372797905 -8.209932150 1 0 1 # oh - 737 1 3 -1.050000 -6.345037484 8.088082810 -5.905112111 1 0 1 # ob - 738 1 3 -1.050000 -8.032338885 6.067277436 -5.909707262 1 0 1 # ob - 739 1 3 -1.050000 -8.900960369 8.572554825 -6.147724732 1 0 1 # ob - 740 1 5 0.425000 -3.928219138 6.365939391 -8.008509666 1 0 1 # ho - 741 1 1 1.575000 -9.387432307 7.286701985 9.189872068 1 0 0 # ao + 721 1 1 1.575000 -6.036233445 1.679120566 -9.189871776 1 0 1 # ao + 722 1 2 2.100000 -5.218039044 9.067732250 -6.510105182 1 0 1 # st + 723 1 2 2.100000 -5.181708225 3.048848378 -6.503672300 1 0 1 # st + 724 1 3 -1.050000 -5.467536370 0.176965538 -8.128441523 1 0 1 # ob + 725 1 3 -1.050000 -5.028197386 2.921349398 -8.125684583 1 0 1 # ob + 726 1 4 -0.950000 -7.627936701 1.889886595 -8.196446632 1 0 1 # oh + 727 1 3 -1.050000 -8.953204789 3.605171499 -5.891626593 1 0 1 # ob + 728 1 3 -1.050000 -5.480506342 1.584366125 -5.896221744 1 0 1 # ob + 729 1 3 -1.050000 -6.349127826 4.089643514 -6.134239214 1 0 1 # ob + 730 1 5 0.425000 -6.536386443 1.883028080 -7.995024148 1 0 1 # ho + 731 1 1 1.575000 -3.428066140 6.162031876 -9.189871776 1 0 1 # ao + 732 1 2 2.100000 -7.826206349 4.584820940 -6.510105182 1 0 1 # st + 733 1 2 2.100000 -7.733540767 7.531759689 -6.503672300 1 0 1 # st + 734 1 3 -1.050000 -8.019368913 4.659876849 -8.128441523 1 0 1 # ob + 735 1 3 -1.050000 -7.580029929 7.404260709 -8.125684583 1 0 1 # ob + 736 1 4 -0.950000 -5.019769396 6.372797905 -8.196446632 1 0 1 # oh + 737 1 3 -1.050000 -6.345037484 8.088082810 -5.891626593 1 0 1 # ob + 738 1 3 -1.050000 -8.032338885 6.067277436 -5.896221744 1 0 1 # ob + 739 1 3 -1.050000 -8.900960369 8.572554825 -6.134239214 1 0 1 # ob + 740 1 5 0.425000 -3.928219138 6.365939391 -7.995024148 1 0 1 # ho + 741 1 1 1.575000 -5.993554559 7.650358508 -9.189871776 1 0 1 # ao 742 1 2 2.100000 -10.205626708 -0.101909699 6.510105475 1 0 0 # st 743 1 2 2.100000 -10.241957528 5.916974173 6.503672592 1 0 0 # st 744 1 3 -1.050000 -9.956129382 8.788857013 8.128441816 1 0 0 # ob @@ -786,7 +786,7 @@ Atoms # full 748 1 3 -1.050000 -9.943159410 7.381456426 5.896222036 1 0 0 # ob 749 1 3 -1.050000 -9.074537926 4.876179037 6.134239507 1 0 0 # ob 750 1 5 0.425000 -8.887279309 7.082794471 7.995024441 1 0 0 # ho - 751 1 1 1.575000 -11.995599612 2.803790675 9.189872068 1 0 0 # ao + 751 1 1 1.575000 -8.601721864 3.167447198 -9.189871776 1 0 1 # ao 752 1 2 2.100000 -7.597459403 4.381001611 6.510105475 1 0 0 # st 753 1 2 2.100000 -7.690124985 1.434062862 6.503672592 1 0 0 # st 754 1 3 -1.050000 -7.404296839 4.305945702 8.128441816 1 0 0 # ob @@ -796,27 +796,27 @@ Atoms # full 758 1 3 -1.050000 -7.391326867 2.898545115 5.896222036 1 0 0 # ob 759 1 3 -1.050000 -6.522705383 0.393267726 6.134239507 1 0 0 # ob 760 1 5 0.425000 -11.495446614 2.599883160 7.995024441 1 0 0 # ho - 761 1 1 1.575000 -4.270111345 1.315464043 9.189872068 1 0 0 # ao - 762 1 2 2.100000 -0.058039197 9.067732250 -6.523590700 1 0 1 # st - 763 1 2 2.100000 -0.021708377 3.048848378 -6.517157818 1 0 1 # st - 764 1 3 -1.050000 -0.307536523 0.176965538 -8.141927041 1 0 1 # ob - 765 1 3 -1.050000 0.131802461 2.921349398 -8.139170101 1 0 1 # ob - 766 1 4 -0.950000 -2.467936853 1.889886595 -8.209932150 1 0 1 # oh - 767 1 3 -1.050000 -3.793204941 3.605171499 -5.905112111 1 0 1 # ob - 768 1 3 -1.050000 -0.320506495 1.584366125 -5.909707262 1 0 1 # ob - 769 1 3 -1.050000 -1.189127979 4.089643514 -6.147724732 1 0 1 # ob - 770 1 5 0.425000 -1.376386596 1.883028080 -8.008509666 1 0 1 # ho - 771 1 1 1.575000 -1.661944041 5.798375353 9.189872068 1 0 0 # ao - 772 1 2 2.100000 -2.666206502 4.584820940 -6.523590700 1 0 1 # st - 773 1 2 2.100000 -2.573540920 7.531759689 -6.517157818 1 0 1 # st - 774 1 3 -1.050000 -2.859369065 4.659876849 -8.141927041 1 0 1 # ob - 775 1 3 -1.050000 -2.420030081 7.404260709 -8.139170101 1 0 1 # ob - 776 1 4 -0.950000 0.140230451 6.372797905 -8.209932150 1 0 1 # oh - 777 1 3 -1.050000 -1.185037637 8.088082810 -5.905112111 1 0 1 # ob - 778 1 3 -1.050000 -2.872339037 6.067277436 -5.909707262 1 0 1 # ob - 779 1 3 -1.050000 -3.740960522 8.572554825 -6.147724732 1 0 1 # ob - 780 1 5 0.425000 1.231780709 6.365939391 -8.008509666 1 0 1 # ho - 781 1 1 1.575000 -4.227432460 7.286701985 9.189872068 1 0 0 # ao + 761 1 1 1.575000 -0.876233597 1.679120566 -9.189871776 1 0 1 # ao + 762 1 2 2.100000 -0.058039197 9.067732250 -6.510105182 1 0 1 # st + 763 1 2 2.100000 -0.021708377 3.048848378 -6.503672300 1 0 1 # st + 764 1 3 -1.050000 -0.307536523 0.176965538 -8.128441523 1 0 1 # ob + 765 1 3 -1.050000 0.131802461 2.921349398 -8.125684583 1 0 1 # ob + 766 1 4 -0.950000 -2.467936853 1.889886595 -8.196446632 1 0 1 # oh + 767 1 3 -1.050000 -3.793204941 3.605171499 -5.891626593 1 0 1 # ob + 768 1 3 -1.050000 -0.320506495 1.584366125 -5.896221744 1 0 1 # ob + 769 1 3 -1.050000 -1.189127979 4.089643514 -6.134239214 1 0 1 # ob + 770 1 5 0.425000 -1.376386596 1.883028080 -7.995024148 1 0 1 # ho + 771 1 1 1.575000 1.731933707 6.162031876 -9.189871776 1 0 1 # ao + 772 1 2 2.100000 -2.666206502 4.584820940 -6.510105182 1 0 1 # st + 773 1 2 2.100000 -2.573540920 7.531759689 -6.503672300 1 0 1 # st + 774 1 3 -1.050000 -2.859369065 4.659876849 -8.128441523 1 0 1 # ob + 775 1 3 -1.050000 -2.420030081 7.404260709 -8.125684583 1 0 1 # ob + 776 1 4 -0.950000 0.140230451 6.372797905 -8.196446632 1 0 1 # oh + 777 1 3 -1.050000 -1.185037637 8.088082810 -5.891626593 1 0 1 # ob + 778 1 3 -1.050000 -2.872339037 6.067277436 -5.896221744 1 0 1 # ob + 779 1 3 -1.050000 -3.740960522 8.572554825 -6.134239214 1 0 1 # ob + 780 1 5 0.425000 1.231780709 6.365939391 -7.995024148 1 0 1 # ho + 781 1 1 1.575000 -0.833554712 7.650358508 -9.189871776 1 0 1 # ao 782 1 2 2.100000 -5.045626860 -0.101909699 6.510105475 1 0 0 # st 783 1 2 2.100000 -5.081957680 5.916974173 6.503672592 1 0 0 # st 784 1 3 -1.050000 -4.796129535 8.788857013 8.128441816 1 0 0 # ob @@ -826,7 +826,7 @@ Atoms # full 788 1 3 -1.050000 -4.783159563 7.381456426 5.896222036 1 0 0 # ob 789 1 3 -1.050000 -3.914538079 4.876179037 6.134239507 1 0 0 # ob 790 1 5 0.425000 -3.727279462 7.082794471 7.995024441 1 0 0 # ho - 791 1 1 1.575000 -6.835599765 2.803790675 9.189872068 1 0 0 # ao + 791 1 1 1.575000 -3.441722017 3.167447198 -9.189871776 1 0 1 # ao 792 1 2 2.100000 -2.437459556 4.381001611 6.510105475 1 0 0 # st 793 1 2 2.100000 -2.530125137 1.434062862 6.503672592 1 0 0 # st 794 1 3 -1.050000 -2.244296992 4.305945702 8.128441816 1 0 0 # ob @@ -836,27 +836,27 @@ Atoms # full 798 1 3 -1.050000 -2.231327020 2.898545115 5.896222036 1 0 0 # ob 799 1 3 -1.050000 -1.362705536 0.393267726 6.134239507 1 0 0 # ob 800 1 5 0.425000 -6.335446766 2.599883160 7.995024441 1 0 0 # ho - 801 1 1 1.575000 0.946223874 10.281286664 9.189872068 0 0 0 # ao - 802 1 2 2.100000 4.932957348 -17.829737203 -6.523590700 0 1 1 # st - 803 1 2 2.100000 5.194626842 12.014671000 -6.517157818 0 0 1 # st - 804 1 3 -1.050000 4.908798697 9.142788159 -8.141927041 0 0 1 # ob - 805 1 3 -1.050000 5.348137681 11.887172019 -8.139170101 0 0 1 # ob - 806 1 4 -0.950000 2.748398366 10.855709216 -8.209932150 0 0 1 # oh - 807 1 3 -1.050000 1.423130278 12.570994121 -5.905112111 0 0 1 # ob - 808 1 3 -1.050000 4.895828725 10.550188747 -5.909707262 0 0 1 # ob - 809 1 3 -1.050000 4.027207241 13.055466135 -6.147724732 0 0 1 # ob - 810 1 5 0.425000 3.839948624 10.848850702 -8.008509666 0 0 1 # ho - 811 1 1 1.575000 3.554391179 14.764197975 9.189872068 0 0 0 # ao - 812 1 2 2.100000 2.550128718 13.550643561 -6.523590700 0 0 1 # st - 813 1 2 2.100000 2.642794300 16.497582311 -6.517157818 0 0 1 # st - 814 1 3 -1.050000 2.356966154 13.625699470 -8.141927041 0 0 1 # ob - 815 1 3 -1.050000 2.796305138 16.370083330 -8.139170101 0 0 1 # ob - 816 1 4 -0.950000 5.356565671 15.338620527 -8.209932150 0 0 1 # oh - 817 1 3 -1.050000 4.031297583 17.053905432 -5.905112111 0 0 1 # ob - 818 1 3 -1.050000 2.343996182 15.033100058 -5.909707262 0 0 1 # ob - 819 1 3 -1.050000 1.475374698 17.538377446 -6.147724732 0 0 1 # ob - 820 1 5 0.425000 6.448115929 15.331762013 -8.008509666 0 0 1 # ho - 821 1 1 1.575000 0.988902760 16.252524607 9.189872068 0 0 0 # ao + 801 1 1 1.575000 4.340101622 10.644943187 -9.189871776 0 0 1 # ao + 802 1 2 2.100000 4.932957348 -17.829737203 -6.510105182 0 1 1 # st + 803 1 2 2.100000 5.194626842 12.014671000 -6.503672300 0 0 1 # st + 804 1 3 -1.050000 4.908798697 9.142788159 -8.128441523 0 0 1 # ob + 805 1 3 -1.050000 5.348137681 11.887172019 -8.125684583 0 0 1 # ob + 806 1 4 -0.950000 2.748398366 10.855709216 -8.196446632 0 0 1 # oh + 807 1 3 -1.050000 1.423130278 12.570994121 -5.891626593 0 0 1 # ob + 808 1 3 -1.050000 4.895828725 10.550188747 -5.896221744 0 0 1 # ob + 809 1 3 -1.050000 4.027207241 13.055466135 -6.134239214 0 0 1 # ob + 810 1 5 0.425000 3.839948624 10.848850702 -7.995024148 0 0 1 # ho + 811 1 1 1.575000 6.948268927 15.127854498 -9.189871776 0 0 1 # ao + 812 1 2 2.100000 2.550128718 13.550643561 -6.510105182 0 0 1 # st + 813 1 2 2.100000 2.642794300 16.497582311 -6.503672300 0 0 1 # st + 814 1 3 -1.050000 2.356966154 13.625699470 -8.128441523 0 0 1 # ob + 815 1 3 -1.050000 2.796305138 16.370083330 -8.125684583 0 0 1 # ob + 816 1 4 -0.950000 5.356565671 15.338620527 -8.196446632 0 0 1 # oh + 817 1 3 -1.050000 4.031297583 17.053905432 -5.891626593 0 0 1 # ob + 818 1 3 -1.050000 2.343996182 15.033100058 -5.896221744 0 0 1 # ob + 819 1 3 -1.050000 1.475374698 17.538377446 -6.134239214 0 0 1 # ob + 820 1 5 0.425000 6.448115929 15.331762013 -7.995024148 0 0 1 # ho + 821 1 1 1.575000 4.382780508 16.616181130 -9.189871776 0 0 1 # ao 822 1 2 2.100000 0.170708359 8.863912922 6.510105475 0 0 0 # st 823 1 2 2.100000 0.134377539 14.882796794 6.503672592 0 0 0 # st 824 1 3 -1.050000 0.194867010 -18.108612440 8.128441816 0 1 0 # ob @@ -866,7 +866,7 @@ Atoms # full 828 1 3 -1.050000 0.433175657 16.347279047 5.896222036 0 0 0 # ob 829 1 3 -1.050000 1.301797141 13.842001659 6.134239507 0 0 0 # ob 830 1 5 0.425000 1.489055758 16.048617092 7.995024441 0 0 0 # ho - 831 1 1 1.575000 -1.619264545 11.769613296 9.189872068 0 0 0 # ao + 831 1 1 1.575000 1.774613203 12.133269819 -9.189871776 0 0 1 # ao 832 1 2 2.100000 2.778875664 13.346824233 6.510105475 0 0 0 # st 833 1 2 2.100000 2.686210082 10.399885483 6.503672592 0 0 0 # st 834 1 3 -1.050000 2.972038228 13.271768324 8.128441816 0 0 0 # ob @@ -876,27 +876,27 @@ Atoms # full 838 1 3 -1.050000 2.985008200 11.864367737 5.896222036 0 0 0 # ob 839 1 3 -1.050000 3.853629684 9.359090348 6.134239507 0 0 0 # ob 840 1 5 0.425000 -1.119111547 11.565705782 7.995024441 0 0 0 # ho - 841 1 1 1.575000 6.106223722 10.281286664 9.189872068 0 0 0 # ao - 842 1 2 2.100000 -10.547042805 -17.829737203 -6.523590700 1 1 1 # st - 843 1 2 2.100000 -10.285373310 12.014671000 -6.517157818 1 0 1 # st - 844 1 3 -1.050000 10.068798544 9.142788159 -8.141927041 0 0 1 # ob - 845 1 3 -1.050000 -10.131862472 11.887172019 -8.139170101 1 0 1 # ob - 846 1 4 -0.950000 7.908398214 10.855709216 -8.209932150 0 0 1 # oh - 847 1 3 -1.050000 6.583130126 12.570994121 -5.905112111 0 0 1 # ob - 848 1 3 -1.050000 -10.584171428 10.550188747 -5.909707262 1 0 1 # ob - 849 1 3 -1.050000 9.187207088 13.055466135 -6.147724732 0 0 1 # ob - 850 1 5 0.425000 8.999948471 10.848850702 -8.008509666 0 0 1 # ho - 851 1 1 1.575000 -11.925608974 14.764197975 9.189872068 1 0 0 # ao - 852 1 2 2.100000 7.710128565 13.550643561 -6.523590700 0 0 1 # st - 853 1 2 2.100000 7.802794147 16.497582311 -6.517157818 0 0 1 # st - 854 1 3 -1.050000 7.516966002 13.625699470 -8.141927041 0 0 1 # ob - 855 1 3 -1.050000 7.956304986 16.370083330 -8.139170101 0 0 1 # ob - 856 1 4 -0.950000 -10.123434482 15.338620527 -8.209932150 1 0 1 # oh - 857 1 3 -1.050000 9.191297430 17.053905432 -5.905112111 0 0 1 # ob - 858 1 3 -1.050000 7.503996030 15.033100058 -5.909707262 0 0 1 # ob - 859 1 3 -1.050000 6.635374545 17.538377446 -6.147724732 0 0 1 # ob - 860 1 5 0.425000 -9.031884224 15.331762013 -8.008509666 1 0 1 # ho - 861 1 1 1.575000 6.148902607 16.252524607 9.189872068 0 0 0 # ao + 841 1 1 1.575000 9.500101470 10.644943187 -9.189871776 0 0 1 # ao + 842 1 2 2.100000 -10.547042805 -17.829737203 -6.510105182 1 1 1 # st + 843 1 2 2.100000 -10.285373310 12.014671000 -6.503672300 1 0 1 # st + 844 1 3 -1.050000 10.068798544 9.142788159 -8.128441523 0 0 1 # ob + 845 1 3 -1.050000 -10.131862472 11.887172019 -8.125684583 1 0 1 # ob + 846 1 4 -0.950000 7.908398214 10.855709216 -8.196446632 0 0 1 # oh + 847 1 3 -1.050000 6.583130126 12.570994121 -5.891626593 0 0 1 # ob + 848 1 3 -1.050000 -10.584171428 10.550188747 -5.896221744 1 0 1 # ob + 849 1 3 -1.050000 9.187207088 13.055466135 -6.134239214 0 0 1 # ob + 850 1 5 0.425000 8.999948471 10.848850702 -7.995024148 0 0 1 # ho + 851 1 1 1.575000 -8.531731226 15.127854498 -9.189871776 1 0 1 # ao + 852 1 2 2.100000 7.710128565 13.550643561 -6.510105182 0 0 1 # st + 853 1 2 2.100000 7.802794147 16.497582311 -6.503672300 0 0 1 # st + 854 1 3 -1.050000 7.516966002 13.625699470 -8.128441523 0 0 1 # ob + 855 1 3 -1.050000 7.956304986 16.370083330 -8.125684583 0 0 1 # ob + 856 1 4 -0.950000 -10.123434482 15.338620527 -8.196446632 1 0 1 # oh + 857 1 3 -1.050000 9.191297430 17.053905432 -5.891626593 0 0 1 # ob + 858 1 3 -1.050000 7.503996030 15.033100058 -5.896221744 0 0 1 # ob + 859 1 3 -1.050000 6.635374545 17.538377446 -6.134239214 0 0 1 # ob + 860 1 5 0.425000 -9.031884224 15.331762013 -7.995024148 1 0 1 # ho + 861 1 1 1.575000 9.542780355 16.616181130 -9.189871776 0 0 1 # ao 862 1 2 2.100000 5.330708207 8.863912922 6.510105475 0 0 0 # st 863 1 2 2.100000 5.294377387 14.882796794 6.503672592 0 0 0 # st 864 1 3 -1.050000 5.354866857 -18.108612440 8.128441816 0 1 0 # ob @@ -906,7 +906,7 @@ Atoms # full 868 1 3 -1.050000 5.593175504 16.347279047 5.896222036 0 0 0 # ob 869 1 3 -1.050000 6.461796988 13.842001659 6.134239507 0 0 0 # ob 870 1 5 0.425000 6.649055605 16.048617092 7.995024441 0 0 0 # ho - 871 1 1 1.575000 3.540735302 11.769613296 9.189872068 0 0 0 # ao + 871 1 1 1.575000 6.934613050 12.133269819 -9.189871776 0 0 1 # ao 872 1 2 2.100000 -12.701124489 13.346824233 6.510105475 1 0 0 # st 873 1 2 2.100000 -12.793790070 10.399885483 6.503672592 1 0 0 # st 874 1 3 -1.050000 -12.507961925 13.271768324 8.128441816 1 0 0 # ob @@ -916,27 +916,27 @@ Atoms # full 878 1 3 -1.050000 -12.494991953 11.864367737 5.896222036 1 0 0 # ob 879 1 3 -1.050000 -11.626370469 9.359090348 6.134239507 1 0 0 # ob 880 1 5 0.425000 4.040888301 11.565705782 7.995024441 0 0 0 # ho - 881 1 1 1.575000 -9.373776431 10.281286664 9.189872068 1 0 0 # ao - 882 1 2 2.100000 -5.387042958 -17.829737203 -6.523590700 1 1 1 # st - 883 1 2 2.100000 -5.125373463 12.014671000 -6.517157818 1 0 1 # st - 884 1 3 -1.050000 -5.411201608 9.142788159 -8.141927041 1 0 1 # ob - 885 1 3 -1.050000 -4.971862624 11.887172019 -8.139170101 1 0 1 # ob - 886 1 4 -0.950000 -7.571601939 10.855709216 -8.209932150 1 0 1 # oh - 887 1 3 -1.050000 -8.896870027 12.570994121 -5.905112111 1 0 1 # ob - 888 1 3 -1.050000 -5.424171580 10.550188747 -5.909707262 1 0 1 # ob - 889 1 3 -1.050000 -6.292793064 13.055466135 -6.147724732 1 0 1 # ob - 890 1 5 0.425000 -6.480051681 10.848850702 -8.008509666 1 0 1 # ho - 891 1 1 1.575000 -6.765609126 14.764197975 9.189872068 1 0 0 # ao - 892 1 2 2.100000 -7.769871587 13.550643561 -6.523590700 1 0 1 # st - 893 1 2 2.100000 -7.677206006 16.497582311 -6.517157818 1 0 1 # st - 894 1 3 -1.050000 -7.963034151 13.625699470 -8.141927041 1 0 1 # ob - 895 1 3 -1.050000 -7.523695167 16.370083330 -8.139170101 1 0 1 # ob - 896 1 4 -0.950000 -4.963434634 15.338620527 -8.209932150 1 0 1 # oh - 897 1 3 -1.050000 -6.288702722 17.053905432 -5.905112111 1 0 1 # ob - 898 1 3 -1.050000 -7.976004123 15.033100058 -5.909707262 1 0 1 # ob - 899 1 3 -1.050000 -8.844625607 17.538377446 -6.147724732 1 0 1 # ob - 900 1 5 0.425000 -3.871884377 15.331762013 -8.008509666 1 0 1 # ho - 901 1 1 1.575000 -9.331097546 16.252524607 9.189872068 1 0 0 # ao + 881 1 1 1.575000 -5.979898683 10.644943187 -9.189871776 1 0 1 # ao + 882 1 2 2.100000 -5.387042958 -17.829737203 -6.510105182 1 1 1 # st + 883 1 2 2.100000 -5.125373463 12.014671000 -6.503672300 1 0 1 # st + 884 1 3 -1.050000 -5.411201608 9.142788159 -8.128441523 1 0 1 # ob + 885 1 3 -1.050000 -4.971862624 11.887172019 -8.125684583 1 0 1 # ob + 886 1 4 -0.950000 -7.571601939 10.855709216 -8.196446632 1 0 1 # oh + 887 1 3 -1.050000 -8.896870027 12.570994121 -5.891626593 1 0 1 # ob + 888 1 3 -1.050000 -5.424171580 10.550188747 -5.896221744 1 0 1 # ob + 889 1 3 -1.050000 -6.292793064 13.055466135 -6.134239214 1 0 1 # ob + 890 1 5 0.425000 -6.480051681 10.848850702 -7.995024148 1 0 1 # ho + 891 1 1 1.575000 -3.371731378 15.127854498 -9.189871776 1 0 1 # ao + 892 1 2 2.100000 -7.769871587 13.550643561 -6.510105182 1 0 1 # st + 893 1 2 2.100000 -7.677206006 16.497582311 -6.503672300 1 0 1 # st + 894 1 3 -1.050000 -7.963034151 13.625699470 -8.128441523 1 0 1 # ob + 895 1 3 -1.050000 -7.523695167 16.370083330 -8.125684583 1 0 1 # ob + 896 1 4 -0.950000 -4.963434634 15.338620527 -8.196446632 1 0 1 # oh + 897 1 3 -1.050000 -6.288702722 17.053905432 -5.891626593 1 0 1 # ob + 898 1 3 -1.050000 -7.976004123 15.033100058 -5.896221744 1 0 1 # ob + 899 1 3 -1.050000 -8.844625607 17.538377446 -6.134239214 1 0 1 # ob + 900 1 5 0.425000 -3.871884377 15.331762013 -7.995024148 1 0 1 # ho + 901 1 1 1.575000 -5.937219798 16.616181130 -9.189871776 1 0 1 # ao 902 1 2 2.100000 -10.149291946 8.863912922 6.510105475 1 0 0 # st 903 1 2 2.100000 -10.185622766 14.882796794 6.503672592 1 0 0 # st 904 1 3 -1.050000 -10.125133295 -18.108612440 8.128441816 1 1 0 # ob @@ -946,7 +946,7 @@ Atoms # full 908 1 3 -1.050000 -9.886824648 16.347279047 5.896222036 1 0 0 # ob 909 1 3 -1.050000 -9.018203164 13.842001659 6.134239507 1 0 0 # ob 910 1 5 0.425000 -8.830944547 16.048617092 7.995024441 1 0 0 # ho - 911 1 1 1.575000 -11.939264850 11.769613296 9.189872068 1 0 0 # ao + 911 1 1 1.575000 -8.545387102 12.133269819 -9.189871776 1 0 1 # ao 912 1 2 2.100000 -7.541124641 13.346824233 6.510105475 1 0 0 # st 913 1 2 2.100000 -7.633790223 10.399885483 6.503672592 1 0 0 # st 914 1 3 -1.050000 -7.347962077 13.271768324 8.128441816 1 0 0 # ob @@ -956,27 +956,27 @@ Atoms # full 918 1 3 -1.050000 -7.334992106 11.864367737 5.896222036 1 0 0 # ob 919 1 3 -1.050000 -6.466370621 9.359090348 6.134239507 1 0 0 # ob 920 1 5 0.425000 -11.439111852 11.565705782 7.995024441 1 0 0 # ho - 921 1 1 1.575000 -4.213776583 10.281286664 9.189872068 1 0 0 # ao - 922 1 2 2.100000 -0.227043110 -17.829737203 -6.523590700 1 1 1 # st - 923 1 2 2.100000 0.034626385 12.014671000 -6.517157818 1 0 1 # st - 924 1 3 -1.050000 -0.251201761 9.142788159 -8.141927041 1 0 1 # ob - 925 1 3 -1.050000 0.188137223 11.887172019 -8.139170101 1 0 1 # ob - 926 1 4 -0.950000 -2.411602091 10.855709216 -8.209932150 1 0 1 # oh - 927 1 3 -1.050000 -3.736870180 12.570994121 -5.905112111 1 0 1 # ob - 928 1 3 -1.050000 -0.264171733 10.550188747 -5.909707262 1 0 1 # ob - 929 1 3 -1.050000 -1.132793217 13.055466135 -6.147724732 1 0 1 # ob - 930 1 5 0.425000 -1.320051834 10.848850702 -8.008509666 1 0 1 # ho - 931 1 1 1.575000 -1.605609279 14.764197975 9.189872068 1 0 0 # ao - 932 1 2 2.100000 -2.609871740 13.550643561 -6.523590700 1 0 1 # st - 933 1 2 2.100000 -2.517206158 16.497582311 -6.517157818 1 0 1 # st - 934 1 3 -1.050000 -2.803034304 13.625699470 -8.141927041 1 0 1 # ob - 935 1 3 -1.050000 -2.363695320 16.370083330 -8.139170101 1 0 1 # ob - 936 1 4 -0.950000 0.196565213 15.338620527 -8.209932150 1 0 1 # oh - 937 1 3 -1.050000 -1.128702875 17.053905432 -5.905112111 1 0 1 # ob - 938 1 3 -1.050000 -2.816004275 15.033100058 -5.909707262 1 0 1 # ob - 939 1 3 -1.050000 -3.684625760 17.538377446 -6.147724732 1 0 1 # ob - 940 1 5 0.425000 1.288115471 15.331762013 -8.008509666 1 0 1 # ho - 941 1 1 1.575000 -4.171097698 16.252524607 9.189872068 1 0 0 # ao + 921 1 1 1.575000 -0.819898835 10.644943187 -9.189871776 1 0 1 # ao + 922 1 2 2.100000 -0.227043110 -17.829737203 -6.510105182 1 1 1 # st + 923 1 2 2.100000 0.034626385 12.014671000 -6.503672300 1 0 1 # st + 924 1 3 -1.050000 -0.251201761 9.142788159 -8.128441523 1 0 1 # ob + 925 1 3 -1.050000 0.188137223 11.887172019 -8.125684583 1 0 1 # ob + 926 1 4 -0.950000 -2.411602091 10.855709216 -8.196446632 1 0 1 # oh + 927 1 3 -1.050000 -3.736870180 12.570994121 -5.891626593 1 0 1 # ob + 928 1 3 -1.050000 -0.264171733 10.550188747 -5.896221744 1 0 1 # ob + 929 1 3 -1.050000 -1.132793217 13.055466135 -6.134239214 1 0 1 # ob + 930 1 5 0.425000 -1.320051834 10.848850702 -7.995024148 1 0 1 # ho + 931 1 1 1.575000 1.788268469 15.127854498 -9.189871776 1 0 1 # ao + 932 1 2 2.100000 -2.609871740 13.550643561 -6.510105182 1 0 1 # st + 933 1 2 2.100000 -2.517206158 16.497582311 -6.503672300 1 0 1 # st + 934 1 3 -1.050000 -2.803034304 13.625699470 -8.128441523 1 0 1 # ob + 935 1 3 -1.050000 -2.363695320 16.370083330 -8.125684583 1 0 1 # ob + 936 1 4 -0.950000 0.196565213 15.338620527 -8.196446632 1 0 1 # oh + 937 1 3 -1.050000 -1.128702875 17.053905432 -5.891626593 1 0 1 # ob + 938 1 3 -1.050000 -2.816004275 15.033100058 -5.896221744 1 0 1 # ob + 939 1 3 -1.050000 -3.684625760 17.538377446 -6.134239214 1 0 1 # ob + 940 1 5 0.425000 1.288115471 15.331762013 -7.995024148 1 0 1 # ho + 941 1 1 1.575000 -0.777219950 16.616181130 -9.189871776 1 0 1 # ao 942 1 2 2.100000 -4.989292099 8.863912922 6.510105475 1 0 0 # st 943 1 2 2.100000 -5.025622918 14.882796794 6.503672592 1 0 0 # st 944 1 3 -1.050000 -4.965133448 -18.108612440 8.128441816 1 1 0 # ob @@ -986,7 +986,7 @@ Atoms # full 948 1 3 -1.050000 -4.726824801 16.347279047 5.896222036 1 0 0 # ob 949 1 3 -1.050000 -3.858203317 13.842001659 6.134239507 1 0 0 # ob 950 1 5 0.425000 -3.670944700 16.048617092 7.995024441 1 0 0 # ho - 951 1 1 1.575000 -6.779265003 11.769613296 9.189872068 1 0 0 # ao + 951 1 1 1.575000 -3.385387255 12.133269819 -9.189871776 1 0 1 # ao 952 1 2 2.100000 -2.381124794 13.346824233 6.510105475 1 0 0 # st 953 1 2 2.100000 -2.473790376 10.399885483 6.503672592 1 0 0 # st 954 1 3 -1.050000 -2.187962230 13.271768324 8.128441816 1 0 0 # ob @@ -996,27 +996,27 @@ Atoms # full 958 1 3 -1.050000 -2.174992258 11.864367737 5.896222036 1 0 0 # ob 959 1 3 -1.050000 -1.306370774 9.359090348 6.134239507 1 0 0 # ob 960 1 5 0.425000 -6.279112005 11.565705782 7.995024441 1 0 0 # ho - 961 1 1 1.575000 0.777219961 -16.616182789 9.189872068 0 1 0 # ao - 962 1 2 2.100000 4.989292109 -8.863914582 -6.523590700 0 1 1 # st - 963 1 2 2.100000 5.025622929 -14.882798454 -6.517157818 0 1 1 # st - 964 1 3 -1.050000 4.739794784 -17.754681294 -8.141927041 0 1 1 # ob - 965 1 3 -1.050000 5.179133768 -15.010297434 -8.139170101 0 1 1 # ob - 966 1 4 -0.950000 2.579394453 -16.041760237 -8.209932150 0 1 1 # oh - 967 1 3 -1.050000 1.254126365 -14.326475333 -5.905112111 0 1 1 # ob - 968 1 3 -1.050000 4.726824812 -16.347280707 -5.909707262 0 1 1 # ob - 969 1 3 -1.050000 3.858203328 -13.842003318 -6.147724732 0 1 1 # ob - 970 1 5 0.425000 3.670944711 -16.048618752 -8.008509666 0 1 1 # ho - 971 1 1 1.575000 3.385387266 -12.133271479 9.189872068 0 1 0 # ao - 972 1 2 2.100000 2.381124805 -13.346825892 -6.523590700 0 1 1 # st - 973 1 2 2.100000 2.473790386 -10.399887143 -6.517157818 0 1 1 # st - 974 1 3 -1.050000 2.187962241 -13.271769983 -8.141927041 0 1 1 # ob - 975 1 3 -1.050000 2.627301225 -10.527386123 -8.139170101 0 1 1 # ob - 976 1 4 -0.950000 5.187561758 -11.558848927 -8.209932150 0 1 1 # oh - 977 1 3 -1.050000 3.862293670 -9.843564022 -5.905112111 0 1 1 # ob - 978 1 3 -1.050000 2.174992269 -11.864369396 -5.909707262 0 1 1 # ob - 979 1 3 -1.050000 1.306370785 -9.359092007 -6.147724732 0 1 1 # ob - 980 1 5 0.425000 6.279112015 -11.565707441 -8.008509666 0 1 1 # ho - 981 1 1 1.575000 0.819898846 -10.644944847 9.189872068 0 1 0 # ao + 961 1 1 1.575000 4.171097709 -16.252526266 -9.189871776 0 1 1 # ao + 962 1 2 2.100000 4.989292109 -8.863914582 -6.510105182 0 1 1 # st + 963 1 2 2.100000 5.025622929 -14.882798454 -6.503672300 0 1 1 # st + 964 1 3 -1.050000 4.739794784 -17.754681294 -8.128441523 0 1 1 # ob + 965 1 3 -1.050000 5.179133768 -15.010297434 -8.125684583 0 1 1 # ob + 966 1 4 -0.950000 2.579394453 -16.041760237 -8.196446632 0 1 1 # oh + 967 1 3 -1.050000 1.254126365 -14.326475333 -5.891626593 0 1 1 # ob + 968 1 3 -1.050000 4.726824812 -16.347280707 -5.896221744 0 1 1 # ob + 969 1 3 -1.050000 3.858203328 -13.842003318 -6.134239214 0 1 1 # ob + 970 1 5 0.425000 3.670944711 -16.048618752 -7.995024148 0 1 1 # ho + 971 1 1 1.575000 6.779265014 -11.769614956 -9.189871776 0 1 1 # ao + 972 1 2 2.100000 2.381124805 -13.346825892 -6.510105182 0 1 1 # st + 973 1 2 2.100000 2.473790386 -10.399887143 -6.503672300 0 1 1 # st + 974 1 3 -1.050000 2.187962241 -13.271769983 -8.128441523 0 1 1 # ob + 975 1 3 -1.050000 2.627301225 -10.527386123 -8.125684583 0 1 1 # ob + 976 1 4 -0.950000 5.187561758 -11.558848927 -8.196446632 0 1 1 # oh + 977 1 3 -1.050000 3.862293670 -9.843564022 -5.891626593 0 1 1 # ob + 978 1 3 -1.050000 2.174992269 -11.864369396 -5.896221744 0 1 1 # ob + 979 1 3 -1.050000 1.306370785 -9.359092007 -6.134239214 0 1 1 # ob + 980 1 5 0.425000 6.279112015 -11.565707441 -7.995024148 0 1 1 # ho + 981 1 1 1.575000 4.213776594 -10.281288324 -9.189871776 0 1 1 # ao 982 1 2 2.100000 0.001704446 -18.033556531 6.510105475 0 1 0 # st 983 1 2 2.100000 -0.034626374 -12.014672659 6.503672592 0 1 0 # st 984 1 3 -1.050000 0.251201772 -9.142789819 8.128441816 0 1 0 # ob @@ -1026,7 +1026,7 @@ Atoms # full 988 1 3 -1.050000 0.264171744 -10.550190406 5.896222036 0 1 0 # ob 989 1 3 -1.050000 1.132793228 -13.055467795 6.134239507 0 1 0 # ob 990 1 5 0.425000 1.320051845 -10.848852361 7.995024441 0 1 0 # ho - 991 1 1 1.575000 -1.788268458 -15.127856157 9.189872068 0 1 0 # ao + 991 1 1 1.575000 1.605609290 -14.764199634 -9.189871776 0 1 1 # ao 992 1 2 2.100000 2.609871751 -13.550645221 6.510105475 0 1 0 # st 993 1 2 2.100000 2.517206169 -16.497583970 6.503672592 0 1 0 # st 994 1 3 -1.050000 2.803034315 -13.625701130 8.128441816 0 1 0 # ob @@ -1036,27 +1036,27 @@ Atoms # full 998 1 3 -1.050000 2.816004286 -15.033101717 5.896222036 0 1 0 # ob 999 1 3 -1.050000 3.684625771 -17.538379106 6.134239507 0 1 0 # ob 1000 1 5 0.425000 -1.288115460 -15.331763672 7.995024441 0 1 0 # ho - 1001 1 1 1.575000 5.937219808 -16.616182789 9.189872068 0 1 0 # ao - 1002 1 2 2.100000 -10.490708043 -8.863914582 -6.523590700 1 1 1 # st - 1003 1 2 2.100000 -10.454377223 -14.882798454 -6.517157818 1 1 1 # st - 1004 1 3 -1.050000 9.899794631 -17.754681294 -8.141927041 0 1 1 # ob - 1005 1 3 -1.050000 -10.300866385 -15.010297434 -8.139170101 1 1 1 # ob - 1006 1 4 -0.950000 7.739394301 -16.041760237 -8.209932150 0 1 1 # oh - 1007 1 3 -1.050000 6.414126212 -14.326475333 -5.905112111 0 1 1 # ob - 1008 1 3 -1.050000 -10.753175341 -16.347280707 -5.909707262 1 1 1 # ob - 1009 1 3 -1.050000 9.018203175 -13.842003318 -6.147724732 0 1 1 # ob - 1010 1 5 0.425000 8.830944558 -16.048618752 -8.008509666 0 1 1 # ho - 1011 1 1 1.575000 -12.094612887 -12.133271479 9.189872068 1 1 0 # ao - 1012 1 2 2.100000 7.541124652 -13.346825892 -6.523590700 0 1 1 # st - 1013 1 2 2.100000 7.633790234 -10.399887143 -6.517157818 0 1 1 # st - 1014 1 3 -1.050000 7.347962088 -13.271769983 -8.141927041 0 1 1 # ob - 1015 1 3 -1.050000 7.787301072 -10.527386123 -8.139170101 0 1 1 # ob - 1016 1 4 -0.950000 -10.292438395 -11.558848927 -8.209932150 1 1 1 # oh - 1017 1 3 -1.050000 9.022293517 -9.843564022 -5.905112111 0 1 1 # ob - 1018 1 3 -1.050000 7.334992116 -11.864369396 -5.909707262 0 1 1 # ob - 1019 1 3 -1.050000 6.466370632 -9.359092007 -6.147724732 0 1 1 # ob - 1020 1 5 0.425000 -9.200888137 -11.565707441 -8.008509666 1 1 1 # ho - 1021 1 1 1.575000 5.979898694 -10.644944847 9.189872068 0 1 0 # ao + 1001 1 1 1.575000 9.331097556 -16.252526266 -9.189871776 0 1 1 # ao + 1002 1 2 2.100000 -10.490708043 -8.863914582 -6.510105182 1 1 1 # st + 1003 1 2 2.100000 -10.454377223 -14.882798454 -6.503672300 1 1 1 # st + 1004 1 3 -1.050000 9.899794631 -17.754681294 -8.128441523 0 1 1 # ob + 1005 1 3 -1.050000 -10.300866385 -15.010297434 -8.125684583 1 1 1 # ob + 1006 1 4 -0.950000 7.739394301 -16.041760237 -8.196446632 0 1 1 # oh + 1007 1 3 -1.050000 6.414126212 -14.326475333 -5.891626593 0 1 1 # ob + 1008 1 3 -1.050000 -10.753175341 -16.347280707 -5.896221744 1 1 1 # ob + 1009 1 3 -1.050000 9.018203175 -13.842003318 -6.134239214 0 1 1 # ob + 1010 1 5 0.425000 8.830944558 -16.048618752 -7.995024148 0 1 1 # ho + 1011 1 1 1.575000 -8.700735139 -11.769614956 -9.189871776 1 1 1 # ao + 1012 1 2 2.100000 7.541124652 -13.346825892 -6.510105182 0 1 1 # st + 1013 1 2 2.100000 7.633790234 -10.399887143 -6.503672300 0 1 1 # st + 1014 1 3 -1.050000 7.347962088 -13.271769983 -8.128441523 0 1 1 # ob + 1015 1 3 -1.050000 7.787301072 -10.527386123 -8.125684583 0 1 1 # ob + 1016 1 4 -0.950000 -10.292438395 -11.558848927 -8.196446632 1 1 1 # oh + 1017 1 3 -1.050000 9.022293517 -9.843564022 -5.891626593 0 1 1 # ob + 1018 1 3 -1.050000 7.334992116 -11.864369396 -5.896221744 0 1 1 # ob + 1019 1 3 -1.050000 6.466370632 -9.359092007 -6.134239214 0 1 1 # ob + 1020 1 5 0.425000 -9.200888137 -11.565707441 -7.995024148 1 1 1 # ho + 1021 1 1 1.575000 9.373776442 -10.281288324 -9.189871776 0 1 1 # ao 1022 1 2 2.100000 5.161704293 -18.033556531 6.510105475 0 1 0 # st 1023 1 2 2.100000 5.125373474 -12.014672659 6.503672592 0 1 0 # st 1024 1 3 -1.050000 5.411201619 -9.142789819 8.128441816 0 1 0 # ob @@ -1066,7 +1066,7 @@ Atoms # full 1028 1 3 -1.050000 5.424171591 -10.550190406 5.896222036 0 1 0 # ob 1029 1 3 -1.050000 6.292793075 -13.055467795 6.134239507 0 1 0 # ob 1030 1 5 0.425000 6.480051692 -10.848852361 7.995024441 0 1 0 # ho - 1031 1 1 1.575000 3.371731389 -15.127856157 9.189872068 0 1 0 # ao + 1031 1 1 1.575000 6.765609137 -14.764199634 -9.189871776 0 1 1 # ao 1032 1 2 2.100000 -12.870128402 -13.550645221 6.510105475 1 1 0 # st 1033 1 2 2.100000 -12.962793984 -16.497583970 6.503672592 1 1 0 # st 1034 1 3 -1.050000 -12.676965838 -13.625701130 8.128441816 1 1 0 # ob @@ -1076,27 +1076,27 @@ Atoms # full 1038 1 3 -1.050000 -12.663995866 -15.033101717 5.896222036 1 1 0 # ob 1039 1 3 -1.050000 -11.795374382 -17.538379106 6.134239507 1 1 0 # ob 1040 1 5 0.425000 3.871884387 -15.331763672 7.995024441 0 1 0 # ho - 1041 1 1 1.575000 -9.542780344 -16.616182789 9.189872068 1 1 0 # ao - 1042 1 2 2.100000 -5.330708196 -8.863914582 -6.523590700 1 1 1 # st - 1043 1 2 2.100000 -5.294377376 -14.882798454 -6.517157818 1 1 1 # st - 1044 1 3 -1.050000 -5.580205521 -17.754681294 -8.141927041 1 1 1 # ob - 1045 1 3 -1.050000 -5.140866537 -15.010297434 -8.139170101 1 1 1 # ob - 1046 1 4 -0.950000 -7.740605852 -16.041760237 -8.209932150 1 1 1 # oh - 1047 1 3 -1.050000 -9.065873940 -14.326475333 -5.905112111 1 1 1 # ob - 1048 1 3 -1.050000 -5.593175493 -16.347280707 -5.909707262 1 1 1 # ob - 1049 1 3 -1.050000 -6.461796978 -13.842003318 -6.147724732 1 1 1 # ob - 1050 1 5 0.425000 -6.649055594 -16.048618752 -8.008509666 1 1 1 # ho - 1051 1 1 1.575000 -6.934613039 -12.133271479 9.189872068 1 1 0 # ao - 1052 1 2 2.100000 -7.938875500 -13.346825892 -6.523590700 1 1 1 # st - 1053 1 2 2.100000 -7.846209919 -10.399887143 -6.517157818 1 1 1 # st - 1054 1 3 -1.050000 -8.132038064 -13.271769983 -8.141927041 1 1 1 # ob - 1055 1 3 -1.050000 -7.692699080 -10.527386123 -8.139170101 1 1 1 # ob - 1056 1 4 -0.950000 -5.132438547 -11.558848927 -8.209932150 1 1 1 # oh - 1057 1 3 -1.050000 -6.457706636 -9.843564022 -5.905112111 1 1 1 # ob - 1058 1 3 -1.050000 -8.145008036 -11.864369396 -5.909707262 1 1 1 # ob - 1059 1 3 -1.050000 -9.013629520 -9.359092007 -6.147724732 1 1 1 # ob - 1060 1 5 0.425000 -4.040888290 -11.565707441 -8.008509666 1 1 1 # ho - 1061 1 1 1.575000 -9.500101459 -10.644944847 9.189872068 1 1 0 # ao + 1041 1 1 1.575000 -6.148902596 -16.252526266 -9.189871776 1 1 1 # ao + 1042 1 2 2.100000 -5.330708196 -8.863914582 -6.510105182 1 1 1 # st + 1043 1 2 2.100000 -5.294377376 -14.882798454 -6.503672300 1 1 1 # st + 1044 1 3 -1.050000 -5.580205521 -17.754681294 -8.128441523 1 1 1 # ob + 1045 1 3 -1.050000 -5.140866537 -15.010297434 -8.125684583 1 1 1 # ob + 1046 1 4 -0.950000 -7.740605852 -16.041760237 -8.196446632 1 1 1 # oh + 1047 1 3 -1.050000 -9.065873940 -14.326475333 -5.891626593 1 1 1 # ob + 1048 1 3 -1.050000 -5.593175493 -16.347280707 -5.896221744 1 1 1 # ob + 1049 1 3 -1.050000 -6.461796978 -13.842003318 -6.134239214 1 1 1 # ob + 1050 1 5 0.425000 -6.649055594 -16.048618752 -7.995024148 1 1 1 # ho + 1051 1 1 1.575000 -3.540735291 -11.769614956 -9.189871776 1 1 1 # ao + 1052 1 2 2.100000 -7.938875500 -13.346825892 -6.510105182 1 1 1 # st + 1053 1 2 2.100000 -7.846209919 -10.399887143 -6.503672300 1 1 1 # st + 1054 1 3 -1.050000 -8.132038064 -13.271769983 -8.128441523 1 1 1 # ob + 1055 1 3 -1.050000 -7.692699080 -10.527386123 -8.125684583 1 1 1 # ob + 1056 1 4 -0.950000 -5.132438547 -11.558848927 -8.196446632 1 1 1 # oh + 1057 1 3 -1.050000 -6.457706636 -9.843564022 -5.891626593 1 1 1 # ob + 1058 1 3 -1.050000 -8.145008036 -11.864369396 -5.896221744 1 1 1 # ob + 1059 1 3 -1.050000 -9.013629520 -9.359092007 -6.134239214 1 1 1 # ob + 1060 1 5 0.425000 -4.040888290 -11.565707441 -7.995024148 1 1 1 # ho + 1061 1 1 1.575000 -6.106223711 -10.281288324 -9.189871776 1 1 1 # ao 1062 1 2 2.100000 -10.318295859 -18.033556531 6.510105475 1 1 0 # st 1063 1 2 2.100000 -10.354626679 -12.014672659 6.503672592 1 1 0 # st 1064 1 3 -1.050000 -10.068798533 -9.142789819 8.128441816 1 1 0 # ob @@ -1106,7 +1106,7 @@ Atoms # full 1068 1 3 -1.050000 -10.055828562 -10.550190406 5.896222036 1 1 0 # ob 1069 1 3 -1.050000 -9.187207077 -13.055467795 6.134239507 1 1 0 # ob 1070 1 5 0.425000 -8.999948461 -10.848852361 7.995024441 1 1 0 # ho - 1071 1 1 1.575000 -12.108268763 -15.127856157 9.189872068 1 1 0 # ao + 1071 1 1 1.575000 -8.714391015 -14.764199634 -9.189871776 1 1 1 # ao 1072 1 2 2.100000 -7.710128554 -13.550645221 6.510105475 1 1 0 # st 1073 1 2 2.100000 -7.802794136 -16.497583970 6.503672592 1 1 0 # st 1074 1 3 -1.050000 -7.516965991 -13.625701130 8.128441816 1 1 0 # ob @@ -1116,27 +1116,27 @@ Atoms # full 1078 1 3 -1.050000 -7.503996019 -15.033101717 5.896222036 1 1 0 # ob 1079 1 3 -1.050000 -6.635374534 -17.538379106 6.134239507 1 1 0 # ob 1080 1 5 0.425000 -11.608115765 -15.331763672 7.995024441 1 1 0 # ho - 1081 1 1 1.575000 -4.382780497 -16.616182789 9.189872068 1 1 0 # ao - 1082 1 2 2.100000 -0.170708348 -8.863914582 -6.523590700 1 1 1 # st - 1083 1 2 2.100000 -0.134377529 -14.882798454 -6.517157818 1 1 1 # st - 1084 1 3 -1.050000 -0.420205674 -17.754681294 -8.141927041 1 1 1 # ob - 1085 1 3 -1.050000 0.019133310 -15.010297434 -8.139170101 1 1 1 # ob - 1086 1 4 -0.950000 -2.580606005 -16.041760237 -8.209932150 1 1 1 # oh - 1087 1 3 -1.050000 -3.905874093 -14.326475333 -5.905112111 1 1 1 # ob - 1088 1 3 -1.050000 -0.433175646 -16.347280707 -5.909707262 1 1 1 # ob - 1089 1 3 -1.050000 -1.301797130 -13.842003318 -6.147724732 1 1 1 # ob - 1090 1 5 0.425000 -1.489055747 -16.048618752 -8.008509666 1 1 1 # ho - 1091 1 1 1.575000 -1.774613192 -12.133271479 9.189872068 1 1 0 # ao - 1092 1 2 2.100000 -2.778875653 -13.346825892 -6.523590700 1 1 1 # st - 1093 1 2 2.100000 -2.686210071 -10.399887143 -6.517157818 1 1 1 # st - 1094 1 3 -1.050000 -2.972038217 -13.271769983 -8.141927041 1 1 1 # ob - 1095 1 3 -1.050000 -2.532699233 -10.527386123 -8.139170101 1 1 1 # ob - 1096 1 4 -0.950000 0.027561300 -11.558848927 -8.209932150 1 1 1 # oh - 1097 1 3 -1.050000 -1.297706788 -9.843564022 -5.905112111 1 1 1 # ob - 1098 1 3 -1.050000 -2.985008189 -11.864369396 -5.909707262 1 1 1 # ob - 1099 1 3 -1.050000 -3.853629673 -9.359092007 -6.147724732 1 1 1 # ob - 1100 1 5 0.425000 1.119111558 -11.565707441 -8.008509666 1 1 1 # ho - 1101 1 1 1.575000 -4.340101611 -10.644944847 9.189872068 1 1 0 # ao + 1081 1 1 1.575000 -0.988902749 -16.252526266 -9.189871776 1 1 1 # ao + 1082 1 2 2.100000 -0.170708348 -8.863914582 -6.510105182 1 1 1 # st + 1083 1 2 2.100000 -0.134377529 -14.882798454 -6.503672300 1 1 1 # st + 1084 1 3 -1.050000 -0.420205674 -17.754681294 -8.128441523 1 1 1 # ob + 1085 1 3 -1.050000 0.019133310 -15.010297434 -8.125684583 1 1 1 # ob + 1086 1 4 -0.950000 -2.580606005 -16.041760237 -8.196446632 1 1 1 # oh + 1087 1 3 -1.050000 -3.905874093 -14.326475333 -5.891626593 1 1 1 # ob + 1088 1 3 -1.050000 -0.433175646 -16.347280707 -5.896221744 1 1 1 # ob + 1089 1 3 -1.050000 -1.301797130 -13.842003318 -6.134239214 1 1 1 # ob + 1090 1 5 0.425000 -1.489055747 -16.048618752 -7.995024148 1 1 1 # ho + 1091 1 1 1.575000 1.619264556 -11.769614956 -9.189871776 1 1 1 # ao + 1092 1 2 2.100000 -2.778875653 -13.346825892 -6.510105182 1 1 1 # st + 1093 1 2 2.100000 -2.686210071 -10.399887143 -6.503672300 1 1 1 # st + 1094 1 3 -1.050000 -2.972038217 -13.271769983 -8.128441523 1 1 1 # ob + 1095 1 3 -1.050000 -2.532699233 -10.527386123 -8.125684583 1 1 1 # ob + 1096 1 4 -0.950000 0.027561300 -11.558848927 -8.196446632 1 1 1 # oh + 1097 1 3 -1.050000 -1.297706788 -9.843564022 -5.891626593 1 1 1 # ob + 1098 1 3 -1.050000 -2.985008189 -11.864369396 -5.896221744 1 1 1 # ob + 1099 1 3 -1.050000 -3.853629673 -9.359092007 -6.134239214 1 1 1 # ob + 1100 1 5 0.425000 1.119111558 -11.565707441 -7.995024148 1 1 1 # ho + 1101 1 1 1.575000 -0.946223863 -10.281288324 -9.189871776 1 1 1 # ao 1102 1 2 2.100000 -5.158296012 -18.033556531 6.510105475 1 1 0 # st 1103 1 2 2.100000 -5.194626832 -12.014672659 6.503672592 1 1 0 # st 1104 1 3 -1.050000 -4.908798686 -9.142789819 8.128441816 1 1 0 # ob @@ -1146,7 +1146,7 @@ Atoms # full 1108 1 3 -1.050000 -4.895828714 -10.550190406 5.896222036 1 1 0 # ob 1109 1 3 -1.050000 -4.027207230 -13.055467795 6.134239507 1 1 0 # ob 1110 1 5 0.425000 -3.839948613 -10.848852361 7.995024441 1 1 0 # ho - 1111 1 1 1.575000 -6.948268916 -15.127856157 9.189872068 1 1 0 # ao + 1111 1 1 1.575000 -3.554391168 -14.764199634 -9.189871776 1 1 1 # ao 1112 1 2 2.100000 -2.550128707 -13.550645221 6.510105475 1 1 0 # st 1113 1 2 2.100000 -2.642794289 -16.497583970 6.503672592 1 1 0 # st 1114 1 3 -1.050000 -2.356966143 -13.625701130 8.128441816 1 1 0 # ob @@ -1156,27 +1156,27 @@ Atoms # full 1118 1 3 -1.050000 -2.343996171 -15.033101717 5.896222036 1 1 0 # ob 1119 1 3 -1.050000 -1.475374687 -17.538379106 6.134239507 1 1 0 # ob 1120 1 5 0.425000 -6.448115918 -15.331763672 7.995024441 1 1 0 # ho - 1121 1 1 1.575000 0.833554723 -7.650360168 9.189872068 0 1 0 # ao - 1122 1 2 2.100000 5.045626871 0.101908040 -6.523590700 0 1 1 # st - 1123 1 2 2.100000 5.081957691 -5.916975832 -6.517157818 0 1 1 # st - 1124 1 3 -1.050000 4.796129546 -8.788858673 -8.141927041 0 1 1 # ob - 1125 1 3 -1.050000 5.235468530 -6.044474812 -8.139170101 0 1 1 # ob - 1126 1 4 -0.950000 2.635729215 -7.075937616 -8.209932150 0 1 1 # oh - 1127 1 3 -1.050000 1.310461127 -5.360652711 -5.905112111 0 1 1 # ob - 1128 1 3 -1.050000 4.783159574 -7.381458085 -5.909707262 0 1 1 # ob - 1129 1 3 -1.050000 3.914538089 -4.876180697 -6.147724732 0 1 1 # ob - 1130 1 5 0.425000 3.727279473 -7.082796130 -8.008509666 0 1 1 # ho - 1131 1 1 1.575000 3.441722028 -3.167448857 9.189872068 0 1 0 # ao - 1132 1 2 2.100000 2.437459567 -4.381003271 -6.523590700 0 1 1 # st - 1133 1 2 2.100000 2.530125148 -1.434064521 -6.517157818 0 1 1 # st - 1134 1 3 -1.050000 2.244297003 -4.305947362 -8.141927041 0 1 1 # ob - 1135 1 3 -1.050000 2.683635987 -1.561563502 -8.139170101 0 1 1 # ob - 1136 1 4 -0.950000 5.243896520 -2.593026305 -8.209932150 0 1 1 # oh - 1137 1 3 -1.050000 3.918628431 -0.877741400 -5.905112111 0 1 1 # ob - 1138 1 3 -1.050000 2.231327031 -2.898546774 -5.909707262 0 1 1 # ob - 1139 1 3 -1.050000 1.362705547 -0.393269386 -6.147724732 0 1 1 # ob - 1140 1 5 0.425000 6.335446777 -2.599884819 -8.008509666 0 1 1 # ho - 1141 1 1 1.575000 0.876233608 -1.679122225 9.189872068 0 1 0 # ao + 1121 1 1 1.575000 4.227432471 -7.286703645 -9.189871776 0 1 1 # ao + 1122 1 2 2.100000 5.045626871 0.101908040 -6.510105182 0 1 1 # st + 1123 1 2 2.100000 5.081957691 -5.916975832 -6.503672300 0 1 1 # st + 1124 1 3 -1.050000 4.796129546 -8.788858673 -8.128441523 0 1 1 # ob + 1125 1 3 -1.050000 5.235468530 -6.044474812 -8.125684583 0 1 1 # ob + 1126 1 4 -0.950000 2.635729215 -7.075937616 -8.196446632 0 1 1 # oh + 1127 1 3 -1.050000 1.310461127 -5.360652711 -5.891626593 0 1 1 # ob + 1128 1 3 -1.050000 4.783159574 -7.381458085 -5.896221744 0 1 1 # ob + 1129 1 3 -1.050000 3.914538089 -4.876180697 -6.134239214 0 1 1 # ob + 1130 1 5 0.425000 3.727279473 -7.082796130 -7.995024148 0 1 1 # ho + 1131 1 1 1.575000 6.835599776 -2.803792334 -9.189871776 0 1 1 # ao + 1132 1 2 2.100000 2.437459567 -4.381003271 -6.510105182 0 1 1 # st + 1133 1 2 2.100000 2.530125148 -1.434064521 -6.503672300 0 1 1 # st + 1134 1 3 -1.050000 2.244297003 -4.305947362 -8.128441523 0 1 1 # ob + 1135 1 3 -1.050000 2.683635987 -1.561563502 -8.125684583 0 1 1 # ob + 1136 1 4 -0.950000 5.243896520 -2.593026305 -8.196446632 0 1 1 # oh + 1137 1 3 -1.050000 3.918628431 -0.877741400 -5.891626593 0 1 1 # ob + 1138 1 3 -1.050000 2.231327031 -2.898546774 -5.896221744 0 1 1 # ob + 1139 1 3 -1.050000 1.362705547 -0.393269386 -6.134239214 0 1 1 # ob + 1140 1 5 0.425000 6.335446777 -2.599884819 -7.995024148 0 1 1 # ho + 1141 1 1 1.575000 4.270111356 -1.315465702 -9.189871776 0 1 1 # ao 1142 1 2 2.100000 0.058039208 -9.067733910 6.510105475 0 1 0 # st 1143 1 2 2.100000 0.021708388 -3.048850038 6.503672592 0 1 0 # st 1144 1 3 -1.050000 0.307536534 -0.176967197 8.128441816 0 1 0 # ob @@ -1186,7 +1186,7 @@ Atoms # full 1148 1 3 -1.050000 0.320506505 -1.584367785 5.896222036 0 1 0 # ob 1149 1 3 -1.050000 1.189127990 -4.089645173 6.134239507 0 1 0 # ob 1150 1 5 0.425000 1.376386606 -1.883029740 7.995024441 0 1 0 # ho - 1151 1 1 1.575000 -1.731933696 -6.162033536 9.189872068 0 1 0 # ao + 1151 1 1 1.575000 1.661944052 -5.798377013 -9.189871776 0 1 1 # ao 1152 1 2 2.100000 2.666206512 -4.584822599 6.510105475 0 1 0 # st 1153 1 2 2.100000 2.573540931 -7.531761349 6.503672592 0 1 0 # st 1154 1 3 -1.050000 2.859369076 -4.659878508 8.128441816 0 1 0 # ob @@ -1196,27 +1196,27 @@ Atoms # full 1158 1 3 -1.050000 2.872339048 -6.067279095 5.896222036 0 1 0 # ob 1159 1 3 -1.050000 3.740960532 -8.572556484 6.134239507 0 1 0 # ob 1160 1 5 0.425000 -1.231780698 -6.365941050 7.995024441 0 1 0 # ho - 1161 1 1 1.575000 5.993554570 -7.650360168 9.189872068 0 1 0 # ao - 1162 1 2 2.100000 -10.434373281 0.101908040 -6.523590700 1 1 1 # st - 1163 1 2 2.100000 -10.398042462 -5.916975832 -6.517157818 1 1 1 # st - 1164 1 3 -1.050000 9.956129393 -8.788858673 -8.141927041 0 1 1 # ob - 1165 1 3 -1.050000 -10.244531623 -6.044474812 -8.139170101 1 1 1 # ob - 1166 1 4 -0.950000 7.795729062 -7.075937616 -8.209932150 0 1 1 # oh - 1167 1 3 -1.050000 6.470460974 -5.360652711 -5.905112111 0 1 1 # ob - 1168 1 3 -1.050000 -10.696840579 -7.381458085 -5.909707262 1 1 1 # ob - 1169 1 3 -1.050000 9.074537937 -4.876180697 -6.147724732 0 1 1 # ob - 1170 1 5 0.425000 8.887279320 -7.082796130 -8.008509666 0 1 1 # ho - 1171 1 1 1.575000 -12.038278125 -3.167448857 9.189872068 1 1 0 # ao - 1172 1 2 2.100000 7.597459414 -4.381003271 -6.523590700 0 1 1 # st - 1173 1 2 2.100000 7.690124996 -1.434064521 -6.517157818 0 1 1 # st - 1174 1 3 -1.050000 7.404296850 -4.305947362 -8.141927041 0 1 1 # ob - 1175 1 3 -1.050000 7.843635834 -1.561563502 -8.139170101 0 1 1 # ob - 1176 1 4 -0.950000 -10.236103633 -2.593026305 -8.209932150 1 1 1 # oh - 1177 1 3 -1.050000 9.078628279 -0.877741400 -5.905112111 0 1 1 # ob - 1178 1 3 -1.050000 7.391326878 -2.898546774 -5.909707262 0 1 1 # ob - 1179 1 3 -1.050000 6.522705394 -0.393269386 -6.147724732 0 1 1 # ob - 1180 1 5 0.425000 -9.144553375 -2.599884819 -8.008509666 1 1 1 # ho - 1181 1 1 1.575000 6.036233456 -1.679122225 9.189872068 0 1 0 # ao + 1161 1 1 1.575000 9.387432318 -7.286703645 -9.189871776 0 1 1 # ao + 1162 1 2 2.100000 -10.434373281 0.101908040 -6.510105182 1 1 1 # st + 1163 1 2 2.100000 -10.398042462 -5.916975832 -6.503672300 1 1 1 # st + 1164 1 3 -1.050000 9.956129393 -8.788858673 -8.128441523 0 1 1 # ob + 1165 1 3 -1.050000 -10.244531623 -6.044474812 -8.125684583 1 1 1 # ob + 1166 1 4 -0.950000 7.795729062 -7.075937616 -8.196446632 0 1 1 # oh + 1167 1 3 -1.050000 6.470460974 -5.360652711 -5.891626593 0 1 1 # ob + 1168 1 3 -1.050000 -10.696840579 -7.381458085 -5.896221744 1 1 1 # ob + 1169 1 3 -1.050000 9.074537937 -4.876180697 -6.134239214 0 1 1 # ob + 1170 1 5 0.425000 8.887279320 -7.082796130 -7.995024148 0 1 1 # ho + 1171 1 1 1.575000 -8.644400377 -2.803792334 -9.189871776 1 1 1 # ao + 1172 1 2 2.100000 7.597459414 -4.381003271 -6.510105182 0 1 1 # st + 1173 1 2 2.100000 7.690124996 -1.434064521 -6.503672300 0 1 1 # st + 1174 1 3 -1.050000 7.404296850 -4.305947362 -8.128441523 0 1 1 # ob + 1175 1 3 -1.050000 7.843635834 -1.561563502 -8.125684583 0 1 1 # ob + 1176 1 4 -0.950000 -10.236103633 -2.593026305 -8.196446632 1 1 1 # oh + 1177 1 3 -1.050000 9.078628279 -0.877741400 -5.891626593 0 1 1 # ob + 1178 1 3 -1.050000 7.391326878 -2.898546774 -5.896221744 0 1 1 # ob + 1179 1 3 -1.050000 6.522705394 -0.393269386 -6.134239214 0 1 1 # ob + 1180 1 5 0.425000 -9.144553375 -2.599884819 -7.995024148 1 1 1 # ho + 1181 1 1 1.575000 9.430111204 -1.315465702 -9.189871776 0 1 1 # ao 1182 1 2 2.100000 5.218039055 -9.067733910 6.510105475 0 1 0 # st 1183 1 2 2.100000 5.181708235 -3.048850038 6.503672592 0 1 0 # st 1184 1 3 -1.050000 5.467536381 -0.176967197 8.128441816 0 1 0 # ob @@ -1226,7 +1226,7 @@ Atoms # full 1188 1 3 -1.050000 5.480506353 -1.584367785 5.896222036 0 1 0 # ob 1189 1 3 -1.050000 6.349127837 -4.089645173 6.134239507 0 1 0 # ob 1190 1 5 0.425000 6.536386454 -1.883029740 7.995024441 0 1 0 # ho - 1191 1 1 1.575000 3.428066151 -6.162033536 9.189872068 0 1 0 # ao + 1191 1 1 1.575000 6.821943899 -5.798377013 -9.189871776 0 1 1 # ao 1192 1 2 2.100000 -12.813793640 -4.584822599 6.510105475 1 1 0 # st 1193 1 2 2.100000 -12.906459222 -7.531761349 6.503672592 1 1 0 # st 1194 1 3 -1.050000 -12.620631076 -4.659878508 8.128441816 1 1 0 # ob @@ -1236,27 +1236,27 @@ Atoms # full 1198 1 3 -1.050000 -12.607661104 -6.067279095 5.896222036 1 1 0 # ob 1199 1 3 -1.050000 -11.739039620 -8.572556484 6.134239507 1 1 0 # ob 1200 1 5 0.425000 3.928219149 -6.365941050 7.995024441 0 1 0 # ho - 1201 1 1 1.575000 -9.486445582 -7.650360168 9.189872068 1 1 0 # ao - 1202 1 2 2.100000 -5.274373434 0.101908040 -6.523590700 1 1 1 # st - 1203 1 2 2.100000 -5.238042614 -5.916975832 -6.517157818 1 1 1 # st - 1204 1 3 -1.050000 -5.523870760 -8.788858673 -8.141927041 1 1 1 # ob - 1205 1 3 -1.050000 -5.084531776 -6.044474812 -8.139170101 1 1 1 # ob - 1206 1 4 -0.950000 -7.684271090 -7.075937616 -8.209932150 1 1 1 # oh - 1207 1 3 -1.050000 -9.009539178 -5.360652711 -5.905112111 1 1 1 # ob - 1208 1 3 -1.050000 -5.536840731 -7.381458085 -5.909707262 1 1 1 # ob - 1209 1 3 -1.050000 -6.405462216 -4.876180697 -6.147724732 1 1 1 # ob - 1210 1 5 0.425000 -6.592720833 -7.082796130 -8.008509666 1 1 1 # ho - 1211 1 1 1.575000 -6.878278278 -3.167448857 9.189872068 1 1 0 # ao - 1212 1 2 2.100000 -7.882540739 -4.381003271 -6.523590700 1 1 1 # st - 1213 1 2 2.100000 -7.789875157 -1.434064521 -6.517157818 1 1 1 # st - 1214 1 3 -1.050000 -8.075703302 -4.305947362 -8.141927041 1 1 1 # ob - 1215 1 3 -1.050000 -7.636364318 -1.561563502 -8.139170101 1 1 1 # ob - 1216 1 4 -0.950000 -5.076103786 -2.593026305 -8.209932150 1 1 1 # oh - 1217 1 3 -1.050000 -6.401371874 -0.877741400 -5.905112111 1 1 1 # ob - 1218 1 3 -1.050000 -8.088673274 -2.898546774 -5.909707262 1 1 1 # ob - 1219 1 3 -1.050000 -8.957294759 -0.393269386 -6.147724732 1 1 1 # ob - 1220 1 5 0.425000 -3.984553528 -2.599884819 -8.008509666 1 1 1 # ho - 1221 1 1 1.575000 -9.443766697 -1.679122225 9.189872068 1 1 0 # ao + 1201 1 1 1.575000 -6.092567834 -7.286703645 -9.189871776 1 1 1 # ao + 1202 1 2 2.100000 -5.274373434 0.101908040 -6.510105182 1 1 1 # st + 1203 1 2 2.100000 -5.238042614 -5.916975832 -6.503672300 1 1 1 # st + 1204 1 3 -1.050000 -5.523870760 -8.788858673 -8.128441523 1 1 1 # ob + 1205 1 3 -1.050000 -5.084531776 -6.044474812 -8.125684583 1 1 1 # ob + 1206 1 4 -0.950000 -7.684271090 -7.075937616 -8.196446632 1 1 1 # oh + 1207 1 3 -1.050000 -9.009539178 -5.360652711 -5.891626593 1 1 1 # ob + 1208 1 3 -1.050000 -5.536840731 -7.381458085 -5.896221744 1 1 1 # ob + 1209 1 3 -1.050000 -6.405462216 -4.876180697 -6.134239214 1 1 1 # ob + 1210 1 5 0.425000 -6.592720833 -7.082796130 -7.995024148 1 1 1 # ho + 1211 1 1 1.575000 -3.484400530 -2.803792334 -9.189871776 1 1 1 # ao + 1212 1 2 2.100000 -7.882540739 -4.381003271 -6.510105182 1 1 1 # st + 1213 1 2 2.100000 -7.789875157 -1.434064521 -6.503672300 1 1 1 # st + 1214 1 3 -1.050000 -8.075703302 -4.305947362 -8.128441523 1 1 1 # ob + 1215 1 3 -1.050000 -7.636364318 -1.561563502 -8.125684583 1 1 1 # ob + 1216 1 4 -0.950000 -5.076103786 -2.593026305 -8.196446632 1 1 1 # oh + 1217 1 3 -1.050000 -6.401371874 -0.877741400 -5.891626593 1 1 1 # ob + 1218 1 3 -1.050000 -8.088673274 -2.898546774 -5.896221744 1 1 1 # ob + 1219 1 3 -1.050000 -8.957294759 -0.393269386 -6.134239214 1 1 1 # ob + 1220 1 5 0.425000 -3.984553528 -2.599884819 -7.995024148 1 1 1 # ho + 1221 1 1 1.575000 -6.049888949 -1.315465702 -9.189871776 1 1 1 # ao 1222 1 2 2.100000 -10.261961097 -9.067733910 6.510105475 1 1 0 # st 1223 1 2 2.100000 -10.298291917 -3.048850038 6.503672592 1 1 0 # st 1224 1 3 -1.050000 -10.012463772 -0.176967197 8.128441816 1 1 0 # ob @@ -1266,7 +1266,7 @@ Atoms # full 1228 1 3 -1.050000 -9.999493800 -1.584367785 5.896222036 1 1 0 # ob 1229 1 3 -1.050000 -9.130872315 -4.089645173 6.134239507 1 1 0 # ob 1230 1 5 0.425000 -8.943613699 -1.883029740 7.995024441 1 1 0 # ho - 1231 1 1 1.575000 -12.051934002 -6.162033536 9.189872068 1 1 0 # ao + 1231 1 1 1.575000 -8.658056254 -5.798377013 -9.189871776 1 1 1 # ao 1232 1 2 2.100000 -7.653793793 -4.584822599 6.510105475 1 1 0 # st 1233 1 2 2.100000 -7.746459374 -7.531761349 6.503672592 1 1 0 # st 1234 1 3 -1.050000 -7.460631229 -4.659878508 8.128441816 1 1 0 # ob @@ -1276,27 +1276,27 @@ Atoms # full 1238 1 3 -1.050000 -7.447661257 -6.067279095 5.896222036 1 1 0 # ob 1239 1 3 -1.050000 -6.579039773 -8.572556484 6.134239507 1 1 0 # ob 1240 1 5 0.425000 -11.551781003 -6.365941050 7.995024441 1 1 0 # ho - 1241 1 1 1.575000 -4.326445735 -7.650360168 9.189872068 1 1 0 # ao - 1242 1 2 2.100000 -0.114373587 0.101908040 -6.523590700 1 1 1 # st - 1243 1 2 2.100000 -0.078042767 -5.916975832 -6.517157818 1 1 1 # st - 1244 1 3 -1.050000 -0.363870912 -8.788858673 -8.141927041 1 1 1 # ob - 1245 1 3 -1.050000 0.075468072 -6.044474812 -8.139170101 1 1 1 # ob - 1246 1 4 -0.950000 -2.524271243 -7.075937616 -8.209932150 1 1 1 # oh - 1247 1 3 -1.050000 -3.849539331 -5.360652711 -5.905112111 1 1 1 # ob - 1248 1 3 -1.050000 -0.376840884 -7.381458085 -5.909707262 1 1 1 # ob - 1249 1 3 -1.050000 -1.245462368 -4.876180697 -6.147724732 1 1 1 # ob - 1250 1 5 0.425000 -1.432720985 -7.082796130 -8.008509666 1 1 1 # ho - 1251 1 1 1.575000 -1.718278430 -3.167448857 9.189872068 1 1 0 # ao - 1252 1 2 2.100000 -2.722540891 -4.381003271 -6.523590700 1 1 1 # st - 1253 1 2 2.100000 -2.629875310 -1.434064521 -6.517157818 1 1 1 # st - 1254 1 3 -1.050000 -2.915703455 -4.305947362 -8.141927041 1 1 1 # ob - 1255 1 3 -1.050000 -2.476364471 -1.561563502 -8.139170101 1 1 1 # ob - 1256 1 4 -0.950000 0.083896062 -2.593026305 -8.209932150 1 1 1 # oh - 1257 1 3 -1.050000 -1.241372026 -0.877741400 -5.905112111 1 1 1 # ob - 1258 1 3 -1.050000 -2.928673427 -2.898546774 -5.909707262 1 1 1 # ob - 1259 1 3 -1.050000 -3.797294911 -0.393269386 -6.147724732 1 1 1 # ob - 1260 1 5 0.425000 1.175446320 -2.599884819 -8.008509666 1 1 1 # ho - 1261 1 1 1.575000 -4.283766850 -1.679122225 9.189872068 1 1 0 # ao + 1241 1 1 1.575000 -0.932567987 -7.286703645 -9.189871776 1 1 1 # ao + 1242 1 2 2.100000 -0.114373587 0.101908040 -6.510105182 1 1 1 # st + 1243 1 2 2.100000 -0.078042767 -5.916975832 -6.503672300 1 1 1 # st + 1244 1 3 -1.050000 -0.363870912 -8.788858673 -8.128441523 1 1 1 # ob + 1245 1 3 -1.050000 0.075468072 -6.044474812 -8.125684583 1 1 1 # ob + 1246 1 4 -0.950000 -2.524271243 -7.075937616 -8.196446632 1 1 1 # oh + 1247 1 3 -1.050000 -3.849539331 -5.360652711 -5.891626593 1 1 1 # ob + 1248 1 3 -1.050000 -0.376840884 -7.381458085 -5.896221744 1 1 1 # ob + 1249 1 3 -1.050000 -1.245462368 -4.876180697 -6.134239214 1 1 1 # ob + 1250 1 5 0.425000 -1.432720985 -7.082796130 -7.995024148 1 1 1 # ho + 1251 1 1 1.575000 1.675599318 -2.803792334 -9.189871776 1 1 1 # ao + 1252 1 2 2.100000 -2.722540891 -4.381003271 -6.510105182 1 1 1 # st + 1253 1 2 2.100000 -2.629875310 -1.434064521 -6.503672300 1 1 1 # st + 1254 1 3 -1.050000 -2.915703455 -4.305947362 -8.128441523 1 1 1 # ob + 1255 1 3 -1.050000 -2.476364471 -1.561563502 -8.125684583 1 1 1 # ob + 1256 1 4 -0.950000 0.083896062 -2.593026305 -8.196446632 1 1 1 # oh + 1257 1 3 -1.050000 -1.241372026 -0.877741400 -5.891626593 1 1 1 # ob + 1258 1 3 -1.050000 -2.928673427 -2.898546774 -5.896221744 1 1 1 # ob + 1259 1 3 -1.050000 -3.797294911 -0.393269386 -6.134239214 1 1 1 # ob + 1260 1 5 0.425000 1.175446320 -2.599884819 -7.995024148 1 1 1 # ho + 1261 1 1 1.575000 -0.889889102 -1.315465702 -9.189871776 1 1 1 # ao 1262 1 2 2.100000 -5.101961250 -9.067733910 6.510105475 1 1 0 # st 1263 1 2 2.100000 -5.138292070 -3.048850038 6.503672592 1 1 0 # st 1264 1 3 -1.050000 -4.852463924 -0.176967197 8.128441816 1 1 0 # ob @@ -1306,7 +1306,7 @@ Atoms # full 1268 1 3 -1.050000 -4.839493952 -1.584367785 5.896222036 1 1 0 # ob 1269 1 3 -1.050000 -3.970872468 -4.089645173 6.134239507 1 1 0 # ob 1270 1 5 0.425000 -3.783613851 -1.883029740 7.995024441 1 1 0 # ho - 1271 1 1 1.575000 -6.891934154 -6.162033536 9.189872068 1 1 0 # ao + 1271 1 1 1.575000 -3.498056406 -5.798377013 -9.189871776 1 1 1 # ao 1272 1 2 2.100000 -2.493793945 -4.584822599 6.510105475 1 1 0 # st 1273 1 2 2.100000 -2.586459527 -7.531761349 6.503672592 1 1 0 # st 1274 1 3 -1.050000 -2.300631381 -4.659878508 8.128441816 1 1 0 # ob diff --git a/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data2 b/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data2 index 4ee3c34e08..c37bbbfb6e 100644 --- a/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data2 +++ b/tools/msi2lmp/test/reference/PyAC_bulk-clayff.data2 @@ -1,18 +1,18 @@ -LAMMPS data file via write_data, version 5 Oct 2016, timestep = 97 +LAMMPS data file via write_data, version 29 Aug 2024, timestep = 94, units = real 1280 atoms 5 atom types 128 bonds 1 bond types --1.0320000000000000e+01 1.0320000000000000e+01 xlo xhi --1.7931646038000000e+01 1.7931646038000000e+01 ylo yhi --9.1966146809999998e+00 9.1966146809999998e+00 zlo zhi -2.2533867499999999e-01 -3.3938777480000000e+00 -3.6365652300000001e-01 xy xz yz +-10.32 10.32 xlo xhi +-17.931646038 17.931646038 ylo yhi +-9.189871922 9.189871922 zlo zhi +0.225338675 -3.393877748 -0.363656523 xy xz yz Masses -1 26.9815 +1 26.98154 2 28.0855 3 15.9994 4 15.9994 @@ -32,2697 +32,2697 @@ Bond Coeffs # harmonic Atoms # full -1 1 1 1.5750000000000000e+00 2.5999859887541152e+00 1.4895295600930361e+00 -3.2684095454396100e-03 0 0 0 -2 1 2 2.1000000000000001e+00 3.3890158510276365e+00 8.8633001207774171e+00 2.7539653683351801e+00 0 0 0 -3 1 2 2.1000000000000001e+00 3.4122910819528869e+00 2.8524994338649421e+00 2.7618119426027334e+00 0 0 0 -4 1 3 -1.0500000000000000e+00 3.1917106615190871e+00 -3.1338269933883112e-02 1.1357135267887219e+00 0 0 0 -5 1 3 -1.0500000000000000e+00 3.5469715140592335e+00 2.7595296221569008e+00 1.1370155152705124e+00 0 0 0 -6 1 4 -9.4999999999999996e-01 9.0629865585113478e-01 1.5632893985929819e+00 1.0069802353213007e+00 0 0 0 -7 1 3 -1.0500000000000000e+00 -4.4288757751145802e-01 3.5553420116799757e+00 3.2357631024135358e+00 0 0 0 -8 1 3 -1.0500000000000000e+00 3.3001891233613350e+00 1.3781620274833877e+00 3.2374587487515178e+00 0 0 0 -9 1 3 -1.0500000000000000e+00 2.1467877066985572e+00 3.7041759320173213e+00 3.0459627186065976e+00 0 0 0 -10 1 5 4.2499999999999999e-01 3.9940955153589464e-01 6.8440286676932871e-01 1.1507107600825695e+00 0 0 0 -11 1 1 1.5750000000000000e+00 5.2081610166521486e+00 5.9724603411204953e+00 -3.2678269427819373e-03 0 0 0 -12 1 2 2.1000000000000001e+00 7.8082390717283801e-01 4.3803873151640857e+00 2.7539573196414509e+00 0 0 0 -13 1 2 2.1000000000000001e+00 8.6049184758384811e-01 7.3353954630155727e+00 2.7618077229661608e+00 0 0 0 -14 1 3 -1.0500000000000000e+00 6.3985291874622341e-01 4.4515561398457919e+00 1.1357491950576897e+00 0 0 0 -15 1 3 -1.0500000000000000e+00 9.9516171983727020e-01 7.2424161873666044e+00 1.1369982112775414e+00 0 0 0 -16 1 4 -9.4999999999999996e-01 3.5145105035101025e+00 6.0462386370433165e+00 1.0069819170376704e+00 0 0 0 -17 1 3 -1.0500000000000000e+00 2.1653116942489294e+00 8.0382453753562579e+00 3.2357864576820852e+00 0 0 0 -18 1 3 -1.0500000000000000e+00 7.4835045014725310e-01 5.8610807683013810e+00 3.2374554227766854e+00 0 0 0 -19 1 3 -1.0500000000000000e+00 -4.0504297107989196e-01 8.1871235044640613e+00 3.0459446104666839e+00 0 0 0 -20 1 5 4.2499999999999999e-01 3.0075427813219715e+00 5.1673094182610200e+00 1.1507483385791737e+00 0 0 0 -21 1 1 1.5750000000000000e+00 2.6161048042733217e+00 7.4761708036165011e+00 -3.7559789002870048e-03 0 0 0 -22 1 2 2.1000000000000001e+00 1.8270583837568388e+00 1.0238224436981014e-01 -2.7609433636234240e+00 0 0 0 -23 1 2 2.1000000000000001e+00 1.8037926928806804e+00 6.1131912799914794e+00 -2.7688607211148550e+00 0 0 0 -24 1 3 -1.0500000000000000e+00 2.0245843840439779e+00 8.9971802013490674e+00 -1.1427990238002010e+00 0 0 0 -25 1 3 -1.0500000000000000e+00 1.6690794936693152e+00 6.2059206004470688e+00 -1.1439630092406396e+00 0 0 0 -26 1 4 -9.4999999999999996e-01 4.3099221099139733e+00 7.4024984100470839e+00 -1.0139954105990832e+00 0 0 0 -27 1 3 -1.0500000000000000e+00 5.6590031416114179e+00 5.4102611437460766e+00 -3.2425548174288927e+00 0 0 0 -28 1 3 -1.0500000000000000e+00 1.9161020068286181e+00 7.5874974627099085e+00 -3.2446533398602568e+00 0 0 0 -29 1 3 -1.0500000000000000e+00 3.0692592992822245e+00 5.2614642342074163e+00 -3.0529614390734992e+00 0 0 0 -30 1 5 4.2499999999999999e-01 4.8166943688168953e+00 8.2812214959912609e+00 -1.1575736167124671e+00 0 0 0 -31 1 1 1.5750000000000000e+00 7.9432589838539513e-03 2.9932322017580155e+00 -3.7548310874804258e-03 0 0 0 -32 1 2 2.1000000000000001e+00 4.4352567674819241e+00 4.5852778048151954e+00 -2.7609429803808379e+00 0 0 0 -33 1 2 2.1000000000000001e+00 4.3556162421312727e+00 1.6303072110574242e+00 -2.7688546110084076e+00 0 0 0 -34 1 3 -1.0500000000000000e+00 4.5764329813965201e+00 4.5142930965604897e+00 -1.1428117296192752e+00 0 0 0 -35 1 3 -1.0500000000000000e+00 4.2208908922051336e+00 1.7230220252737531e+00 -1.1439381753911206e+00 0 0 0 -36 1 4 -9.4999999999999996e-01 1.7016840076240793e+00 2.9195149987798672e+00 -1.0140049080257008e+00 0 0 0 -37 1 3 -1.0500000000000000e+00 3.0508094436907065e+00 9.2735955111261248e-01 -3.2425715481628181e+00 0 0 0 -38 1 3 -1.0500000000000000e+00 4.4679443003019212e+00 3.1046094096202950e+00 -3.2446642002284571e+00 0 0 0 -39 1 3 -1.0500000000000000e+00 5.6210980414275298e+00 7.7850985095940217e-01 -3.0529442198684507e+00 0 0 0 -40 1 5 4.2499999999999999e-01 2.2085508398324158e+00 3.7983231087392824e+00 -1.1577011829365311e+00 0 0 0 -41 1 1 1.5750000000000000e+00 7.7600001218919523e+00 1.4895196291109798e+00 -3.2657864259189040e-03 0 0 0 -42 1 2 2.1000000000000001e+00 -1.2091006019115589e+01 8.8632974450891417e+00 2.7539547041448795e+00 1 0 0 -43 1 2 2.1000000000000001e+00 -1.2067713232602157e+01 2.8525136078719164e+00 2.7618235199017409e+00 1 0 0 -44 1 3 -1.0500000000000000e+00 8.3516959569061555e+00 -3.1339532310223461e-02 1.1357433570971924e+00 0 0 0 -45 1 3 -1.0500000000000000e+00 -1.1933025492148120e+01 2.7595329973670104e+00 1.1370134112483044e+00 1 0 0 -46 1 4 -9.4999999999999996e-01 6.0662672751172373e+00 1.5632462792111497e+00 1.0069655351602584e+00 0 0 0 -47 1 3 -1.0500000000000000e+00 4.7171183489904180e+00 3.5553451756140646e+00 3.2357682722939334e+00 0 0 0 -48 1 3 -1.0500000000000000e+00 -1.2179814839759992e+01 1.3781454091287202e+00 3.2374743626679336e+00 1 0 0 -49 1 3 -1.0500000000000000e+00 7.3067998243476922e+00 3.7041714141887212e+00 3.0459588478344077e+00 0 0 0 -50 1 5 4.2499999999999999e-01 5.5593955964411492e+00 6.8439387532284712e-01 1.1505669005138230e+00 0 0 0 -51 1 1 1.5750000000000000e+00 -1.0271831701454774e+01 5.9724606597474157e+00 -3.2705090813571758e-03 1 0 0 -52 1 2 2.1000000000000001e+00 5.9408180554345194e+00 4.3804006042748469e+00 2.7539659364818760e+00 0 0 0 -53 1 2 2.1000000000000001e+00 6.0204684195903440e+00 7.3353880878252973e+00 2.7618080745736791e+00 0 0 0 -54 1 3 -1.0500000000000000e+00 5.7998593359670885e+00 4.4515526262705585e+00 1.1357348262919498e+00 0 0 0 -55 1 3 -1.0500000000000000e+00 6.1551595276671165e+00 7.2424262028151780e+00 1.1369916832629752e+00 0 0 0 -56 1 4 -9.4999999999999996e-01 -1.1965495382161963e+01 6.0462304220183150e+00 1.0070022736298210e+00 1 0 0 -57 1 3 -1.0500000000000000e+00 7.3253562399943561e+00 8.0382687380075382e+00 3.2357743586474470e+00 0 0 0 -58 1 3 -1.0500000000000000e+00 5.9083487186442269e+00 5.8610518812341148e+00 3.2374617422859089e+00 0 0 0 -59 1 3 -1.0500000000000000e+00 4.7549501783979871e+00 8.1871270499566329e+00 3.0459460044387185e+00 0 0 0 -60 1 5 4.2499999999999999e-01 8.1675777506518017e+00 5.1673452186951785e+00 1.1508566812238072e+00 0 0 0 -61 1 1 1.5750000000000000e+00 7.7761138336528575e+00 7.4761697781487406e+00 -3.7580555383147640e-03 0 0 0 -62 1 2 2.1000000000000001e+00 6.9870625419908770e+00 1.0236857881965378e-01 -2.7609530688361730e+00 0 0 0 -63 1 2 2.1000000000000001e+00 6.9638163429426783e+00 6.1131999232440997e+00 -2.7688597574900182e+00 0 0 0 -64 1 3 -1.0500000000000000e+00 7.1845768042068343e+00 8.9971837243373898e+00 -1.1427811518142867e+00 0 0 0 -65 1 3 -1.0500000000000000e+00 6.8290823812761374e+00 6.2059099045834571e+00 -1.1439562764296625e+00 0 0 0 -66 1 4 -9.4999999999999996e-01 -1.1170087733372744e+01 7.4024835932118371e+00 -1.0139778639834489e+00 1 0 0 -67 1 3 -1.0500000000000000e+00 -9.8209500322774037e+00 5.4102853287564159e+00 -3.2425657088525419e+00 1 0 0 -68 1 3 -1.0500000000000000e+00 7.0761041543125955e+00 7.5875255489076068e+00 -3.2446577662945764e+00 0 0 0 -69 1 3 -1.0500000000000000e+00 8.2292664263953057e+00 5.2614600888460927e+00 -3.0529632035400311e+00 0 0 0 -70 1 5 4.2499999999999999e-01 -1.0663272694379867e+01 8.2812544466164262e+00 -1.1574899906021443e+00 1 0 0 -71 1 1 1.5750000000000000e+00 5.1679291867752841e+00 2.9932421670148486e+00 -3.7577228510699001e-03 0 0 0 -72 1 2 2.1000000000000001e+00 -1.1044767300168616e+01 4.5852760408334774e+00 -2.7609521778782176e+00 1 0 0 -73 1 2 2.1000000000000001e+00 -1.1124388980911734e+01 1.6303195608669299e+00 -2.7688431292616507e+00 1 0 0 -74 1 3 -1.0500000000000000e+00 -1.0903581498310636e+01 4.5142906934311924e+00 -1.1427845473335605e+00 1 0 0 -75 1 3 -1.0500000000000000e+00 -1.1259106369033972e+01 1.7230268384806458e+00 -1.1439410995923396e+00 1 0 0 -76 1 4 -9.4999999999999996e-01 6.8617144958469076e+00 2.9195557673048818e+00 -1.0139879262950160e+00 0 0 0 -77 1 3 -1.0500000000000000e+00 8.2108057946072996e+00 9.2735729230230390e-01 -3.2425776499777719e+00 0 0 0 -78 1 3 -1.0500000000000000e+00 -1.1012059810070339e+01 3.1045919471971004e+00 -3.2446473870783468e+00 1 0 0 -79 1 3 -1.0500000000000000e+00 -9.8588900558710808e+00 7.7850518566728155e-01 -3.0529472339342547e+00 1 0 0 -80 1 5 4.2499999999999999e-01 7.3685681396951637e+00 3.7983364769353116e+00 -1.1575475830507376e+00 0 0 0 -81 1 1 1.5750000000000000e+00 -7.7200137563852609e+00 1.4895294530661403e+00 -3.2684599822623284e-03 1 0 0 -82 1 2 2.1000000000000001e+00 -6.9309835694285180e+00 8.8633000360003891e+00 2.7539655829756615e+00 1 0 0 -83 1 2 2.1000000000000001e+00 -6.9077088390904287e+00 2.8524991867344269e+00 2.7618117534379607e+00 1 0 0 -84 1 3 -1.0500000000000000e+00 -7.1282896122357791e+00 -3.1337790666402299e-02 1.1357138609993100e+00 1 0 0 -85 1 3 -1.0500000000000000e+00 -6.7730290070254648e+00 2.7595293114608452e+00 1.1370158767616427e+00 1 0 0 -86 1 4 -9.4999999999999996e-01 -9.4137011727461637e+00 1.5632889909165790e+00 1.0069804405775873e+00 1 0 0 -87 1 3 -1.0500000000000000e+00 -1.0762886927889904e+01 3.5553424385566323e+00 3.2357631758371692e+00 1 0 0 -88 1 3 -1.0500000000000000e+00 -7.0198114225359447e+00 1.3781627149599167e+00 3.2374581287983730e+00 1 0 0 -89 1 3 -1.0500000000000000e+00 -8.1732123893871496e+00 3.7041758941777481e+00 3.0459624211456457e+00 1 0 0 -90 1 5 4.2499999999999999e-01 -9.9205899642595909e+00 6.8440357171864363e-01 1.1507119739579768e+00 1 0 0 -91 1 1 1.5750000000000000e+00 -5.1118389155552801e+00 5.9724604992986876e+00 -3.2677938051328681e-03 1 0 0 -92 1 2 2.1000000000000001e+00 -9.5391764189832653e+00 4.3803869998831004e+00 2.7539574271080607e+00 1 0 0 -93 1 2 2.1000000000000001e+00 -9.4595081799096388e+00 7.3353965025317827e+00 2.7618078347600434e+00 1 0 0 -94 1 3 -1.0500000000000000e+00 -9.6801468113930103e+00 4.4515564521540760e+00 1.1357496055372582e+00 1 0 0 -95 1 3 -1.0500000000000000e+00 -9.3248381172301720e+00 7.2424157374410534e+00 1.1369982830380732e+00 1 0 0 -96 1 4 -9.4999999999999996e-01 -6.8054892996665686e+00 6.0462398159612256e+00 1.0069818364520042e+00 1 0 0 -97 1 3 -1.0500000000000000e+00 -8.1546879688645451e+00 8.0382456007117398e+00 3.2357858485300515e+00 1 0 0 -98 1 3 -1.0500000000000000e+00 -9.5716494128412961e+00 5.8610801354623092e+00 3.2374551881368738e+00 1 0 0 -99 1 3 -1.0500000000000000e+00 -1.0725043969209066e+01 8.1871237437456550e+00 3.0459446329304463e+00 1 0 0 -100 1 5 4.2499999999999999e-01 -7.3124574315238666e+00 5.1673091520186851e+00 1.1507497875855961e+00 1 0 0 -101 1 1 1.5750000000000000e+00 -7.7038948864236607e+00 7.4761709779946877e+00 -3.7563858194751276e-03 1 0 0 -102 1 2 2.1000000000000001e+00 -8.4929416250579237e+00 1.0238205190912097e-01 -2.7609433628825437e+00 1 0 0 -103 1 2 2.1000000000000001e+00 -8.5162068339533832e+00 6.1131914931820752e+00 -2.7688610988552806e+00 1 0 0 -104 1 3 -1.0500000000000000e+00 -8.2954155113210621e+00 8.9971804574221004e+00 -1.1427988389805961e+00 1 0 0 -105 1 3 -1.0500000000000000e+00 -8.6509205149498847e+00 6.2059203624978956e+00 -1.1439628590241284e+00 1 0 0 -106 1 4 -9.4999999999999996e-01 -6.0100779546322549e+00 7.4024979040990928e+00 -1.0139958673379255e+00 1 0 0 -107 1 3 -1.0500000000000000e+00 -4.6609961845666854e+00 5.4102617087963587e+00 -3.2425544229802377e+00 1 0 0 -108 1 3 -1.0500000000000000e+00 -8.4038980403496684e+00 7.5874972699614922e+00 -3.2446537367483241e+00 1 0 0 -109 1 3 -1.0500000000000000e+00 -7.2507418722833936e+00 5.2614645688107124e+00 -3.0529610822747220e+00 1 0 0 -110 1 5 4.2499999999999999e-01 -5.5033059365206407e+00 8.2812208311420328e+00 -1.1575765233774842e+00 1 0 0 -111 1 1 1.5750000000000000e+00 -1.0312056810203035e+01 2.9932322130065998e+00 -3.7546907983969646e-03 1 0 0 -112 1 2 2.1000000000000001e+00 -5.8847433874873287e+00 4.5852785579583113e+00 -2.7609429033193313e+00 1 0 0 -113 1 2 2.1000000000000001e+00 -5.9643839170466686e+00 1.6303066689684940e+00 -2.7688547216593093e+00 1 0 0 -114 1 3 -1.0500000000000000e+00 -5.7435669944029248e+00 4.5142929050558713e+00 -1.1428123357037983e+00 1 0 0 -115 1 3 -1.0500000000000000e+00 -6.0991091928443781e+00 1.7230226164423819e+00 -1.1439386957606192e+00 1 0 0 -116 1 4 -9.4999999999999996e-01 -8.6183165743253909e+00 2.9195138811823007e+00 -1.0140048055866231e+00 1 0 0 -117 1 3 -1.0500000000000000e+00 -7.2691903819614820e+00 9.2736020008046438e-01 -3.2425717834672385e+00 1 0 0 -118 1 3 -1.0500000000000000e+00 -5.8520558193569849e+00 3.1046084246173429e+00 -3.2446638893543165e+00 1 0 0 -119 1 3 -1.0500000000000000e+00 -4.6989020453283867e+00 7.7850970320779922e-01 -3.0529439927969300e+00 1 0 0 -120 1 5 4.2499999999999999e-01 -8.1114486366180678e+00 3.7983239523822867e+00 -1.1577012407700238e+00 1 0 0 -121 1 1 1.5750000000000000e+00 -2.5599994626479976e+00 1.4895195225863134e+00 -3.2660642944506435e-03 1 0 0 -122 1 2 2.1000000000000001e+00 -1.7710062286867227e+00 8.8632972747936982e+00 2.7539546373495405e+00 1 0 0 -123 1 2 2.1000000000000001e+00 -1.7477123009753157e+00 2.8525136185930755e+00 2.7618236550482624e+00 1 0 0 -124 1 3 -1.0500000000000000e+00 -1.9683041681687321e+00 -3.1339314943114260e-02 1.1357434005060227e+00 1 0 0 -125 1 3 -1.0500000000000000e+00 -1.6130256197699246e+00 2.7595328394810750e+00 1.1370135266718489e+00 1 0 0 -126 1 4 -9.4999999999999996e-01 -4.2537337856944379e+00 1.5632441680250189e+00 1.0069648786930525e+00 1 0 0 -127 1 3 -1.0500000000000000e+00 -5.6028806915798572e+00 3.5553457721911457e+00 3.2357688590305571e+00 1 0 0 -128 1 3 -1.0500000000000000e+00 -1.8598151617417997e+00 1.3781457768821710e+00 3.2374742127375917e+00 1 0 0 -129 1 3 -1.0500000000000000e+00 -3.0132009706882785e+00 3.7041715558434340e+00 3.0459588995882712e+00 1 0 0 -130 1 5 4.2499999999999999e-01 -4.7606046035337171e+00 6.8439349642540748e-01 1.1505607409996657e+00 1 0 0 -131 1 1 1.5750000000000000e+00 4.8168369057153271e-02 5.9724605712145085e+00 -3.2704117388746567e-03 1 0 0 -132 1 2 2.1000000000000001e+00 -4.3791817898634946e+00 4.3804013865484848e+00 2.7539658968809935e+00 1 0 0 -133 1 2 2.1000000000000001e+00 -4.2995319515097883e+00 7.3353882982958218e+00 2.7618078686262244e+00 1 0 0 -134 1 3 -1.0500000000000000e+00 -4.5201407292494871e+00 4.4515523522287275e+00 1.1357346289073345e+00 1 0 0 -135 1 3 -1.0500000000000000e+00 -4.1648406595123815e+00 7.2424265294413708e+00 1.1369912415882819e+00 1 0 0 -136 1 4 -9.4999999999999996e-01 -1.6454953945829232e+00 6.0462304571223804e+00 1.0070026477177905e+00 1 0 0 -137 1 3 -1.0500000000000000e+00 -2.9946439468920527e+00 8.0382690637231917e+00 3.2357743104080114e+00 1 0 0 -138 1 3 -1.0500000000000000e+00 -4.4116515205365854e+00 5.8610507068010520e+00 3.2374621599322246e+00 1 0 0 -139 1 3 -1.0500000000000000e+00 -5.5650494733788616e+00 8.1871266439263444e+00 3.0459458790032787e+00 1 0 0 -140 1 5 4.2499999999999999e-01 -2.1524218145509142e+00 5.1673462038601450e+00 1.1508591924041909e+00 1 0 0 -141 1 1 1.5750000000000000e+00 -2.5438859347542353e+00 7.4761697245415135e+00 -3.7582632092334478e-03 1 0 0 -142 1 2 2.1000000000000001e+00 -3.3329363804842851e+00 1.0236811376637078e-01 -2.7609530240071400e+00 1 0 0 -143 1 2 2.1000000000000001e+00 -3.3561829873008966e+00 6.1132000526679882e+00 -2.7688597295862918e+00 1 0 0 -144 1 3 -1.0500000000000000e+00 -3.1354235356298261e+00 8.9971842040066932e+00 -1.1427807792040543e+00 1 0 0 -145 1 3 -1.0500000000000000e+00 -3.4909182600583835e+00 6.2059094368932080e+00 -1.1439561958179105e+00 1 0 0 -146 1 4 -9.4999999999999996e-01 -8.5008735848989936e-01 7.4024836920448358e+00 -1.0139778123793981e+00 1 0 0 -147 1 3 -1.0500000000000000e+00 4.9904929440264922e-01 5.4102852955378324e+00 -3.2425656000684357e+00 1 0 0 -148 1 3 -1.0500000000000000e+00 -3.2438965163198175e+00 7.5875255784303768e+00 -3.2446584652783006e+00 1 0 0 -149 1 3 -1.0500000000000000e+00 -2.0907332304654513e+00 5.2614599131077355e+00 -3.0529635108663689e+00 1 0 0 -150 1 5 4.2499999999999999e-01 -3.4327252441785028e-01 8.2812545429943718e+00 -1.1574891817763771e+00 1 0 0 -151 1 1 1.5750000000000000e+00 -5.1520707526539180e+00 2.9932422696247407e+00 -3.7575710303681120e-03 1 0 0 -152 1 2 2.1000000000000001e+00 -7.2476725112305829e-01 4.5852758198773422e+00 -2.7609523624229535e+00 1 0 0 -153 1 2 2.1000000000000001e+00 -8.0438924000571177e-01 1.6303201218117742e+00 -2.7688428916587142e+00 1 0 0 -154 1 3 -1.0500000000000000e+00 -5.8358168128787469e-01 4.5142909571471250e+00 -1.1427842365077652e+00 1 0 0 -155 1 3 -1.0500000000000000e+00 -9.3910616162538574e-01 1.7230269705662700e+00 -1.1439410014752056e+00 1 0 0 -156 1 4 -9.4999999999999996e-01 -3.4582854395786136e+00 2.9195566902968508e+00 -1.0139875801681342e+00 1 0 0 -157 1 3 -1.0500000000000000e+00 -2.1091939503703152e+00 9.2735770730401157e-01 -3.2425784113786129e+00 1 0 0 -158 1 3 -1.0500000000000000e+00 -6.9205988720759315e-01 3.1045918731948028e+00 -3.2446474792644775e+00 1 0 0 -159 1 3 -1.0500000000000000e+00 4.6110929925033162e-01 7.7850537414041909e-01 -3.0529474813034367e+00 1 0 0 -160 1 5 4.2499999999999999e-01 -2.9514312473451580e+00 3.7983374737998545e+00 -1.1575435527823981e+00 1 0 0 -161 1 1 1.5750000000000000e+00 2.6563134001835174e+00 1.0455371516328153e+01 -3.2734775751421807e-03 0 0 0 -162 1 2 2.1000000000000001e+00 3.2200000793507915e+00 -1.8034168055802969e+01 2.7539699954278376e+00 0 1 0 -163 1 2 2.1000000000000001e+00 3.4686304351053021e+00 1.1818330371923647e+01 2.7618152520441335e+00 0 0 0 -164 1 3 -1.0500000000000000e+00 3.2480341177807297e+00 8.9344903893301542e+00 1.1357344410643542e+00 0 0 0 -165 1 3 -1.0500000000000000e+00 3.6033098122302398e+00 1.1725346434065575e+01 1.1370112044265888e+00 0 0 0 -166 1 4 -9.4999999999999996e-01 9.6267397491767959e-01 1.0529174885771052e+01 1.0070252189892397e+00 0 0 0 -167 1 3 -1.0500000000000000e+00 -3.8653877399151604e-01 1.2521163438190538e+01 3.2357641403694473e+00 0 0 0 -168 1 3 -1.0500000000000000e+00 3.3565301561723722e+00 1.0343985356367806e+01 3.2374269175278840e+00 0 0 0 -169 1 3 -1.0500000000000000e+00 2.2031200709181498e+00 1.2669998832466721e+01 3.0459640112402759e+00 0 0 0 -170 1 5 4.2499999999999999e-01 4.5576637197079073e-01 9.6503202047150296e+00 1.1510612204759685e+00 0 0 0 -171 1 1 1.5750000000000000e+00 5.2644962792255114e+00 1.4938261534530948e+01 -3.2647451325473753e-03 0 0 0 -172 1 2 2.1000000000000001e+00 8.3716356417033211e-01 1.3346218268802954e+01 2.7539470758802835e+00 0 0 0 -173 1 2 2.1000000000000001e+00 9.1681075011299562e-01 1.6301231345167661e+01 2.7618125766893566e+00 0 0 0 -174 1 3 -1.0500000000000000e+00 6.9620077398076852e-01 1.3417388047104328e+01 1.1357329589097631e+00 0 0 0 -175 1 3 -1.0500000000000000e+00 1.0514831822196271e+00 1.6208254021374852e+01 1.1370122634561355e+00 0 0 0 -176 1 4 -9.4999999999999996e-01 3.5707945950799811e+00 1.5012003258438757e+01 1.0069522165247839e+00 0 0 0 -177 1 3 -1.0500000000000000e+00 2.2216102376958187e+00 1.7004067428805609e+01 3.2357767642373751e+00 0 0 0 -178 1 3 -1.0500000000000000e+00 8.0468569905412757e-01 1.4826903246577299e+01 3.2374729366625967e+00 0 0 0 -179 1 3 -1.0500000000000000e+00 -3.4870265184444982e-01 1.7152922875565228e+01 3.0459529855636607e+00 0 0 0 -180 1 5 4.2499999999999999e-01 3.0638743761134464e+00 1.4133083814238685e+01 1.1505085237616779e+00 0 0 0 -181 1 1 1.5750000000000000e+00 2.6724321383913008e+00 1.6441984484756983e+01 -3.7572437476853793e-03 0 0 0 -182 1 2 2.1000000000000001e+00 1.8833962660382699e+00 9.0681931419489921e+00 -2.7609335407081872e+00 0 0 0 -183 1 2 2.1000000000000001e+00 1.8601111196809121e+00 1.5079040342628350e+01 -2.7688508235497418e+00 0 0 0 -184 1 3 -1.0500000000000000e+00 1.8555857070306878e+00 -1.7900270605410917e+01 -1.1427969927137482e+00 0 1 0 -185 1 3 -1.0500000000000000e+00 1.7253995479611604e+00 1.5171757634659638e+01 -1.1439490826924779e+00 0 0 0 -186 1 4 -9.4999999999999996e-01 4.3662322107158733e+00 1.6368309943641055e+01 -1.0139855229210077e+00 0 0 0 -187 1 3 -1.0500000000000000e+00 5.7153027190516923e+00 1.4376080986155142e+01 -3.2425652845281192e+00 0 0 0 -188 1 3 -1.0500000000000000e+00 1.9724442262540727e+00 1.6553320295057897e+01 -3.2446645540223695e+00 0 0 0 -189 1 3 -1.0500000000000000e+00 3.1255993997228746e+00 1.4227253671506265e+01 -3.0529479201541534e+00 0 0 0 -190 1 5 4.2499999999999999e-01 4.8730503872703981e+00 1.7247084738816252e+01 -1.1575108950696489e+00 0 0 0 -191 1 1 1.5750000000000000e+00 6.4287605771619738e-02 1.1959047499133955e+01 -3.7503865813821591e-03 0 0 0 -192 1 2 2.1000000000000001e+00 4.4915804029907438e+00 1.3551111831722395e+01 -2.7609471625592663e+00 0 0 0 -193 1 2 2.1000000000000001e+00 4.4119577432399595e+00 1.0596109686747351e+01 -2.7688628659227765e+00 0 0 0 -194 1 3 -1.0500000000000000e+00 4.6327720860930999e+00 1.3480101674103746e+01 -1.1428277031521787e+00 0 0 0 -195 1 3 -1.0500000000000000e+00 4.2772319797087590e+00 1.0688840900034439e+01 -1.1439426903633443e+00 0 0 0 -196 1 4 -9.4999999999999996e-01 1.7580042741312081e+00 1.1885300143491271e+01 -1.0140430923412715e+00 0 0 0 -197 1 3 -1.0500000000000000e+00 3.1071547577327969e+00 9.8931852268420180e+00 -3.2425655357851380e+00 0 0 0 -198 1 3 -1.0500000000000000e+00 4.5242699949370255e+00 1.2070431784027537e+01 -3.2446352562949325e+00 0 0 0 -199 1 3 -1.0500000000000000e+00 5.6774301856846563e+00 9.7443531193086770e+00 -3.0529533590117293e+00 0 0 0 -200 1 5 4.2499999999999999e-01 2.2648570458734767e+00 1.2764054876209290e+01 -1.1579888107521015e+00 0 0 0 -201 1 1 1.5750000000000000e+00 7.8163274667709004e+00 1.0455361822489916e+01 -3.2709891462765484e-03 0 0 0 -202 1 2 2.1000000000000001e+00 -1.2260022563792901e+01 -1.8034171036451074e+01 2.7539593838063130e+00 1 1 0 -203 1 2 2.1000000000000001e+00 -1.2011372927310228e+01 1.1818343457748362e+01 2.7618265468659775e+00 1 0 0 -204 1 3 -1.0500000000000000e+00 8.4080197705526096e+00 8.9344884845612391e+00 1.1357635616008466e+00 0 0 0 -205 1 3 -1.0500000000000000e+00 -1.1876687672220676e+01 1.1725350016313566e+01 1.1370089651291622e+00 1 0 0 -206 1 4 -9.4999999999999996e-01 6.1226432401957958e+00 1.0529133102795765e+01 1.0070115060204152e+00 0 0 0 -207 1 3 -1.0500000000000000e+00 4.7734668544665446e+00 1.2521166817291366e+01 3.2357690806651949e+00 0 0 0 -208 1 3 -1.0500000000000000e+00 -1.2123474030539958e+01 1.0343970332896109e+01 3.2374431734477387e+00 1 0 0 -209 1 3 -1.0500000000000000e+00 7.3631314638252157e+00 1.2669994182427597e+01 3.0459606244004132e+00 0 0 0 -210 1 5 4.2499999999999999e-01 5.6157533562485771e+00 9.6503133176461908e+00 1.1509245775060091e+00 0 0 0 -211 1 1 1.5750000000000000e+00 -1.0215496529349888e+01 1.4938261423331294e+01 -3.2671984669594423e-03 1 0 0 -212 1 2 2.1000000000000001e+00 5.9971582839890871e+00 1.3346232288807276e+01 2.7539563176022028e+00 0 0 0 -213 1 2 2.1000000000000001e+00 6.0767870017495582e+00 1.6301224009304729e+01 2.7618126124878195e+00 0 0 0 -214 1 3 -1.0500000000000000e+00 5.8562070155499164e+00 1.3417384395333375e+01 1.1357183501401593e+00 0 0 0 -215 1 3 -1.0500000000000000e+00 6.2114804261402661e+00 1.6208264386955651e+01 1.1370050309136168e+00 0 0 0 -216 1 4 -9.4999999999999996e-01 -1.1909211620817819e+01 1.5011994029862020e+01 1.0069718593232118e+00 1 0 0 -217 1 3 -1.0500000000000000e+00 7.3816555131360566e+00 1.7004091118074196e+01 3.2357656756583246e+00 0 0 0 -218 1 3 -1.0500000000000000e+00 5.9646835115051537e+00 1.4826873453180109e+01 3.2374785589618078e+00 0 0 0 -219 1 3 -1.0500000000000000e+00 4.8112906275483347e+00 1.7152926240598543e+01 3.0459544088802879e+00 0 0 0 -220 1 5 4.2499999999999999e-01 8.2239086021434531e+00 1.4133118218483940e+01 1.1506108499324537e+00 0 0 0 -221 1 1 1.5750000000000000e+00 7.8324408920161304e+00 1.6441983610717937e+01 -3.7594297909890884e-03 0 0 0 -222 1 2 2.1000000000000001e+00 7.0433997235143551e+00 9.0681792148270475e+00 -2.7609433793505778e+00 0 0 0 -223 1 2 2.1000000000000001e+00 7.0201340001296231e+00 1.5079048983075904e+01 -2.7688496626705303e+00 0 0 0 -224 1 3 -1.0500000000000000e+00 7.0155782305852874e+00 -1.7900266980861765e+01 -1.1427797504921990e+00 0 1 0 -225 1 3 -1.0500000000000000e+00 6.8854016068099639e+00 1.5171747073972536e+01 -1.1439426401780413e+00 0 0 0 -226 1 4 -9.4999999999999996e-01 -1.1113777147342798e+01 1.6368296182520734e+01 -1.0139673644246923e+00 1 0 0 -227 1 3 -1.0500000000000000e+00 -9.7646511702758900e+00 1.4376104836232383e+01 -3.2425769131107307e+00 1 0 0 -228 1 3 -1.0500000000000000e+00 7.1324461842806457e+00 1.6553349104877181e+01 -3.2446699530389926e+00 0 0 0 -229 1 3 -1.0500000000000000e+00 8.2856077950535507e+00 1.4227248777578755e+01 -3.0529496330623935e+00 0 0 0 -230 1 5 4.2499999999999999e-01 -1.0606916142948355e+01 1.7247118324243235e+01 -1.1574224546860155e+00 1 0 0 -231 1 1 1.5750000000000000e+00 5.2242739244354812e+00 1.1959056994618571e+01 -3.7532727914637576e-03 0 0 0 -232 1 2 2.1000000000000001e+00 -1.0988443129796577e+01 1.3551110560593809e+01 -2.7609569176995983e+00 1 0 0 -233 1 2 2.1000000000000001e+00 -1.1068048695702130e+01 1.0596121856381689e+01 -2.7688513474828484e+00 1 0 0 -234 1 3 -1.0500000000000000e+00 -1.0847241951081806e+01 1.3480099061382369e+01 -1.1428004053747500e+00 1 0 0 -235 1 3 -1.0500000000000000e+00 -1.1202765363241992e+01 1.0688845693686350e+01 -1.1439459591196393e+00 1 0 0 -236 1 4 -9.4999999999999996e-01 6.9180337353417016e+00 1.1885339729941098e+01 -1.0140270633946198e+00 0 0 0 -237 1 3 -1.0500000000000000e+00 8.2671524098729279e+00 9.8931836876833437e+00 -3.2425721304984254e+00 0 0 0 -238 1 3 -1.0500000000000000e+00 -1.0955734208517388e+01 1.2070414566453039e+01 -3.2446182476609398e+00 1 0 0 -239 1 3 -1.0500000000000000e+00 -9.8025577056732693e+00 9.7443480474548068e+00 -3.0529560570682035e+00 1 0 0 -240 1 5 4.2499999999999999e-01 7.4248734752605259e+00 1.2764066295177155e+01 -1.1578424655573620e+00 0 0 0 -241 1 1 1.5750000000000000e+00 -7.6636863980105723e+00 1.0455371549550875e+01 -3.2736966669304479e-03 1 0 0 -242 1 2 2.1000000000000001e+00 -7.0999990710355192e+00 -1.8034168111282145e+01 2.7539701102788019e+00 1 1 0 -243 1 2 2.1000000000000001e+00 -6.8513690426892451e+00 1.1818330417854160e+01 2.7618149786464521e+00 1 0 0 -244 1 3 -1.0500000000000000e+00 -7.0719662711101812e+00 8.9344903042783628e+00 1.1357345069924225e+00 1 0 0 -245 1 3 -1.0500000000000000e+00 -6.7166907540342233e+00 1.1725346382842613e+01 1.1370110473100272e+00 1 0 0 -246 1 4 -9.4999999999999996e-01 -9.3573260672622727e+00 1.0529174208841528e+01 1.0070252131964725e+00 1 0 0 -247 1 3 -1.0500000000000000e+00 -1.0706539610507846e+01 1.2521163280396088e+01 3.2357640814962956e+00 1 0 0 -248 1 3 -1.0500000000000000e+00 -6.9634703631137729e+00 1.0343985091037393e+01 3.2374266804707119e+00 1 0 0 -249 1 3 -1.0500000000000000e+00 -8.1168803339350379e+00 1.2669999097078030e+01 3.0459638003843619e+00 1 0 0 -250 1 5 4.2499999999999999e-01 -9.8642334722321223e+00 9.6503204443188402e+00 1.1510602007101145e+00 1 0 0 -251 1 1 1.5750000000000000e+00 -5.0555038517207738e+00 1.4938261738890343e+01 -3.2644360310367659e-03 1 0 0 -252 1 2 2.1000000000000001e+00 -9.4828364774811842e+00 1.3346217905042987e+01 2.7539473478098913e+00 1 0 0 -253 1 2 2.1000000000000001e+00 -9.4031892666074217e+00 1.6301231779632818e+01 2.7618124621169056e+00 1 0 0 -254 1 3 -1.0500000000000000e+00 -9.6237991655729793e+00 1.3417388438033317e+01 1.1357331457960171e+00 1 0 0 -255 1 3 -1.0500000000000000e+00 -9.2685168345328872e+00 1.6208253547145770e+01 1.1370123846061553e+00 1 0 0 -256 1 4 -9.4999999999999996e-01 -6.7492056915652885e+00 1.5012003321026935e+01 1.0069523554452928e+00 1 0 0 -257 1 3 -1.0500000000000000e+00 -8.0983893100633519e+00 1.7004067932473877e+01 3.2357766175726148e+00 1 0 0 -258 1 3 -1.0500000000000000e+00 -9.5153144179962954e+00 1.4826903279627327e+01 3.2374724255443947e+00 1 0 0 -259 1 3 -1.0500000000000000e+00 -1.0668703168553188e+01 1.7152922672989472e+01 3.0459531606477839e+00 1 0 0 -260 1 5 4.2499999999999999e-01 -7.2561252036506980e+00 1.4133084321951994e+01 1.1505098705128987e+00 1 0 0 -261 1 1 1.5750000000000000e+00 -7.6475676736905971e+00 1.6441984614323157e+01 -3.7576410911643876e-03 1 0 0 -262 1 2 2.1000000000000001e+00 -8.4366040275132406e+00 9.0681930278031473e+00 -2.7609335500569747e+00 1 0 0 -263 1 2 2.1000000000000001e+00 -8.4598890146513455e+00 1.5079040601080134e+01 -2.7688510489233167e+00 1 0 0 -264 1 3 -1.0500000000000000e+00 -8.4644143079304612e+00 -1.7900269957740477e+01 -1.1427967775321957e+00 1 1 0 -265 1 3 -1.0500000000000000e+00 -8.5946007116663132e+00 1.5171756827133724e+01 -1.1439485975510628e+00 1 0 0 -266 1 4 -9.4999999999999996e-01 -5.9537679681653151e+00 1.6368309168283670e+01 -1.0139856989316165e+00 1 0 0 -267 1 3 -1.0500000000000000e+00 -4.6046964494860898e+00 1.4376081286353607e+01 -3.2425649205705174e+00 1 0 0 -268 1 3 -1.0500000000000000e+00 -8.3475558754399124e+00 1.6553320859356912e+01 -3.2446655570405536e+00 1 0 0 -269 1 3 -1.0500000000000000e+00 -7.1944009052872069e+00 1.4227253415250768e+01 -3.0529479683150100e+00 1 0 0 -270 1 5 4.2499999999999999e-01 -5.4469496542482680e+00 1.7247084860834857e+01 -1.1575125267203532e+00 1 0 0 -271 1 1 1.5750000000000000e+00 -1.0255712633101528e+01 1.1959047249232842e+01 -3.7503693590110743e-03 1 0 0 -272 1 2 2.1000000000000001e+00 -5.8284201346147073e+00 1.3551112633249122e+01 -2.7609471419709433e+00 1 0 0 -273 1 2 2.1000000000000001e+00 -5.9080424941932153e+00 1.0596109220690689e+01 -2.7688628072186683e+00 1 0 0 -274 1 3 -1.0500000000000000e+00 -5.6872277599586996e+00 1.3480101435889090e+01 -1.1428283866518854e+00 1 0 0 -275 1 3 -1.0500000000000000e+00 -6.0427680579917293e+00 1.0688841214141384e+01 -1.1439433517717656e+00 1 0 0 -276 1 4 -9.4999999999999996e-01 -8.5619959665734147e+00 1.1885299915121873e+01 -1.0140429279795615e+00 1 0 0 -277 1 3 -1.0500000000000000e+00 -7.2128453343082271e+00 9.8931855774587198e+00 -3.2425657643378525e+00 1 0 0 -278 1 3 -1.0500000000000000e+00 -5.7957299312633053e+00 1.2070431551626321e+01 -3.2446350249445235e+00 1 0 0 -279 1 3 -1.0500000000000000e+00 -4.6425695661462196e+00 9.7443530477275679e+00 -3.0529532196506795e+00 1 0 0 -280 1 5 4.2499999999999999e-01 -8.0551425673563894e+00 1.2764055666864170e+01 -1.1579876909028854e+00 1 0 0 -281 1 1 1.5750000000000000e+00 -2.5036724751688171e+00 1.0455361759083811e+01 -3.2712711680531470e-03 1 0 0 -282 1 2 2.1000000000000001e+00 -1.9400228605798482e+00 -1.8034171454532189e+01 2.7539596865588258e+00 1 1 0 -283 1 2 2.1000000000000001e+00 -1.6913729123417731e+00 1.1818343618664318e+01 2.7618267327017616e+00 1 0 0 -284 1 3 -1.0500000000000000e+00 -1.9119803931372488e+00 8.9344892347650671e+00 1.1357639880848378e+00 1 0 0 -285 1 3 -1.0500000000000000e+00 -1.5566878690749917e+00 1.1725349553088837e+01 1.1370088549317554e+00 1 0 0 -286 1 4 -9.4999999999999996e-01 -4.1973568501655052e+00 1.0529132534062505e+01 1.0070110973834296e+00 1 0 0 -287 1 3 -1.0500000000000000e+00 -5.5465318119038987e+00 1.2521167504631986e+01 3.2357693370264009e+00 1 0 0 -288 1 3 -1.0500000000000000e+00 -1.8034741996403554e+00 1.0343970336471010e+01 3.2374423050401600e+00 1 0 0 -289 1 3 -1.0500000000000000e+00 -2.9568695567301644e+00 1.2669994183537906e+01 3.0459605033388062e+00 1 0 0 -290 1 5 4.2499999999999999e-01 -4.7042469088330439e+00 9.6503130783144044e+00 1.1509221001927727e+00 1 0 0 -291 1 1 1.5750000000000000e+00 1.0450346973463098e-01 1.4938261236297333e+01 -3.2670506730401172e-03 1 0 0 -292 1 2 2.1000000000000001e+00 -4.3228420481760716e+00 1.3346232732007316e+01 2.7539563932159634e+00 1 0 0 -293 1 2 2.1000000000000001e+00 -4.2432134692497367e+00 1.6301223752354527e+01 2.7618123881160574e+00 1 0 0 -294 1 3 -1.0500000000000000e+00 -4.4637927327409024e+00 1.3417383967610970e+01 1.1357180288639768e+00 1 0 0 -295 1 3 -1.0500000000000000e+00 -4.1085196585471646e+00 1.6208264626532635e+01 1.1370043708840640e+00 1 0 0 -296 1 4 -9.4999999999999996e-01 -1.5892118927513685e+00 1.5011993465855195e+01 1.0069717418888526e+00 1 0 0 -297 1 3 -1.0500000000000000e+00 -2.9383445989094135e+00 1.7004091419961096e+01 3.2357659595260095e+00 1 0 0 -298 1 3 -1.0500000000000000e+00 -4.3553166601485476e+00 1.4826873197424877e+01 3.2374790045700852e+00 1 0 0 -299 1 3 -1.0500000000000000e+00 -5.5087090978359239e+00 1.7152925908147093e+01 3.0459546197474001e+00 1 0 0 -300 1 5 4.2499999999999999e-01 -2.0960913924612612e+00 1.4133118310388799e+01 1.1506099517336104e+00 1 0 0 -301 1 1 1.5750000000000000e+00 -2.4875591017952310e+00 1.6441983631942183e+01 -3.7595151500315893e-03 1 0 0 -302 1 2 2.1000000000000001e+00 -3.2765996605939858e+00 9.0681789268622346e+00 -2.7609433563661456e+00 1 0 0 -303 1 2 2.1000000000000001e+00 -3.2998653023383682e+00 1.5079049184116290e+01 -2.7688496671533649e+00 1 0 0 -304 1 3 -1.0500000000000000e+00 -3.3044219890671753e+00 -1.7900266681096994e+01 -1.1427795585717835e+00 1 1 0 -305 1 3 -1.0500000000000000e+00 -3.4345989454937165e+00 1.5171746655803712e+01 -1.1439426919442308e+00 1 0 0 -306 1 4 -9.4999999999999996e-01 -7.9377665672300779e-01 1.6368296633100169e+01 -1.0139672617067319e+00 1 0 0 -307 1 3 -1.0500000000000000e+00 5.5534868438584084e-01 1.4376105151954103e+01 -3.2425775178456107e+00 1 0 0 -308 1 3 -1.0500000000000000e+00 -3.1875541544200496e+00 1.6553349368867583e+01 -3.2446705490554963e+00 1 0 0 -309 1 3 -1.0500000000000000e+00 -2.0343923260202423e+00 1.4227248534036743e+01 -3.0529497284009599e+00 1 0 0 -310 1 5 4.2499999999999999e-01 -2.8691619587030104e-01 1.7247118382062236e+01 -1.1574212565794415e+00 1 0 0 -311 1 1 1.5750000000000000e+00 -5.0957261453677205e+00 1.1959057139099524e+01 -3.7531547867057924e-03 1 0 0 -312 1 2 2.1000000000000001e+00 -6.6844354483350799e-01 1.3551110266998439e+01 -2.7609568234960040e+00 1 0 0 -313 1 2 2.1000000000000001e+00 -7.4804896223840167e-01 1.0596122230984061e+01 -2.7688515273933572e+00 1 0 0 -314 1 3 -1.0500000000000000e+00 -5.2724202123535946e-01 1.3480098969688658e+01 -1.1428001598979964e+00 1 0 0 -315 1 3 -1.0500000000000000e+00 -8.8276536122547178e-01 1.0688845631800483e+01 -1.1439460002810460e+00 1 0 0 -316 1 4 -9.4999999999999996e-01 -3.4019662726515918e+00 1.1885340094739142e+01 -1.0140272109664838e+00 1 0 0 -317 1 3 -1.0500000000000000e+00 -2.0528473081502625e+00 9.8931841810449264e+00 -3.2425722407459503e+00 1 0 0 -318 1 3 -1.0500000000000000e+00 -6.3573424619330154e-01 1.2070414396821146e+01 -3.2446180957081046e+00 1 0 0 -319 1 3 -1.0500000000000000e+00 5.1744185669619647e-01 9.7443480289127145e+00 -3.0529559039522471e+00 1 0 0 -320 1 5 4.2499999999999999e-01 -2.8951265260920414e+00 1.2764066156472012e+01 -1.1578424373010439e+00 1 0 0 -321 1 1 1.5750000000000000e+00 2.4873158312812595e+00 -1.6442085140542702e+01 -3.2731044767775330e-03 0 1 0 -322 1 2 2.1000000000000001e+00 3.2763303149493339e+00 -9.0683326576281793e+00 2.7539613504973826e+00 0 1 0 -323 1 2 2.1000000000000001e+00 3.2996440062323522e+00 -1.5079163855001152e+01 2.7618052351303000e+00 0 1 0 -324 1 3 -1.0500000000000000e+00 3.0790227247234743e+00 -1.7962996900519780e+01 1.1357369105052264e+00 0 1 0 -325 1 3 -1.0500000000000000e+00 3.4343217071143606e+00 -1.5172137633996615e+01 1.1369964612814574e+00 0 1 0 -326 1 4 -9.4999999999999996e-01 7.9370044014982000e-01 -1.6368273971208470e+01 1.0070225988534567e+00 0 1 0 -327 1 3 -1.0500000000000000e+00 -5.5550646979719431e-01 -1.4376303482612908e+01 3.2357750050409617e+00 0 1 0 -328 1 3 -1.0500000000000000e+00 3.1875194117149164e+00 -1.6553483052839894e+01 3.2374345381514082e+00 0 1 0 -329 1 3 -1.0500000000000000e+00 2.0341105779595932e+00 -1.4227436497588396e+01 3.0459506035312476e+00 0 1 0 -330 1 5 4.2499999999999999e-01 2.8674517218617801e-01 -1.7247173634562643e+01 1.1510526978509290e+00 0 1 0 -331 1 1 1.5750000000000000e+00 5.0954822332712713e+00 -1.1959202907500007e+01 -3.2689027687062833e-03 0 1 0 -332 1 2 2.1000000000000001e+00 6.6817149298760725e-01 -1.3551259854316488e+01 2.7539499370113383e+00 0 1 0 -333 1 2 2.1000000000000001e+00 7.4779844304577914e-01 -1.0596215429331199e+01 2.7618213942130811e+00 0 1 0 -334 1 3 -1.0500000000000000e+00 5.2719372455953284e-01 -1.3480064946544015e+01 1.1357459580603049e+00 0 1 0 -335 1 3 -1.0500000000000000e+00 8.8247034442780148e-01 -1.0689208474290135e+01 1.1370185048637591e+00 0 1 0 -336 1 4 -9.4999999999999996e-01 3.4017986335829793e+00 -1.1885434663339312e+01 1.0069865452366784e+00 0 1 0 -337 1 3 -1.0500000000000000e+00 2.0525899417440829e+00 -9.8934041355699218e+00 3.2357693155049283e+00 0 1 0 -338 1 3 -1.0500000000000000e+00 6.3569045021168691e-01 -1.2070565156037954e+01 3.2374462468578749e+00 0 1 0 -339 1 3 -1.0500000000000000e+00 -5.1770556733988826e-01 -9.7445696176577137e+00 3.0459634759630063e+00 0 1 0 -340 1 5 4.2499999999999999e-01 2.8948985199675210e+00 -1.2764300231969152e+01 1.1507672489080729e+00 0 1 0 -341 1 1 1.5750000000000000e+00 2.5034344422152106e+00 -1.0455505379844039e+01 -3.7523281344018500e-03 0 1 0 -342 1 2 2.1000000000000001e+00 1.7144048897053548e+00 -1.7829278827200582e+01 -2.7609375642366514e+00 0 1 0 -343 1 2 2.1000000000000001e+00 1.6910990452522778e+00 -1.1818431965120766e+01 -2.7688521544223557e+00 0 1 0 -344 1 3 -1.0500000000000000e+00 1.9119323284819547e+00 -8.9344496581989912e+00 -1.1428177382481586e+00 0 1 0 -345 1 3 -1.0500000000000000e+00 1.5563892707225317e+00 -1.1725703690663577e+01 -1.1439423397491009e+00 0 1 0 -346 1 4 -9.4999999999999996e-01 4.1971837724422230e+00 -1.0529223437421583e+01 -1.0140304498512833e+00 0 1 0 -347 1 3 -1.0500000000000000e+00 5.5462795339137028e+00 -1.2521387157719200e+01 -3.2425682558207303e+00 0 1 0 -348 1 3 -1.0500000000000000e+00 1.8034351269669298e+00 -1.0344148858506074e+01 -3.2446357157915351e+00 0 1 0 -349 1 3 -1.0500000000000000e+00 2.9565987372624374e+00 -1.2670221018382025e+01 -3.0529474743907752e+00 0 1 0 -350 1 5 4.2499999999999999e-01 4.7040264803948517e+00 -9.6504758402318025e+00 -1.1578593135248099e+00 0 1 0 -351 1 1 1.5750000000000000e+00 -1.0471558842234785e-01 -1.4938400364160536e+01 -3.7532330236462741e-03 0 1 0 -352 1 2 2.1000000000000001e+00 4.3225692029115947e+00 -1.3346363976966739e+01 -2.7609380283517364e+00 0 1 0 -353 1 2 2.1000000000000001e+00 4.2429709170616423e+00 -1.6301375789705347e+01 -2.7688688655989422e+00 0 1 0 -354 1 3 -1.0500000000000000e+00 4.4637558178452430e+00 -1.3417379075377282e+01 -1.1428141432543626e+00 0 1 0 -355 1 3 -1.0500000000000000e+00 4.1082428565530851e+00 -1.6208643768110964e+01 -1.1439575855412993e+00 0 1 0 -356 1 4 -9.4999999999999996e-01 1.5890483233411512e+00 -1.5012116338313390e+01 -1.0140187450303042e+00 0 1 0 -357 1 3 -1.0500000000000000e+00 2.9381893438004383e+00 -1.7004282362058166e+01 -3.2425562113891360e+00 0 1 0 -358 1 3 -1.0500000000000000e+00 4.3552644383759880e+00 -1.4827036483227031e+01 -3.2446472860660487e+00 0 1 0 -359 1 3 -1.0500000000000000e+00 5.5084200493482207e+00 -1.7153088410673128e+01 -3.0529633116519523e+00 0 1 0 -360 1 5 4.2499999999999999e-01 2.0958519709362449e+00 -1.4133378407095304e+01 -1.1577903583398630e+00 0 1 0 -361 1 1 1.5750000000000000e+00 7.6473300699624751e+00 -1.6442095286891750e+01 -3.2703635846598189e-03 0 1 0 -362 1 2 2.1000000000000001e+00 -1.2203692618505173e+01 -9.0683357616495428e+00 2.7539509521771546e+00 1 1 0 -363 1 2 2.1000000000000001e+00 -1.2180359496617088e+01 -1.5079150525191121e+01 2.7618176073756171e+00 1 1 0 -364 1 3 -1.0500000000000000e+00 8.2390082609686672e+00 -1.7962998453343072e+01 1.1357656996613876e+00 0 1 0 -365 1 3 -1.0500000000000000e+00 -1.2045675817277496e+01 -1.5172133958248716e+01 1.1369942170488319e+00 1 1 0 -366 1 4 -9.4999999999999996e-01 5.9536694527401863e+00 -1.6368316601029903e+01 1.0070080197153732e+00 0 1 0 -367 1 3 -1.0500000000000000e+00 4.6044999502781359e+00 -1.4376299637797334e+01 3.2357807367951334e+00 0 1 0 -368 1 3 -1.0500000000000000e+00 -1.2292484484628849e+01 -1.6553497884316052e+01 3.2374506520275279e+00 1 1 0 -369 1 3 -1.0500000000000000e+00 7.1941227993251466e+00 -1.4227441518171391e+01 3.0459466724115387e+00 0 1 0 -370 1 5 4.2499999999999999e-01 5.4467316809031381e+00 -1.7247181780075401e+01 1.1509108228447804e+00 0 1 0 -371 1 1 1.5750000000000000e+00 -1.0384509878063577e+01 -1.1959202847679125e+01 -3.2711064931607581e-03 1 1 0 -372 1 2 2.1000000000000001e+00 5.8281658705053552e+00 -1.3551245908771351e+01 2.7539592284405323e+00 0 1 0 -373 1 2 2.1000000000000001e+00 5.9077738247842859e+00 -1.0596222346036228e+01 2.7618212472175525e+00 0 1 0 -374 1 3 -1.0500000000000000e+00 5.6872004561341356e+00 -1.3480068502065599e+01 1.1357317122361454e+00 0 1 0 -375 1 3 -1.0500000000000000e+00 6.0424675752151202e+00 -1.0689198215110313e+01 1.1370119790707562e+00 0 1 0 -376 1 4 -9.4999999999999996e-01 -1.2078208028614750e+01 -1.1885444143137754e+01 1.0070061177644991e+00 1 1 0 -377 1 3 -1.0500000000000000e+00 7.2126361390250970e+00 -9.8933805239822377e+00 3.2357588745576784e+00 0 1 0 -378 1 3 -1.0500000000000000e+00 5.7956884111784390e+00 -1.2070595254996373e+01 3.2374511312518859e+00 0 1 0 -379 1 3 -1.0500000000000000e+00 4.6422879410256392e+00 -9.7445663758382555e+00 3.0459651484494685e+00 0 1 0 -380 1 5 4.2499999999999999e-01 8.0549327596562676e+00 -1.2764265216608282e+01 1.1508699292293620e+00 0 1 0 -381 1 1 1.5750000000000000e+00 7.6634431466777784e+00 -1.0455505708640878e+01 -3.7548033538037373e-03 0 1 0 -382 1 2 2.1000000000000001e+00 6.8744083301107217e+00 -1.7829293052197659e+01 -2.7609466521728914e+00 0 1 0 -383 1 2 2.1000000000000001e+00 6.8511227655710272e+00 -1.1818423654764077e+01 -2.7688514413745127e+00 0 1 0 -384 1 3 -1.0500000000000000e+00 7.0719252612919341e+00 -8.9344460915840020e+00 -1.1428009362290084e+00 0 1 0 -385 1 3 -1.0500000000000000e+00 6.7163919273608208e+00 -1.1725714227503657e+01 -1.1439356358725981e+00 0 1 0 -386 1 4 -9.4999999999999996e-01 -1.1282825542264309e+01 -1.0529236312045516e+01 -1.0140115555323934e+00 1 1 0 -387 1 3 -1.0500000000000000e+00 -9.9336734334620846e+00 -1.2521362616099530e+01 -3.2425798517804285e+00 1 1 0 -388 1 3 -1.0500000000000000e+00 6.9634372372059339e+00 -1.0344120541373844e+01 -3.2446411197658893e+00 0 1 0 -389 1 3 -1.0500000000000000e+00 8.1166063278059539e+00 -1.2670225192721546e+01 -3.0529487788076324e+00 0 1 0 -390 1 5 4.2499999999999999e-01 -1.0775939522237591e+01 -9.6504409144075929e+00 -1.1577656550448125e+00 1 1 0 -391 1 1 1.5750000000000000e+00 5.0552705213441183e+00 -1.4938390885101004e+01 -3.7556755525152141e-03 0 1 0 -392 1 2 2.1000000000000001e+00 -1.1157454505789488e+01 -1.3346365259602514e+01 -2.7609477580902304e+00 1 1 0 -393 1 2 2.1000000000000001e+00 -1.1237035180060985e+01 -1.6301363128204752e+01 -2.7688574109066444e+00 1 1 0 -394 1 3 -1.0500000000000000e+00 -1.1016258515593059e+01 -1.3417381597335801e+01 -1.1427868565141956e+00 1 1 0 -395 1 3 -1.0500000000000000e+00 -1.1371754569044754e+01 -1.6208638414131233e+01 -1.1439607996348045e+00 1 1 0 -396 1 4 -9.4999999999999996e-01 6.7490784560440211e+00 -1.5012076202167444e+01 -1.0140027578594140e+00 0 1 0 -397 1 3 -1.0500000000000000e+00 8.0981866850365734e+00 -1.7004283665969044e+01 -3.2425625386787402e+00 0 1 0 -398 1 3 -1.0500000000000000e+00 -1.1124739912558308e+01 -1.4827054551632816e+01 -3.2446301023047264e+00 1 1 0 -399 1 3 -1.0500000000000000e+00 -9.9715680099552539e+00 -1.7153093163802694e+01 -3.0529662797145232e+00 1 1 0 -400 1 5 4.2499999999999999e-01 7.2558685014983197e+00 -1.4133366923834902e+01 -1.1576429969303437e+00 0 1 0 -401 1 1 1.5750000000000000e+00 -7.8326838930931588e+00 -1.6442085371931373e+01 -3.2732823819223711e-03 1 1 0 -402 1 2 2.1000000000000001e+00 -7.0436687618137706e+00 -9.0683330137854199e+00 2.7539612939828899e+00 1 1 0 -403 1 2 2.1000000000000001e+00 -7.0203552020415820e+00 -1.5079163689271947e+01 2.7618054084239976e+00 1 1 0 -404 1 3 -1.0500000000000000e+00 -7.2409778107259708e+00 -1.7962996502787455e+01 1.1357372000778803e+00 1 1 0 -405 1 3 -1.0500000000000000e+00 -6.8856791733648324e+00 -1.5172137885807103e+01 1.1369963196178823e+00 1 1 0 -406 1 4 -9.4999999999999996e-01 -9.5262993670970957e+00 -1.6368274059361951e+01 1.0070224743079983e+00 1 1 0 -407 1 3 -1.0500000000000000e+00 -1.0875507123551024e+01 -1.4376303441124719e+01 3.2357750518877921e+00 1 1 0 -408 1 3 -1.0500000000000000e+00 -7.1324812203291952e+00 -1.6553483309654993e+01 3.2374341141377876e+00 1 1 0 -409 1 3 -1.0500000000000000e+00 -8.2858895255051763e+00 -1.4227436498303321e+01 3.0459500397149455e+00 1 1 0 -410 1 5 4.2499999999999999e-01 -1.0033255030691558e+01 -1.7247173624416206e+01 1.1510522172719124e+00 1 1 0 -411 1 1 1.5750000000000000e+00 -5.2245178771227252e+00 -1.1959202758526017e+01 -3.2686596132034396e-03 1 1 0 -412 1 2 2.1000000000000001e+00 -9.6518281984812564e+00 -1.3551260332238776e+01 2.7539503258911147e+00 1 1 0 -413 1 2 2.1000000000000001e+00 -9.5722019707608350e+00 -1.0596214958141957e+01 2.7618209577011115e+00 1 1 0 -414 1 3 -1.0500000000000000e+00 -9.7928062006518743e+00 -1.3480064638111777e+01 1.1357461718012836e+00 1 1 0 -415 1 3 -1.0500000000000000e+00 -9.4375295209633592e+00 -1.0689208902166378e+01 1.1370191291599561e+00 1 1 0 -416 1 4 -9.4999999999999996e-01 -6.9182015257625187e+00 -1.1885434141823438e+01 1.0069865076337194e+00 1 1 0 -417 1 3 -1.0500000000000000e+00 -8.2674096516605591e+00 -9.8934036664961500e+00 3.2357692780579193e+00 1 1 0 -418 1 3 -1.0500000000000000e+00 -9.6843094688930229e+00 -1.2070565339252298e+01 3.2374457243298291e+00 1 1 0 -419 1 3 -1.0500000000000000e+00 -1.0837706493502655e+01 -9.7445692971577635e+00 3.0459634859134095e+00 1 1 0 -420 1 5 4.2499999999999999e-01 -7.4251012846331328e+00 -1.2764299901878989e+01 1.1507685978831965e+00 1 1 0 -421 1 1 1.5750000000000000e+00 -7.8165653710802498e+00 -1.0455505239212570e+01 -3.7526247607146956e-03 1 1 0 -422 1 2 2.1000000000000001e+00 -8.6055950659194451e+00 -1.7829279483493142e+01 -2.7609372605772293e+00 1 1 0 -423 1 2 2.1000000000000001e+00 -8.6289008782796017e+00 -1.1818431879204407e+01 -2.7688521292950892e+00 1 1 0 -424 1 3 -1.0500000000000000e+00 -8.4080675550031589e+00 -8.9344488405749729e+00 -1.1428176752375947e+00 1 1 0 -425 1 3 -1.0500000000000000e+00 -8.7636107163403185e+00 -1.1725704386940036e+01 -1.1439420773679156e+00 1 1 0 -426 1 4 -9.4999999999999996e-01 -6.1228163916760510e+00 -1.0529224175237184e+01 -1.0140309851989482e+00 1 1 0 -427 1 3 -1.0500000000000000e+00 -4.7737195815235491e+00 -1.2521386711486187e+01 -3.2425678127633280e+00 1 1 0 -428 1 3 -1.0500000000000000e+00 -8.5165649126724521e+00 -1.0344149018842892e+01 -3.2446367291315585e+00 1 1 0 -429 1 3 -1.0500000000000000e+00 -7.3634018650483775e+00 -1.2670221015317008e+01 -3.0529473079508476e+00 1 1 0 -430 1 5 4.2499999999999999e-01 -5.6159739075346202e+00 -9.6504763623609211e+00 -1.1578626433938446e+00 1 1 0 -431 1 1 1.5750000000000000e+00 -1.0424715562756791e+01 -1.4938400553082197e+01 -3.7529812015879571e-03 1 1 0 -432 1 2 2.1000000000000001e+00 -5.9974311083098977e+00 -1.3346363613537441e+01 -2.7609379380798256e+00 1 1 0 -433 1 2 2.1000000000000001e+00 -6.0770293492200240e+00 -1.6301376203040785e+01 -2.7688686473689419e+00 1 1 0 -434 1 3 -1.0500000000000000e+00 -5.8562441201571032e+00 -1.3417379284137553e+01 -1.1428148565171732e+00 1 1 0 -435 1 3 -1.0500000000000000e+00 -6.2117573594784972e+00 -1.6208643250903787e+01 -1.1439581431602814e+00 1 1 0 -436 1 4 -9.4999999999999996e-01 -8.7309519339587123e+00 -1.5012116780663984e+01 -1.0140186145754715e+00 1 1 0 -437 1 3 -1.0500000000000000e+00 -7.3818111353884994e+00 -1.7004282131950792e+01 -3.2425561129342411e+00 1 1 0 -438 1 3 -1.0500000000000000e+00 -5.9647356400559168e+00 -1.4827036902064780e+01 -3.2446470576896891e+00 1 1 0 -439 1 3 -1.0500000000000000e+00 -4.8115794831903598e+00 -1.7153088674562756e+01 -3.0529634737335600e+00 1 1 0 -440 1 5 4.2499999999999999e-01 -8.2241476630143868e+00 -1.4133377854348987e+01 -1.1577899116091555e+00 1 1 0 -441 1 1 1.5750000000000000e+00 -2.6726699900750228e+00 -1.6442095184071334e+01 -3.2708152303708715e-03 1 1 0 -442 1 2 2.1000000000000001e+00 -1.8836926728028871e+00 -9.0683360706481988e+00 2.7539509370400470e+00 1 1 0 -443 1 2 2.1000000000000001e+00 -1.8603595713516334e+00 -1.5079150161517486e+01 2.7618175803065235e+00 1 1 0 -444 1 3 -1.0500000000000000e+00 -2.0809915940246260e+00 -1.7962997831100317e+01 1.1357659249768037e+00 1 1 0 -445 1 3 -1.0500000000000000e+00 -1.7256757375340950e+00 -1.5172134571584408e+01 1.1369946994743039e+00 1 1 0 -446 1 4 -9.4999999999999996e-01 -4.3663303959113087e+00 -1.6368316840061311e+01 1.0070078045087598e+00 1 1 0 -447 1 3 -1.0500000000000000e+00 -5.7154995299878735e+00 -1.4376299278351169e+01 3.2357812249751525e+00 1 1 0 -448 1 3 -1.0500000000000000e+00 -1.9724845002142448e+00 -1.6553498331239307e+01 3.2374496312659460e+00 1 1 0 -449 1 3 -1.0500000000000000e+00 -3.1258773791373198e+00 -1.4227441660105004e+01 3.0459467420251194e+00 1 1 0 -450 1 5 4.2499999999999999e-01 -4.8732684553684695e+00 -1.7247182150638707e+01 1.1509092295157224e+00 1 1 0 -451 1 1 1.5750000000000000e+00 -6.4509876999837346e-02 -1.1959203109449142e+01 -3.2708769273028793e-03 1 1 0 -452 1 2 2.1000000000000001e+00 -4.4918347776990135e+00 -1.3551245280844766e+01 2.7539590818090893e+00 1 1 0 -453 1 2 2.1000000000000001e+00 -4.4122264005535730e+00 -1.0596223265618471e+01 2.7618213123579540e+00 1 1 0 -454 1 3 -1.0500000000000000e+00 -4.6327993770775722e+00 -1.3480068776200241e+01 1.1357306843562007e+00 1 1 0 -455 1 3 -1.0500000000000000e+00 -4.2775323301208692e+00 -1.0689197415521184e+01 1.1370113492700824e+00 1 1 0 -456 1 4 -9.4999999999999996e-01 -1.7582085114615111e+00 -1.1885444828152252e+01 1.0070062173292218e+00 1 1 0 -457 1 3 -1.0500000000000000e+00 -3.1073643655971166e+00 -9.8933800969646732e+00 3.2357583287275880e+00 1 1 0 -458 1 3 -1.0500000000000000e+00 -4.5243114909096018e+00 -1.2070595204559629e+01 3.2374516197245775e+00 1 1 0 -459 1 3 -1.0500000000000000e+00 -5.6777118011680381e+00 -9.7445664568842254e+00 3.0459653648294243e+00 1 1 0 -460 1 5 4.2499999999999999e-01 -2.2650668296403058e+00 -1.2764264287005354e+01 1.1508705187769799e+00 1 1 0 -461 1 1 1.5750000000000000e+00 -2.6565565918664173e+00 -1.0455505879441525e+01 -3.7549348428154161e-03 1 1 0 -462 1 2 2.1000000000000001e+00 -3.4455908391566643e+00 -1.7829293092612534e+01 -2.7609464806422892e+00 1 1 0 -463 1 2 2.1000000000000001e+00 -3.4688767904129696e+00 -1.1818423511849518e+01 -2.7688516686671711e+00 1 1 0 -464 1 3 -1.0500000000000000e+00 -3.2480752505918087e+00 -8.9344459968549881e+00 -1.1428004913510801e+00 1 1 0 -465 1 3 -1.0500000000000000e+00 -3.6036086619536984e+00 -1.1725714425851610e+01 -1.1439355502562485e+00 1 1 0 -466 1 4 -9.4999999999999996e-01 -9.6282526002298496e-01 -1.0529236900614441e+01 -1.0140115755842860e+00 1 1 0 -467 1 3 -1.0500000000000000e+00 3.8632613444500308e-01 -1.2521362577138564e+01 -3.2425797939291590e+00 1 1 0 -468 1 3 -1.0500000000000000e+00 -3.3565633803144257e+00 -1.0344120627751945e+01 -3.2446417136325554e+00 1 1 0 -469 1 3 -1.0500000000000000e+00 -2.2033940096388758e+00 -1.2670225163556584e+01 -3.0529490801396841e+00 1 1 0 -470 1 5 4.2499999999999999e-01 -4.5593933850753388e-01 -9.6504406470385522e+00 -1.1577660591579200e+00 1 1 0 -471 1 1 1.5750000000000000e+00 -5.2647294099161668e+00 -1.4938390849710533e+01 -3.7554421477974387e-03 1 1 0 -472 1 2 2.1000000000000001e+00 -8.3745420972569029e-01 -1.3346365774570319e+01 -2.7609475596234478e+00 1 1 0 -473 1 2 2.1000000000000001e+00 -9.1703537310051608e-01 -1.6301362578024104e+01 -2.7688573923577673e+00 1 1 0 -474 1 3 -1.0500000000000000e+00 -6.9625852330998939e-01 -1.3417381412652670e+01 -1.1427865734610130e+00 1 1 0 -475 1 3 -1.0500000000000000e+00 -1.0517542431933027e+00 -1.6208638871829955e+01 -1.1439604905627423e+00 1 1 0 -476 1 4 -9.4999999999999996e-01 -3.5709214848472897e+00 -1.5012075671946061e+01 -1.0140027621155667e+00 1 1 0 -477 1 3 -1.0500000000000000e+00 -2.2218134642601797e+00 -1.7004283740992047e+01 -3.2425628740632551e+00 1 1 0 -478 1 3 -1.0500000000000000e+00 -8.0473984685049871e-01 -1.4827054452774018e+01 -3.2446303282137938e+00 1 1 0 -479 1 3 -1.0500000000000000e+00 3.4843154859986214e-01 -1.7153093111175764e+01 -3.0529662393152108e+00 1 1 0 -480 1 5 4.2499999999999999e-01 -3.0641314229533227e+00 -1.4133366897183697e+01 -1.1576420001890888e+00 1 1 0 -481 1 1 1.5750000000000000e+00 2.5436575698973183e+00 -7.4762807567511658e+00 -3.2681608649411942e-03 0 1 0 -482 1 2 2.1000000000000001e+00 3.3326771644182021e+00 -1.0251055584260627e-01 2.7539562495680912e+00 0 1 0 -483 1 2 2.1000000000000001e+00 3.3559732863378500e+00 -6.1133477231204605e+00 2.7618019815700912e+00 0 1 0 -484 1 3 -1.0500000000000000e+00 3.1353688973965141e+00 -8.9971784534458905e+00 1.1357161192366334e+00 0 1 0 -485 1 3 -1.0500000000000000e+00 3.4906521933711527e+00 -6.2063093440944606e+00 1.1370013682474660e+00 0 1 0 -486 1 4 -9.4999999999999996e-01 8.4999416594662414e-01 -7.4025141664959477e+00 1.0069772303784212e+00 0 1 0 -487 1 3 -1.0500000000000000e+00 -4.9918531211513084e-01 -5.4104789806646600e+00 3.2357748645072224e+00 0 1 0 -488 1 3 -1.0500000000000000e+00 3.2438478921430658e+00 -7.5876613926832288e+00 3.2374650513379368e+00 0 1 0 -489 1 3 -1.0500000000000000e+00 2.0904479338721824e+00 -5.2616143373361730e+00 3.0459494998857473e+00 0 1 0 -490 1 5 4.2499999999999999e-01 3.4305735839570417e-01 -8.2814451510232985e+00 1.1506997919603279e+00 0 1 0 -491 1 1 1.5750000000000000e+00 5.1518162806579664e+00 -2.9933577707057264e+00 -3.2719737650719338e-03 0 1 0 -492 1 2 2.1000000000000001e+00 7.2450056662052376e-01 -4.5854449159198332e+00 2.7539595529080376e+00 0 1 0 -493 1 2 2.1000000000000001e+00 8.0414918868178020e-01 -1.6304050196450568e+00 2.7618170330682865e+00 0 1 0 -494 1 3 -1.0500000000000000e+00 5.8351556926552206e-01 -4.5142509399890525e+00 1.1357618537192042e+00 0 1 0 -495 1 3 -1.0500000000000000e+00 9.3881877218889187e-01 -1.7234004054205592e+00 1.1370055641638572e+00 0 1 0 -496 1 4 -9.4999999999999996e-01 3.4581831713214264e+00 -2.9195538038595128e+00 1.0070161949531542e+00 0 1 0 -497 1 3 -1.0500000000000000e+00 2.1089597637650321e+00 -9.2758109333887262e-01 3.2357778931579837e+00 0 1 0 -498 1 3 -1.0500000000000000e+00 6.9202493621660821e-01 -3.1047407556425863e+00 3.2374286426884460e+00 0 1 0 -499 1 3 -1.0500000000000000e+00 -4.6137640541853386e-01 -7.7872267536189810e-01 3.0459549651529940e+00 0 1 0 -500 1 5 4.2499999999999999e-01 2.9512366629883733e+00 -3.7984283160022585e+00 1.1510066071998590e+00 0 1 0 -501 1 1 1.5750000000000000e+00 2.5597764890479056e+00 -1.4896728825261896e+00 -3.7510557474558226e-03 0 1 0 -502 1 2 2.1000000000000001e+00 1.7707367658906890e+00 -8.8634435099187865e+00 -2.7609471549488367e+00 0 1 0 -503 1 2 2.1000000000000001e+00 1.7474499480691374e+00 -2.8526347731487149e+00 -2.7688625207492397e+00 0 1 0 -504 1 3 -1.0500000000000000e+00 1.9682617548841872e+00 3.1354766712723858e-02 -1.1428194347213658e+00 0 1 0 -505 1 3 -1.0500000000000000e+00 1.6127391948302812e+00 -2.7598942364919772e+00 -1.1439556954086907e+00 0 1 0 -506 1 4 -9.4999999999999996e-01 4.2535424365009327e+00 -1.5633894774555195e+00 -1.0140400418681299e+00 0 1 0 -507 1 3 -1.0500000000000000e+00 5.6026491085120664e+00 -3.5555609449644461e+00 -3.2425576785307024e+00 0 1 0 -508 1 3 -1.0500000000000000e+00 1.8597625543053109e+00 -1.3783257788357659e+00 -3.2446235882093193e+00 0 1 0 -509 1 3 -1.0500000000000000e+00 3.0129281343278276e+00 -3.7043645719831666e+00 -3.0529605899078920e+00 0 1 0 -510 1 5 4.2499999999999999e-01 4.7603403166335863e+00 -6.8469223618015818e-01 -1.1579216441180478e+00 0 1 0 -511 1 1 1.5750000000000000e+00 -4.8390666169016328e-02 -5.9725694760793182e+00 -3.7574054098818976e-03 0 1 0 -512 1 2 2.1000000000000001e+00 4.3789145761620833e+00 -4.3805514632713773e+00 -2.7609339008297651e+00 0 1 0 -513 1 2 2.1000000000000001e+00 4.2992990506123103e+00 -7.3355316180595338e+00 -2.7688607932569447e+00 0 1 0 -514 1 3 -1.0500000000000000e+00 4.5200860118647945e+00 -4.4515414547653052e+00 -1.1427984036885626e+00 0 1 0 -515 1 3 -1.0500000000000000e+00 4.1645706838576562e+00 -7.2428167611125112e+00 -1.1439527343219709e+00 0 1 0 -516 1 4 -9.4999999999999996e-01 1.6453970630033830e+00 -6.0462561133443451e+00 -1.0139809143366438e+00 0 1 0 -517 1 3 -1.0500000000000000e+00 2.9945122334512657e+00 -8.0384625674130401e+00 -3.2425618392344440e+00 0 1 0 -518 1 3 -1.0500000000000000e+00 4.4116077983548383e+00 -5.8612132939321402e+00 -3.2446764319665711e+00 0 1 0 -519 1 3 -1.0500000000000000e+00 5.5647564535540042e+00 -8.1872858674545341e+00 -3.0529539697099937e+00 0 1 0 -520 1 5 4.2499999999999999e-01 2.1522145539965809e+00 -5.1674642083276847e+00 -1.1575048043055780e+00 0 1 0 -521 1 1 1.5750000000000000e+00 7.7036718214034785e+00 -7.4762910233615827e+00 -3.2653078128408453e-03 0 1 0 -522 1 2 2.1000000000000001e+00 -1.2147345593282450e+01 -1.0251359496978196e-01 2.7539461566052985e+00 1 1 0 -523 1 2 2.1000000000000001e+00 -1.2124030375241905e+01 -6.1133337616709902e+00 2.7618143580363075e+00 1 1 0 -524 1 3 -1.0500000000000000e+00 8.2953539893182153e+00 -8.9971801103008087e+00 1.1357452560675760e+00 0 1 0 -525 1 3 -1.0500000000000000e+00 -1.1989344710863094e+01 -6.2063052996612100e+00 1.1369992978851666e+00 1 1 0 -526 1 4 -9.4999999999999996e-01 6.0099622042933412e+00 -7.4025579776391464e+00 1.0069620216105442e+00 0 1 0 -527 1 3 -1.0500000000000000e+00 4.6608198109043748e+00 -5.4104755502326540e+00 3.2357801936372788e+00 0 1 0 -528 1 3 -1.0500000000000000e+00 -1.2236155841755377e+01 -7.5876771945797863e+00 3.2374811955831060e+00 1 1 0 -529 1 3 -1.0500000000000000e+00 7.2504604436044637e+00 -5.2616189118410208e+00 3.0459453948467168e+00 0 1 0 -530 1 5 4.2499999999999999e-01 5.5030432428799969e+00 -8.2814548631033578e+00 1.1505519475195651e+00 0 1 0 -531 1 1 1.5750000000000000e+00 -1.0328175895563996e+01 -2.9933575426158416e+00 -3.2744817930581149e-03 1 1 0 -532 1 2 2.1000000000000001e+00 5.8844947594629744e+00 -4.5854310172663979e+00 2.7539684166484335e+00 0 1 0 -533 1 2 2.1000000000000001e+00 5.9641241815446477e+00 -1.6304119441692926e+00 2.7618170105232309e+00 0 1 0 -534 1 3 -1.0500000000000000e+00 5.7435221593356864e+00 -4.5142545324410897e+00 1.1357475728004847e+00 0 1 0 -535 1 3 -1.0500000000000000e+00 6.0988162421821528e+00 -1.7233902325835047e+00 1.1369987706733902e+00 0 1 0 -536 1 4 -9.4999999999999996e-01 -1.2021823199294937e+01 -2.9195626861295096e+00 1.0070363114076599e+00 1 1 0 -537 1 3 -1.0500000000000000e+00 7.2690066204394697e+00 -9.2755674730927851e-01 3.2357668612914487e+00 0 1 0 -538 1 3 -1.0500000000000000e+00 5.8520231027928773e+00 -3.1047706349297179e+00 3.2374344835306346e+00 0 1 0 -539 1 3 -1.0500000000000000e+00 4.6986174638786373e+00 -7.7871980724010115e-01 3.0459566060165137e+00 0 1 0 -540 1 5 4.2499999999999999e-01 8.1112714877724414e+00 -3.7983924620060368e+00 1.1511131184559726e+00 0 1 0 -541 1 1 1.5750000000000000e+00 7.7197852579331645e+00 -1.4896736083571689e+00 -3.7533060240022564e-03 0 1 0 -542 1 2 2.1000000000000001e+00 6.9307402907651401e+00 -8.8634573665418070e+00 -2.7609563100003145e+00 0 1 0 -543 1 2 2.1000000000000001e+00 6.9074738694113726e+00 -2.8526269036832552e+00 -2.7688615983007780e+00 0 1 0 -544 1 3 -1.0500000000000000e+00 7.1282543967930359e+00 3.1358883413265204e-02 -1.1428023230370439e+00 0 1 0 -545 1 3 -1.0500000000000000e+00 6.7727419364633441e+00 -2.7599051276576141e+00 -1.1439490121146996e+00 0 1 0 -546 1 4 -9.4999999999999996e-01 -1.1226466741815884e+01 -1.5634024412045342e+00 -1.0140216083145610e+00 1 1 0 -547 1 3 -1.0500000000000000e+00 -9.8773043947366048e+00 -3.5555368621683208e+00 -3.2425683285331646e+00 1 1 0 -548 1 3 -1.0500000000000000e+00 7.0197645195179135e+00 -1.3782969003001959e+00 -3.2446289771148944e+00 0 1 0 -549 1 3 -1.0500000000000000e+00 8.1729347482067567e+00 -3.7043681527678913e+00 -3.0529625378704122e+00 0 1 0 -550 1 5 4.2499999999999999e-01 -1.0719626421899999e+01 -6.8465756426241953e-01 -1.1578295867776784e+00 1 1 0 -551 1 1 1.5750000000000000e+00 5.1115953590272625e+00 -5.9725597637293362e+00 -3.7601916249858647e-03 0 1 0 -552 1 2 2.1000000000000001e+00 -1.1101108931968247e+01 -4.3805528895496302e+00 -2.7609432872668886e+00 1 1 0 -553 1 2 2.1000000000000001e+00 -1.1180707067380455e+01 -7.3355188643798535e+00 -2.7688492591590554e+00 1 1 0 -554 1 3 -1.0500000000000000e+00 -1.0959928694497696e+01 -4.4515436898974556e+00 -1.1427711527976001e+00 1 1 0 -555 1 3 -1.0500000000000000e+00 -1.1315426415312240e+01 -7.2428113900070752e+00 -1.1439555106248189e+00 1 1 0 -556 1 4 -9.4999999999999996e-01 6.8054277571583519e+00 -6.0462150488380164e+00 -1.0139639895733374e+00 0 1 0 -557 1 3 -1.0500000000000000e+00 8.1545095181602107e+00 -8.0384640840914869e+00 -3.2425680420518717e+00 0 1 0 -558 1 3 -1.0500000000000000e+00 -1.1068396240802272e+01 -5.8612309436472234e+00 -3.2446597028975566e+00 1 1 0 -559 1 3 -1.0500000000000000e+00 -9.9152309072003355e+00 -8.1872904891822973e+00 -3.0529571692262092e+00 1 1 0 -560 1 5 4.2499999999999999e-01 7.3122321320503794e+00 -5.1674508614420542e+00 -1.1573511315660259e+00 0 1 0 -561 1 1 1.5750000000000000e+00 -7.7763421850555563e+00 -7.4762809230994502e+00 -3.2682934864940449e-03 1 1 0 -562 1 2 2.1000000000000001e+00 -6.9873219863206382e+00 -1.0251132671459473e-01 2.7539563597780923e+00 1 1 0 -563 1 2 2.1000000000000001e+00 -6.9640259840326628e+00 -6.1133472592188820e+00 2.7618022956295629e+00 1 1 0 -564 1 3 -1.0500000000000000e+00 -7.1846314193998664e+00 -8.9971779600544295e+00 1.1357163882947159e+00 1 1 0 -565 1 3 -1.0500000000000000e+00 -6.8293485880591112e+00 -6.2063096894111425e+00 1.1370012333877977e+00 1 1 0 -566 1 4 -9.4999999999999996e-01 -9.4700055755924701e+00 -7.4025139876644594e+00 1.0069773362883989e+00 1 1 0 -567 1 3 -1.0500000000000000e+00 -1.0819186074870123e+01 -5.4104790908412692e+00 3.2357742683187052e+00 1 1 0 -568 1 3 -1.0500000000000000e+00 -7.0761528036457531e+00 -7.5876609775127299e+00 3.2374644576831670e+00 1 1 0 -569 1 3 -1.0500000000000000e+00 -8.2295514763541018e+00 -5.2616148976108672e+00 3.0459489432022515e+00 1 1 0 -570 1 5 4.2499999999999999e-01 -9.9769424641830984e+00 -8.2814450142459481e+00 1.1507004566801982e+00 1 1 0 -571 1 1 1.5750000000000000e+00 -5.1681838127975688e+00 -2.9933576384022018e+00 -3.2717369706762867e-03 1 1 0 -572 1 2 2.1000000000000001e+00 -9.5954996993209818e+00 -4.5854449940775464e+00 2.7539595842160942e+00 1 1 0 -573 1 2 2.1000000000000001e+00 -9.5158507875170635e+00 -1.6304043820163336e+00 2.7618168255845852e+00 1 1 0 -574 1 3 -1.0500000000000000e+00 -9.7364845194737679e+00 -4.5142510709812989e+00 1.1357620952221374e+00 1 1 0 -575 1 3 -1.0500000000000000e+00 -9.3811811495596569e+00 -1.7234005945692772e+00 1.1370052607441838e+00 1 1 0 -576 1 4 -9.4999999999999996e-01 -6.8618165785256515e+00 -2.9195528214605435e+00 1.0070162671680265e+00 1 1 0 -577 1 3 -1.0500000000000000e+00 -8.2110400227350908e+00 -9.2758055861539646e-01 3.2357776111175447e+00 1 1 0 -578 1 3 -1.0500000000000000e+00 -9.6279751712075452e+00 -3.1047410652821092e+00 3.2374288782542173e+00 1 1 0 -579 1 3 -1.0500000000000000e+00 -1.0781377378976435e+01 -7.7872238917679937e-01 3.0459548222147177e+00 1 1 0 -580 1 5 4.2499999999999999e-01 -7.3687631344134621e+00 -3.7984280683325675e+00 1.1510087811947294e+00 1 1 0 -581 1 1 1.5750000000000000e+00 -7.7602231493103115e+00 -1.4896729773895174e+00 -3.7514049036762032e-03 1 1 0 -582 1 2 2.1000000000000001e+00 -8.5492636448235881e+00 -8.8634434759155383e+00 -2.7609469383151142e+00 1 1 0 -583 1 2 2.1000000000000001e+00 -8.5725493910960839e+00 -2.8526345568910330e+00 -2.7688621512718061e+00 1 1 0 -584 1 3 -1.0500000000000000e+00 -8.3517386022975746e+00 3.1355306993937404e-02 -1.1428188664021803e+00 1 1 0 -585 1 3 -1.0500000000000000e+00 -8.7072613660041132e+00 -2.7598948801617009e+00 -1.1439559119420721e+00 1 1 0 -586 1 4 -9.4999999999999996e-01 -6.0664578280469037e+00 -1.5633906786741285e+00 -1.0140407761717736e+00 1 1 0 -587 1 3 -1.0500000000000000e+00 -4.7173504441606600e+00 -3.5555605571846858e+00 -3.2425569990613576e+00 1 1 0 -588 1 3 -1.0500000000000000e+00 -8.4602377735195269e+00 -1.3783256930774925e+00 -3.2446245341017974e+00 1 1 0 -589 1 3 -1.0500000000000000e+00 -7.3070727313816795e+00 -3.7043646163271404e+00 -3.0529607277228852e+00 1 1 0 -590 1 5 4.2499999999999999e-01 -5.5596602828094399e+00 -6.8469307887884057e-01 -1.1579270767641230e+00 1 1 0 -591 1 1 1.5750000000000000e+00 -1.0368390725810965e+01 -5.9725695262430403e+00 -3.7573993430903840e-03 1 1 0 -592 1 2 2.1000000000000001e+00 -5.9410852260952272e+00 -4.3805507393552645e+00 -2.7609332752915812e+00 1 1 0 -593 1 2 2.1000000000000001e+00 -6.0207013841734955e+00 -7.3355318748997771e+00 -2.7688608337867908e+00 1 1 0 -594 1 3 -1.0500000000000000e+00 -5.7999138374145174e+00 -4.4515417632928145e+00 -1.1427994454172925e+00 1 1 0 -595 1 3 -1.0500000000000000e+00 -6.1554296040035208e+00 -7.2428163652707518e+00 -1.1439534513399927e+00 1 1 0 -596 1 4 -9.4999999999999996e-01 -8.6746031854828516e+00 -6.0462567207300957e+00 -1.0139806757747039e+00 1 1 0 -597 1 3 -1.0500000000000000e+00 -7.3254880189215017e+00 -8.0384622206913434e+00 -3.2425615735922868e+00 1 1 0 -598 1 3 -1.0500000000000000e+00 -5.9083924192090498e+00 -5.8612138215664249e+00 -3.2446762232977573e+00 1 1 0 -599 1 3 -1.0500000000000000e+00 -4.7552429311707556e+00 -8.1872863652617180e+00 -3.0529541602386461e+00 1 1 0 -600 1 5 4.2499999999999999e-01 -8.1677849706477055e+00 -5.1674634384285980e+00 -1.1575040236693965e+00 1 1 0 -601 1 1 1.5750000000000000e+00 -2.6163277838675221e+00 -7.4762909455420772e+00 -3.2656709391893912e-03 1 1 0 -602 1 2 2.1000000000000001e+00 -1.8273462383235461e+00 -1.0251424082924032e-01 2.7539460950975592e+00 1 1 0 -603 1 2 2.1000000000000001e+00 -1.8040299652667589e+00 -6.1133335430346563e+00 2.7618141317410618e+00 1 1 0 -604 1 3 -1.0500000000000000e+00 -2.0246462781465269e+00 -8.9971797593687484e+00 1.1357458882768405e+00 1 1 0 -605 1 3 -1.0500000000000000e+00 -1.6693450475600429e+00 -6.2063057861451725e+00 1.1369993464425061e+00 1 1 0 -606 1 4 -9.4999999999999996e-01 -4.3100379988542743e+00 -7.4025589029402692e+00 1.0069615315099991e+00 1 1 0 -607 1 3 -1.0500000000000000e+00 -5.6591796712508087e+00 -5.4104753627400228e+00 3.2357806674433647e+00 1 1 0 -608 1 3 -1.0500000000000000e+00 -1.9161562222272543e+00 -7.5876772803970987e+00 3.2374804258171608e+00 1 1 0 -609 1 3 -1.0500000000000000e+00 -3.0695406692448417e+00 -5.2616188661581340e+00 3.0459453864236909e+00 1 1 0 -610 1 5 4.2499999999999999e-01 -4.8169571538695717e+00 -8.2814553617741105e+00 1.1505481493262373e+00 1 1 0 -611 1 1 1.5750000000000000e+00 -8.1760772968380024e-03 -2.9933575181058600e+00 -3.2743711147666943e-03 1 1 0 -612 1 2 2.1000000000000001e+00 -4.4355051118200439e+00 -4.5854299392358087e+00 2.7539688922472791e+00 1 1 0 -613 1 2 2.1000000000000001e+00 -4.3558760344290208e+00 -1.6304124598534635e+00 2.7618174106720375e+00 1 1 0 -614 1 3 -1.0500000000000000e+00 -4.5764777419565466e+00 -4.5142548759855465e+00 1.1357463260141714e+00 1 1 0 -615 1 3 -1.0500000000000000e+00 -4.2211840342906868e+00 -1.7233895441759479e+00 1.1369977086180825e+00 1 1 0 -616 1 4 -9.4999999999999996e-01 -1.7018236124385560e+00 -2.9195635165858569e+00 1.0070367229964496e+00 1 1 0 -617 1 3 -1.0500000000000000e+00 -3.0509931277018758e+00 -9.2755589773917535e-01 3.2357665495488988e+00 1 1 0 -618 1 3 -1.0500000000000000e+00 -4.4679770346247647e+00 -3.1047713732493420e+00 3.2374347240366337e+00 1 1 0 -619 1 3 -1.0500000000000000e+00 -5.6213822534512161e+00 -7.7872002325319301e-01 3.0459565887809354e+00 1 1 0 -620 1 5 4.2499999999999999e-01 -2.2087277522865865e+00 -3.7983910799744223e+00 1.1511149260038867e+00 1 1 0 -621 1 1 1.5750000000000000e+00 -2.6002141654952915e+00 -1.4896737094533599e+00 -3.7533128050117881e-03 1 1 0 -622 1 2 2.1000000000000001e+00 -3.3892590053672063e+00 -8.8634574857208097e+00 -2.7609561680299493e+00 1 1 0 -623 1 2 2.1000000000000001e+00 -3.4125251930059894e+00 -2.8526268846259306e+00 -2.7688615286285891e+00 1 1 0 -624 1 3 -1.0500000000000000e+00 -3.1917462126351293e+00 3.1358788246325986e-02 -1.1428022026067133e+00 1 1 0 -625 1 3 -1.0500000000000000e+00 -3.5472590403252218e+00 -2.7599052235913142e+00 -1.1439491794483505e+00 1 1 0 -626 1 4 -9.4999999999999996e-01 -9.0646691514089461e-01 -1.5634032584722597e+00 -1.0140215315146257e+00 1 1 0 -627 1 3 -1.0500000000000000e+00 4.4269580016512577e-01 -3.5555364857703218e+00 -3.2425687501749536e+00 1 1 0 -628 1 3 -1.0500000000000000e+00 -3.3002363165323549e+00 -1.3782961327508190e+00 -3.2446289526978092e+00 1 1 0 -629 1 3 -1.0500000000000000e+00 -2.1470649566305173e+00 -3.7043686941940379e+00 -3.0529629239873710e+00 1 1 0 -630 1 5 4.2499999999999999e-01 -3.9962609031332441e-01 -6.8465733157457720e-01 -1.1578307953461699e+00 1 1 0 -631 1 1 1.5750000000000000e+00 -5.2084047404047134e+00 -5.9725595364899284e+00 -3.7600979616296826e-03 1 1 0 -632 1 2 2.1000000000000001e+00 -7.8110919308991456e-01 -4.3805529373242500e+00 -2.7609430555638124e+00 1 1 0 -633 1 2 2.1000000000000001e+00 -8.6070716056939567e-01 -7.3355179831783488e+00 -2.7688491805898519e+00 1 1 0 -634 1 3 -1.0500000000000000e+00 -6.3992886880595101e-01 -4.4515437816825045e+00 -1.1427704613142957e+00 1 1 0 -635 1 3 -1.0500000000000000e+00 -9.9542614064111312e-01 -7.2428116519511683e+00 -1.1439560424635076e+00 1 1 0 -636 1 4 -9.4999999999999996e-01 -3.5145719480547983e+00 -6.0462140630651522e+00 -1.0139637930845495e+00 1 1 0 -637 1 3 -1.0500000000000000e+00 -2.1654899354619133e+00 -8.0384635502983741e+00 -3.2425685873817418e+00 1 1 0 -638 1 3 -1.0500000000000000e+00 -7.4839646312622143e-01 -5.8612317329932946e+00 -3.2446596299773693e+00 1 1 0 -639 1 3 -1.0500000000000000e+00 4.0476806768967499e-01 -8.1872903970557633e+00 -3.0529571025848705e+00 1 1 0 -640 1 5 4.2499999999999999e-01 -3.0077675350384983e+00 -5.1674504112187361e+00 -1.1573483949331340e+00 1 1 0 -641 1 1 1.5750000000000000e+00 9.0327999603982079e-01 1.3078268179656156e+00 9.1936285392393344e+00 0 0 0 -642 1 2 2.1000000000000001e+00 5.0862246908167243e+00 9.0452767941395287e+00 -6.4424047165866876e+00 0 0 1 -643 1 2 2.1000000000000001e+00 5.1094714654176485e+00 3.0344442077888871e+00 -6.4345036943507274e+00 0 0 1 -644 1 3 -1.0500000000000000e+00 4.8887010421652999e+00 1.5046638157599901e-01 -8.0605839637767165e+00 0 0 1 -645 1 3 -1.0500000000000000e+00 5.2441927721705479e+00 2.9417321911529406e+00 -8.0593973812488873e+00 0 0 1 -646 1 4 -9.4999999999999996e-01 2.6033704126610484e+00 1.7451758067380290e+00 -8.1893676020018926e+00 0 0 1 -647 1 3 -1.0500000000000000e+00 1.2542455852135834e+00 3.7373752120048742e+00 -5.9607992485127665e+00 0 0 1 -648 1 3 -1.0500000000000000e+00 4.9971716802184414e+00 1.5601454347120267e+00 -5.9587058378165576e+00 0 0 1 -649 1 3 -1.0500000000000000e+00 3.8440041612115703e+00 3.8861931285291931e+00 -6.1503945630703374e+00 0 0 1 -650 1 5 4.2499999999999999e-01 2.0965664266306856e+00 8.6640571709351022e-01 -8.0457855564755221e+00 0 0 1 -651 1 1 1.5750000000000000e+00 3.5114550282895003e+00 5.7907578289563908e+00 9.1936291799320600e+00 0 0 0 -652 1 2 2.1000000000000001e+00 2.4780321755723715e+00 4.5623640127866523e+00 -6.4424127795872970e+00 0 0 1 -653 1 2 2.1000000000000001e+00 2.5576727978274061e+00 7.5173398896816757e+00 -6.4345086110749499e+00 0 0 1 -654 1 3 -1.0500000000000000e+00 2.3368431861690446e+00 4.6333600597891369e+00 -8.0605492211226508e+00 0 0 1 -655 1 3 -1.0500000000000000e+00 2.6923826235310759e+00 7.4246193194823391e+00 -8.0594146702702183e+00 0 0 1 -656 1 4 -9.4999999999999996e-01 5.2115829731287189e+00 6.2281267873758885e+00 -8.1893654320210807e+00 0 0 1 -657 1 3 -1.0500000000000000e+00 3.8624444953521344e+00 8.2202786364954399e+00 -5.9607758363894661e+00 0 0 1 -658 1 3 -1.0500000000000000e+00 2.4453330767289607e+00 6.0430641736627777e+00 -5.9587080529496408e+00 0 0 1 -659 1 3 -1.0500000000000000e+00 1.2921732996260165e+00 8.3691407396663671e+00 -6.1504119881455370e+00 0 0 1 -660 1 5 4.2499999999999999e-01 4.7046988428178977e+00 5.3493130177618120e+00 -8.0457432166301501e+00 0 0 1 -661 1 1 1.5750000000000000e+00 9.1939897374337853e-01 7.2944681040671533e+00 9.1931409599603455e+00 0 0 0 -662 1 2 2.1000000000000001e+00 1.3038993986497616e-01 -7.9297399937615864e-02 6.4359157158029880e+00 0 0 0 -663 1 2 2.1000000000000001e+00 1.0709548741821351e-01 5.9314795901314916e+00 6.4280530942119469e+00 0 0 0 -664 1 3 -1.0500000000000000e+00 3.2769702380019616e-01 8.8153278361017087e+00 8.0541328072809932e+00 0 0 0 -665 1 3 -1.0500000000000000e+00 -2.7577048002024540e-02 6.0244668918843125e+00 8.0528534019165114e+00 0 0 0 -666 1 4 -9.4999999999999996e-01 2.6131161534111662e+00 7.2207287036538688e+00 8.1828861539669902e+00 0 0 0 -667 1 3 -1.0500000000000000e+00 3.9622586469205352e+00 5.2286377281547125e+00 5.9541122763207728e+00 0 0 0 -668 1 3 -1.0500000000000000e+00 2.1920683743605807e-01 7.4058249891069572e+00 5.9524118713538332e+00 0 0 0 -669 1 3 -1.0500000000000000e+00 1.3725990807979294e+00 5.0798240702830135e+00 6.1439110162023720e+00 0 0 0 -670 1 5 4.2499999999999999e-01 3.1199732920356418e+00 8.0995675675041703e+00 8.0391592725870282e+00 0 0 0 -671 1 1 1.5750000000000000e+00 -1.6887626179515607e+00 2.8115295078010867e+00 9.1931424252045630e+00 0 0 0 -672 1 2 2.1000000000000001e+00 2.7385869519563499e+00 4.4035977810533353e+00 6.4359159181916219e+00 0 0 0 -673 1 2 2.1000000000000001e+00 2.6589194294892575e+00 1.4485953760994725e+00 6.4280582079700412e+00 0 0 0 -674 1 3 -1.0500000000000000e+00 2.8795450934696767e+00 4.3324405226142382e+00 8.0541191847946116e+00 0 0 0 -675 1 3 -1.0500000000000000e+00 2.5242342524813459e+00 1.5415689319063191e+00 8.0528783307282445e+00 0 0 0 -676 1 4 -9.4999999999999996e-01 4.8784689801895098e-03 2.7377462205787744e+00 8.1828769724994572e+00 0 0 0 -677 1 3 -1.0500000000000000e+00 1.3540645414120398e+00 7.4573621369630771e-01 5.9540951763794290e+00 0 0 0 -678 1 3 -1.0500000000000000e+00 2.7710487894445812e+00 2.9229363552675593e+00 5.9524016589185003e+00 0 0 0 -679 1 3 -1.0500000000000000e+00 3.9244363315488222e+00 5.9687068067378490e-01 6.1439283855687208e+00 0 0 0 -680 1 5 4.2499999999999999e-01 5.1182958888196950e-01 3.6166698539281406e+00 8.0390353352204258e+00 0 0 0 -681 1 1 1.5750000000000000e+00 6.0632942270537633e+00 1.3078169876851220e+00 9.1936311772266670e+00 0 0 0 -682 1 2 2.1000000000000001e+00 -1.0393798325235846e+01 9.0452739485367424e+00 -6.4424156068686536e+00 1 0 1 -683 1 2 2.1000000000000001e+00 -1.0370532688021308e+01 3.0344580928070393e+00 -6.4344922061203995e+00 1 0 1 -684 1 3 -1.0500000000000000e+00 1.0048686020539265e+01 1.5046462355047652e-01 -8.0605545916265591e+00 0 0 1 -685 1 3 -1.0500000000000000e+00 -1.0235804675645195e+01 2.9417358723974196e+00 -8.0593999402563039e+00 1 0 1 -686 1 4 -9.4999999999999996e-01 7.7633395990307577e+00 1.7451343070668237e+00 -8.1893820944806723e+00 0 0 1 -687 1 3 -1.0500000000000000e+00 6.4142512718313398e+00 3.7373784423628784e+00 -5.9607944539472024e+00 0 0 1 -688 1 3 -1.0500000000000000e+00 -1.0482832407337161e+01 1.5601299826680055e+00 -5.9586900611972622e+00 1 0 1 -689 1 3 -1.0500000000000000e+00 9.0040166486961724e+00 3.8861879123933356e+00 -6.1503979527282322e+00 0 0 1 -690 1 5 4.2499999999999999e-01 7.2565522149876038e+00 8.6639701182161843e-01 -8.0459259751794452e+00 0 0 1 -691 1 1 1.5750000000000000e+00 -1.1968537431183220e+01 5.7907580951124764e+00 9.1936264813234629e+00 1 0 0 -692 1 2 2.1000000000000001e+00 7.6380264848568480e+00 4.5623772756766172e+00 -6.4424042946661455e+00 0 0 1 -693 1 2 2.1000000000000001e+00 7.7176486578355963e+00 7.5173331294719183e+00 -6.4345083071021740e+00 0 0 1 -694 1 3 -1.0500000000000000e+00 7.4968492694646329e+00 4.6333567441294718e+00 -8.0605633819113667e+00 0 0 1 -695 1 3 -1.0500000000000000e+00 7.8523804276681837e+00 7.4246294275852094e+00 -8.0594213971891069e+00 0 0 1 -696 1 4 -9.4999999999999996e-01 -1.0268423694159754e+01 6.2281174442746980e+00 -8.1893456261947950e+00 1 0 1 -697 1 3 -1.0500000000000000e+00 9.0224907290535974e+00 8.2203025512221188e+00 -5.9607878799717344e+00 0 0 1 -698 1 3 -1.0500000000000000e+00 7.6053307981435196e+00 6.0430347893748895e+00 -5.9587019740450744e+00 0 0 1 -699 1 3 -1.0500000000000000e+00 6.4521656412247061e+00 8.3691447635715939e+00 -6.1504109506876619e+00 0 0 1 -700 1 5 4.2499999999999999e-01 9.8647336224214257e+00 5.3493476067839048e+00 -8.0456403223888646e+00 0 0 1 -701 1 1 1.5750000000000000e+00 6.0794078571688708e+00 7.2944672054170034e+00 9.1931387604710437e+00 0 0 0 -702 1 2 2.1000000000000001e+00 5.2903927590288387e+00 -7.9312034344852123e-02 6.4359061568910381e+00 0 0 0 -703 1 2 2.1000000000000001e+00 5.2671187145264451e+00 5.9314885138761895e+00 6.4280540558924795e+00 0 0 0 -704 1 3 -1.0500000000000000e+00 5.4876891838999047e+00 8.8153320262813786e+00 8.0541505226321348e+00 0 0 0 -705 1 3 -1.0500000000000000e+00 5.1324255766353062e+00 6.0244559010705814e+00 8.0528602469110595e+00 0 0 0 -706 1 4 -9.4999999999999996e-01 -1.2866893134241742e+01 7.2207151463837640e+00 8.1829043644805566e+00 1 0 0 -707 1 3 -1.0500000000000000e+00 -1.1517695582926537e+01 5.2286614618147631e+00 5.9541014619513177e+00 1 0 0 -708 1 3 -1.0500000000000000e+00 5.3792088967617762e+00 7.4058530000867115e+00 5.9524066869292191e+00 0 0 0 -709 1 3 -1.0500000000000000e+00 6.5326055526273592e+00 5.0798202391399414e+00 6.1439090309796480e+00 0 0 0 -710 1 5 4.2499999999999999e-01 -1.2359993555416519e+01 8.0996018552035594e+00 8.0392491603506926e+00 1 0 0 -711 1 1 1.5750000000000000e+00 3.4712234255278887e+00 2.8115394997158880e+00 9.1931391128052944e+00 0 0 0 -712 1 2 2.1000000000000001e+00 -1.2741436473488831e+01 4.4035966072164179e+00 6.4359068114368210e+00 1 0 0 -713 1 2 2.1000000000000001e+00 -1.2821086026369231e+01 1.4486074172151717e+00 6.4280700878493633e+00 1 0 0 -714 1 3 -1.0500000000000000e+00 -1.2600468968641490e+01 4.3324381244139616e+00 8.0541460499971507e+00 1 0 0 -715 1 3 -1.0500000000000000e+00 -1.2955762910609096e+01 1.5415738718932701e+00 8.0528750796115318e+00 1 0 0 -716 1 4 -9.4999999999999996e-01 5.1649091672213814e+00 2.7377878492092051e+00 8.1828935067407187e+00 0 0 0 -717 1 3 -1.0500000000000000e+00 6.5140624838503562e+00 7.4573449160736516e-01 5.9540890408837548e+00 0 0 0 -718 1 3 -1.0500000000000000e+00 -1.2708954990084692e+01 2.9229186261097801e+00 5.9524185176229256e+00 1 0 0 -719 1 3 -1.0500000000000000e+00 -1.1555552596604405e+01 5.9686666841561120e-01 6.1439252012806840e+00 1 0 0 -720 1 5 4.2499999999999999e-01 5.6718460531567594e+00 3.6166822258108873e+00 8.0391876250502783e+00 0 0 0 -721 1 1 1.5750000000000000e+00 -9.4167199060881881e+00 1.3078268191493692e+00 9.1936284569148015e+00 1 0 0 -722 1 2 2.1000000000000001e+00 -5.2337744657239433e+00 9.0452766042384738e+00 -6.4424045702369455e+00 1 0 1 -723 1 2 2.1000000000000001e+00 -5.2105281225591042e+00 3.0344444952698204e+00 -6.4345035089905984e+00 1 0 1 -724 1 3 -1.0500000000000000e+00 -5.4312992074936357e+00 1.5046681141750895e-01 -8.0605839113224356e+00 1 0 1 -725 1 3 -1.0500000000000000e+00 -5.0758078374764404e+00 2.9417318484454675e+00 -8.0593973266164873e+00 1 0 1 -726 1 4 -9.4999999999999996e-01 -7.7166293890810103e+00 1.7451757670354233e+00 -8.1893673368413982e+00 1 0 1 -727 1 3 -1.0500000000000000e+00 -9.0657538566382421e+00 3.7373757159528864e+00 -5.9607990251074803e+00 1 0 1 -728 1 3 -1.0500000000000000e+00 -5.3228288100664747e+00 1.5601455206964303e+00 -5.9587064079961714e+00 1 0 1 -729 1 3 -1.0500000000000000e+00 -6.4759962422743165e+00 3.8861930601011174e+00 -6.1503948993679884e+00 1 0 1 -730 1 5 4.2499999999999999e-01 -8.2234331102634997e+00 8.6640653809297419e-01 -8.0457837360048821e+00 1 0 1 -731 1 1 1.5750000000000000e+00 -6.8085449284088639e+00 5.7907577807183372e+00 9.1936293269548521e+00 1 0 0 -732 1 2 2.1000000000000001e+00 -7.8419680626851189e+00 4.5623634416592758e+00 -6.4424126333628751e+00 1 0 1 -733 1 2 2.1000000000000001e+00 -7.7623275299073544e+00 7.5173406513668297e+00 -6.4345089088641538e+00 1 0 1 -734 1 3 -1.0500000000000000e+00 -7.9831563836472403e+00 4.6333602950605197e+00 -8.0605491278584473e+00 1 0 1 -735 1 3 -1.0500000000000000e+00 -7.6276171712668432e+00 7.4246189825803306e+00 -8.0594145553904770e+00 1 0 1 -736 1 4 -9.4999999999999996e-01 -5.1084172118972777e+00 6.2281269736840663e+00 -8.1893656974078635e+00 1 0 1 -737 1 3 -1.0500000000000000e+00 -6.4575553159047985e+00 8.2202787726173803e+00 -5.9607759162796174e+00 1 0 1 -738 1 3 -1.0500000000000000e+00 -7.8746669235491940e+00 6.0430635684913305e+00 -5.9587081543805747e+00 1 0 1 -739 1 3 -1.0500000000000000e+00 -9.0278274510389611e+00 8.3691408883945471e+00 -6.1504119619142976e+00 1 0 1 -740 1 5 4.2499999999999999e-01 -5.6153013914286491e+00 5.3493123886781433e+00 -8.0457448175864990e+00 1 0 1 -741 1 1 1.5750000000000000e+00 -9.4006010736587182e+00 7.2944682033683108e+00 9.1931405770212429e+00 1 0 0 -742 1 2 2.1000000000000001e+00 -1.0189610402198802e+01 -7.9297605759123257e-02 6.4359160010201411e+00 1 0 0 -743 1 2 2.1000000000000001e+00 -1.0212904137937610e+01 5.9314797115273628e+00 6.4280531027538306e+00 1 0 0 -744 1 3 -1.0500000000000000e+00 -9.9923029717657226e+00 8.8153286205910888e+00 8.0541331394482896e+00 1 0 0 -745 1 3 -1.0500000000000000e+00 -1.0347577370841730e+01 6.0244660873837574e+00 8.0528534336309434e+00 1 0 0 -746 1 4 -9.4999999999999996e-01 -7.7068834885402087e+00 7.2207286744038370e+00 8.1828858968542733e+00 1 0 0 -747 1 3 -1.0500000000000000e+00 -6.3577402971397685e+00 5.2286383860826824e+00 5.9541124938145380e+00 1 0 0 -748 1 3 -1.0500000000000000e+00 -1.0100793183120766e+01 7.4058245081335947e+00 5.9524106541055115e+00 1 0 0 -749 1 3 -1.0500000000000000e+00 -8.9474022065604224e+00 5.0798241454221369e+00 6.1439110956024354e+00 1 0 0 -750 1 5 4.2499999999999999e-01 -7.2000270353828046e+00 8.0995672068003088e+00 8.0391580946381538e+00 1 0 0 -751 1 1 1.5750000000000000e+00 -1.2008762881451348e+01 2.8115295177180428e+00 9.1931425674069622e+00 1 0 0 -752 1 2 2.1000000000000001e+00 -7.5814135479309908e+00 4.4035983789351896e+00 6.4359165483385254e+00 1 0 0 -753 1 2 2.1000000000000001e+00 -7.6610808670997494e+00 1.4485945780712797e+00 6.4280582613292712e+00 1 0 0 -754 1 3 -1.0500000000000000e+00 -7.4404546055668366e+00 4.3324402056750237e+00 8.0541182772999065e+00 1 0 0 -755 1 3 -1.0500000000000000e+00 -7.7957660342353634e+00 1.5415692603738904e+00 8.0528775182214503e+00 1 0 0 -756 1 4 -9.4999999999999996e-01 -1.0315122227353797e+01 2.7377447118390101e+00 8.1828767909309512e+00 1 0 0 -757 1 3 -1.0500000000000000e+00 -8.9659352915333912e+00 7.4573683553695247e-01 5.9540956560325071e+00 1 0 0 -758 1 3 -1.0500000000000000e+00 -7.5489512806955084e+00 2.9229361730432970e+00 5.9524018601671909e+00 1 0 0 -759 1 3 -1.0500000000000000e+00 -6.3955632518685768e+00 5.9687042658164202e-01 6.1439287069185120e+00 1 0 0 -760 1 5 4.2499999999999999e-01 -9.8081700960310911e+00 3.6166702227703560e+00 8.0390328438422074e+00 1 0 0 -761 1 1 1.5750000000000000e+00 -4.2567053371850658e+00 1.3078168179231042e+00 9.1936310535964232e+00 1 0 0 -762 1 2 2.1000000000000001e+00 -7.3798358768387473e-02 9.0452733241225367e+00 -6.4424155682759778e+00 1 0 1 -763 1 2 2.1000000000000001e+00 -5.0532229357781233e-02 3.0344580784693349e+00 -6.4344918700685572e+00 1 0 1 -764 1 3 -1.0500000000000000e+00 -2.7131416236533745e-01 1.5046495859890285e-01 -8.0605544059037157e+00 1 0 1 -765 1 3 -1.0500000000000000e+00 8.4195332462293493e-02 2.9417357818207392e+00 -8.0593997996762017e+00 1 0 1 -766 1 4 -9.4999999999999996e-01 -2.5566610233707436e+00 1.7451330035208805e+00 -8.1893824664560277e+00 1 0 1 -767 1 3 -1.0500000000000000e+00 -3.9057480740250670e+00 3.7373787164792880e+00 -5.9607940658222685e+00 1 0 1 -768 1 3 -1.0500000000000000e+00 -1.6283268367977044e-01 1.5601301436753872e+00 -5.9586903754265217e+00 1 0 1 -769 1 3 -1.0500000000000000e+00 -1.3159834872646030e+00 3.8861877175565063e+00 -6.1503980963921077e+00 1 0 1 -770 1 5 4.2499999999999999e-01 -3.0634476704969611e+00 8.6639700750263771e-01 -8.0459289853123099e+00 1 0 1 -771 1 1 1.5750000000000000e+00 -1.6485375220706722e+00 5.7907579502462809e+00 9.1936265404422031e+00 1 0 0 -772 1 2 2.1000000000000001e+00 -2.6819735576082735e+00 4.5623781023095979e+00 -6.4424040572249073e+00 1 0 1 -773 1 2 2.1000000000000001e+00 -2.6023515605367979e+00 7.5173327298043446e+00 -6.4345082402300129e+00 1 0 1 -774 1 3 -1.0500000000000000e+00 -2.8231506835232665e+00 4.6333563194435925e+00 -8.0605641951789604e+00 1 0 1 -775 1 3 -1.0500000000000000e+00 -2.4676198319304250e+00 7.4246300333344308e+00 -8.0594222945481242e+00 1 0 1 -776 1 4 -9.4999999999999996e-01 5.1576495784171783e-02 6.2281174409833078e+00 -8.1893454451251166e+00 1 0 1 -777 1 3 -1.0500000000000000e+00 -1.2975095016776308e+00 8.2203029875449154e+00 -5.9607878139978627e+00 1 0 1 -778 1 3 -1.0500000000000000e+00 -2.7146694253441410e+00 6.0430341006248725e+00 -5.9587013238385174e+00 1 0 1 -779 1 3 -1.0500000000000000e+00 -3.8678341546705104e+00 8.3691444919325306e+00 -6.1504110733339727e+00 1 0 1 -780 1 5 4.2499999999999999e-01 -4.5526617430967775e-01 5.3493482680335944e+00 -8.0456383324324694e+00 1 0 1 -781 1 1 1.5750000000000000e+00 -4.2405919059825807e+00 7.2944670077944807e+00 9.1931388109336041e+00 1 0 0 -782 1 2 2.1000000000000001e+00 -5.0296064030418073e+00 -7.9312429721781541e-02 6.4359061250102680e+00 1 0 0 -783 1 2 2.1000000000000001e+00 -5.0528803208991677e+00 5.9314885847207393e+00 6.4280541425652125e+00 1 0 0 -784 1 3 -1.0500000000000000e+00 -4.8323113190408655e+00 8.8153320489722837e+00 8.0541507220343149e+00 1 0 0 -785 1 3 -1.0500000000000000e+00 -5.1875750890510588e+00 6.0244559180381110e+00 8.0528596115841111e+00 1 0 0 -786 1 4 -9.4999999999999996e-01 -2.5468930396501683e+00 7.2207149872186704e+00 8.1829042004208787e+00 1 0 0 -787 1 3 -1.0500000000000000e+00 -1.1976965541013911e+00 5.2286614070351156e+00 5.9541011082395521e+00 1 0 0 -788 1 3 -1.0500000000000000e+00 -4.9407917338772620e+00 7.4058524302343827e+00 5.9524067025542333e+00 1 0 0 -789 1 3 -1.0500000000000000e+00 -3.7873946085238082e+00 5.0798202478013827e+00 6.1439086823543967e+00 1 0 0 -790 1 5 4.2499999999999999e-01 -2.0399936634126092e+00 8.0996016485694859e+00 8.0392480188451927e+00 1 0 0 -791 1 1 1.5750000000000000e+00 -6.8487764459721472e+00 2.8115396349174162e+00 9.1931393353000779e+00 1 0 0 -792 1 2 2.1000000000000001e+00 -2.4214360684733940e+00 4.4035963531915776e+00 6.4359069157849582e+00 1 0 0 -793 1 2 2.1000000000000001e+00 -2.5010867592299606e+00 1.4486079821071627e+00 6.4280700334665895e+00 1 0 0 -794 1 3 -1.0500000000000000e+00 -2.2804693176190796e+00 4.3324382110458508e+00 8.0541466060331786e+00 1 0 0 -795 1 3 -1.0500000000000000e+00 -2.6357629333121757e+00 1.5415738251322431e+00 8.0528749502136669e+00 1 0 0 -796 1 4 -9.4999999999999996e-01 -5.1550909689645312e+00 2.7377879547736299e+00 8.1828937813504332e+00 1 0 0 -797 1 3 -1.0500000000000000e+00 -3.8059367645404496e+00 7.4573545262324359e-01 5.9540888558950602e+00 1 0 0 -798 1 3 -1.0500000000000000e+00 -2.3889553911064834e+00 2.9229182779601004e+00 5.9524183742338437e+00 1 0 0 -799 1 3 -1.0500000000000000e+00 -1.2355527417253249e+00 5.9686629625387155e-01 6.1439250256775200e+00 1 0 0 -800 1 5 4.2499999999999999e-01 -4.6481532735579094e+00 3.6166830920668787e+00 8.0391899192038352e+00 1 0 0 -801 1 1 1.5750000000000000e+00 9.5960721862191178e-01 1.0273669203704241e+01 9.1936235733136655e+00 0 0 0 -802 1 2 2.1000000000000001e+00 4.9172083055255325e+00 -1.7852191623671651e+01 -6.4424003148067897e+00 0 1 1 -803 1 2 2.1000000000000001e+00 5.1658109241490635e+00 1.2000275388808074e+01 -6.4345007360704409e+00 0 0 1 -804 1 3 -1.0500000000000000e+00 4.9450244688133118e+00 9.1162949204304589e+00 -8.0605632730520096e+00 0 0 1 -805 1 3 -1.0500000000000000e+00 5.3005308774925517e+00 1.1907548980836420e+01 -8.0594017059932295e+00 0 0 1 -806 1 4 -9.4999999999999996e-01 2.6597454135294925e+00 1.0711060731609876e+01 -8.1893222259048226e+00 0 0 1 -807 1 3 -1.0500000000000000e+00 1.3105929168482859e+00 1.2703195772710561e+01 -5.9607978618737851e+00 0 0 1 -808 1 3 -1.0500000000000000e+00 5.0535126422700269e+00 1.0525967976026514e+01 -5.9587374189296218e+00 0 0 1 -809 1 3 -1.0500000000000000e+00 3.9003367713006512e+00 1.2852015907184782e+01 -6.1503929107381827e+00 0 0 1 -810 1 5 4.2499999999999999e-01 2.1529230807864241e+00 9.8323236639573999e+00 -8.0454353340627449e+00 0 0 1 -811 1 1 1.5750000000000000e+00 3.5677901403638028e+00 1.4756558886709637e+01 9.1936320859504761e+00 0 0 0 -812 1 2 2.1000000000000001e+00 2.5343724058499628e+00 1.3528195803657599e+01 -6.4424233387050833e+00 0 0 1 -813 1 2 2.1000000000000001e+00 2.6139913107597703e+00 1.6483175576855384e+01 -6.4345033330073518e+00 0 0 1 -814 1 3 -1.0500000000000000e+00 2.3931907288388619e+00 1.3599192072250563e+01 -8.0605653726222926e+00 0 0 1 -815 1 3 -1.0500000000000000e+00 2.7487038780850757e+00 1.6390457170443742e+01 -8.0594014632146163e+00 0 0 1 -816 1 4 -9.4999999999999996e-01 5.2678674489775172e+00 1.5193891941576492e+01 -8.1893953522173568e+00 0 0 1 -817 1 3 -1.0500000000000000e+00 3.9187441878934699e+00 1.7186101345028060e+01 -5.9607852712427771e+00 0 0 1 -818 1 3 -1.0500000000000000e+00 2.5016682244761341e+00 1.5008886897788546e+01 -5.9586911872320503e+00 0 0 1 -819 1 3 -1.0500000000000000e+00 1.3485131765279306e+00 1.7334940064883479e+01 -6.1504041699538501e+00 0 0 1 -820 1 5 4.2499999999999999e-01 4.7610305469518792e+00 1.4315086371947789e+01 -8.0459836447046609e+00 0 0 1 -821 1 1 1.5750000000000000e+00 9.7572650104669378e-01 1.6260281732774981e+01 9.1931398694629891e+00 0 0 0 -822 1 2 2.1000000000000001e+00 1.8672671622704407e-01 8.8865134574184275e+00 6.4359252403327680e+00 0 0 0 -823 1 2 2.1000000000000001e+00 1.6341323909156813e-01 1.4897327838108385e+01 6.4280628738807160e+00 0 0 0 -824 1 3 -1.0500000000000000e+00 1.5869811845495363e-01 -1.8082123015369124e+01 8.0541340213658152e+00 0 1 0 -825 1 3 -1.0500000000000000e+00 2.8742433885017959e-02 1.4990304244778233e+01 8.0528666545587271e+00 0 0 0 -826 1 4 -9.4999999999999996e-01 2.6694272128344245e+00 1.6186542002547892e+01 8.1828957582626032e+00 0 0 0 -827 1 3 -1.0500000000000000e+00 4.0185585050563635e+00 1.4194457856414292e+01 5.9541011149118788e+00 0 0 0 -828 1 3 -1.0500000000000000e+00 2.7554898326217625e-01 1.6371647903721165e+01 5.9524005485591456e+00 0 0 0 -829 1 3 -1.0500000000000000e+00 1.4289385783169752e+00 1.4045613821719037e+01 6.1439242276787418e+00 0 0 0 -830 1 5 4.2499999999999999e-01 3.1763286179058490e+00 1.7065430306293440e+01 8.0392248483087627e+00 0 0 0 -831 1 1 1.5750000000000000e+00 -1.6324184683740341e+00 1.1777344934266068e+01 9.1931465772030379e+00 0 0 0 -832 1 2 2.1000000000000001e+00 2.7949109368093250e+00 1.3369431615951214e+01 6.4359123446196520e+00 0 0 0 -833 1 2 2.1000000000000001e+00 2.7152603396729695e+00 1.0414397731227350e+01 6.4280500078867284e+00 0 0 0 -834 1 3 -1.0500000000000000e+00 2.9358844870702256e+00 1.3298249254921139e+01 8.0541035265692571e+00 0 0 0 -835 1 3 -1.0500000000000000e+00 2.5805749833761542e+00 1.0507387417059693e+01 8.0528735429538472e+00 0 0 0 -836 1 4 -9.4999999999999996e-01 6.1197499880652373e-02 1.1703528856756993e+01 8.1828384666384260e+00 0 0 0 -837 1 3 -1.0500000000000000e+00 1.4104102567525914e+00 9.7115620528564612e+00 5.9541021771064706e+00 0 0 0 -838 1 3 -1.0500000000000000e+00 2.8273745913960777e+00 1.1888758720918936e+01 5.9524302538497906e+00 0 0 0 -839 1 3 -1.0500000000000000e+00 3.9807696072751568e+00 9.5627134385235948e+00 6.1439195726972784e+00 0 0 0 -840 1 5 4.2499999999999999e-01 5.6813568547824111e-01 1.2582401681601350e+01 8.0387418936318475e+00 0 0 0 -841 1 1 1.5750000000000000e+00 6.1196215253814046e+00 1.0273659065047806e+01 9.1936258533248534e+00 0 0 0 -842 1 2 2.1000000000000001e+00 -1.0562814009027809e+01 -1.7852194770053313e+01 -6.4424105685276851e+00 1 1 1 -843 1 2 2.1000000000000001e+00 -1.0314192648491979e+01 1.2000288960951057e+01 -6.4344887365136625e+00 1 0 1 -844 1 3 -1.0500000000000000e+00 1.0105009678123249e+01 9.1162929018207564e+00 -8.0605338552440937e+00 0 0 1 -845 1 3 -1.0500000000000000e+00 -1.0179466880668443e+01 1.1907552881889412e+01 -8.0594043468605676e+00 1 0 1 -846 1 4 -9.4999999999999996e-01 7.8197150885211819e+00 1.0711020034930083e+01 -8.1893365530719642e+00 0 0 1 -847 1 3 -1.0500000000000000e+00 6.4705998763924484e+00 1.2703199920926114e+01 -5.9607930505693743e+00 0 0 1 -848 1 3 -1.0500000000000000e+00 -1.0426491548728604e+01 1.0525953700197832e+01 -5.9587210876857588e+00 1 0 1 -849 1 3 -1.0500000000000000e+00 9.0603500318690493e+00 1.2852009950045630e+01 -6.1503965426825715e+00 0 0 1 -850 1 5 4.2499999999999999e-01 7.3129093231943401e+00 9.8323158297765794e+00 -8.0455729433718481e+00 0 0 1 -851 1 1 1.5750000000000000e+00 -1.1912201911242379e+01 1.4756558626125500e+01 9.1936299374457917e+00 1 0 0 -852 1 2 2.1000000000000001e+00 7.6943659531364794e+00 1.3528208886055431e+01 -6.4424143301466863e+00 0 0 1 -853 1 2 2.1000000000000001e+00 7.7739676680323946e+00 1.6483168696691120e+01 -6.4345034954359610e+00 0 0 1 -854 1 3 -1.0500000000000000e+00 7.5531973024030030e+00 1.3599188471640346e+01 -8.0605797041230307e+00 0 0 1 -855 1 3 -1.0500000000000000e+00 7.9087020351309256e+00 1.6390467445460896e+01 -8.0594079096168336e+00 0 0 1 -856 1 4 -9.4999999999999996e-01 -1.0212139335865229e+01 1.5193882091436695e+01 -8.1893761679918828e+00 1 0 1 -857 1 3 -1.0500000000000000e+00 9.0787892522491873e+00 1.7186124575197912e+01 -5.9607974326211624e+00 0 0 1 -858 1 3 -1.0500000000000000e+00 7.6616656495931785e+00 1.5008857806803714e+01 -5.9586855554315239e+00 0 0 1 -859 1 3 -1.0500000000000000e+00 6.5085065607252339e+00 1.7334943758700970e+01 -6.1504023223690254e+00 0 0 1 -860 1 5 4.2499999999999999e-01 9.9210652194241220e+00 1.4315120680602522e+01 -8.0458834643735155e+00 0 0 1 -861 1 1 1.5750000000000000e+00 6.1357349670429358e+00 1.6260281068792370e+01 9.1931373680824571e+00 0 0 0 -862 1 2 2.1000000000000001e+00 5.3467301429260417e+00 8.8864991034834802e+00 6.4359154980254800e+00 0 0 0 -863 1 2 2.1000000000000001e+00 5.3234375680067387e+00 1.4897337020707621e+01 6.4280633305033579e+00 0 0 0 -864 1 3 -1.0500000000000000e+00 5.3186906165474923e+00 -1.8082119281913194e+01 8.0541512151208217e+00 0 1 0 -865 1 3 -1.0500000000000000e+00 5.1887452446427620e+00 1.4990293685008570e+01 8.0528738710979937e+00 0 0 0 -866 1 4 -9.4999999999999996e-01 -1.2810582246898260e+01 1.6186528254419503e+01 8.1829142774136940e+00 1 0 0 -867 1 3 -1.0500000000000000e+00 -1.1461395078265998e+01 1.4194482279531240e+01 5.9540899004490573e+00 1 0 0 -868 1 3 -1.0500000000000000e+00 5.4355508226374880e+00 1.6371676240781067e+01 5.9523953371586007e+00 0 0 0 -869 1 3 -1.0500000000000000e+00 6.5889448393182057e+00 1.4045610487796125e+01 6.1439231486978052e+00 0 0 0 -870 1 5 4.2499999999999999e-01 -1.2303637921787351e+01 1.7065464446927333e+01 8.0393139102372757e+00 1 0 0 -871 1 1 1.5750000000000000e+00 3.5275677694768159e+00 1.1777354695333322e+01 9.1931437178279722e+00 0 0 0 -872 1 2 2.1000000000000001e+00 -1.2685112265527499e+01 1.3369430390314744e+01 6.4359024875393231e+00 1 0 0 -873 1 2 2.1000000000000001e+00 -1.2764745750720230e+01 1.0414410392944081e+01 6.4280618196758432e+00 1 0 0 -874 1 3 -1.0500000000000000e+00 -1.2544129418050623e+01 1.3298246737339653e+01 8.0541308893949868e+00 1 0 0 -875 1 3 -1.0500000000000000e+00 -1.2899422299851542e+01 1.0507392314703441e+01 8.0528703655478253e+00 1 0 0 -876 1 4 -9.4999999999999996e-01 5.2212278834502932e+00 1.1703569772888418e+01 8.1828544574580064e+00 0 0 0 -877 1 3 -1.0500000000000000e+00 6.5704071848659780e+00 9.7115602039361448e+00 5.9540954146707854e+00 0 0 0 -878 1 3 -1.0500000000000000e+00 -1.2652629524673211e+01 1.1888740289825776e+01 5.9524475845137914e+00 1 0 0 -879 1 3 -1.0500000000000000e+00 -1.1499218746205949e+01 9.5627087106832143e+00 6.1439160615276585e+00 1 0 0 -880 1 5 4.2499999999999999e-01 5.7281515933265581e+00 1.2582412438419141e+01 8.0388892666496652e+00 0 0 0 -881 1 1 1.5750000000000000e+00 -9.3603927864488465e+00 1.0273669083913415e+01 9.1936233661194393e+00 1 0 0 -882 1 2 2.1000000000000001e+00 -5.4027908311748014e+00 -1.7852191591920860e+01 -6.4423999875116174e+00 1 1 1 -883 1 2 2.1000000000000001e+00 -5.1541886950179352e+00 1.2000275601569015e+01 -6.4345007553289859e+00 1 0 1 -884 1 3 -1.0500000000000000e+00 -5.3749756973895453e+00 9.1162952266749038e+00 -8.0605627427916939e+00 1 0 1 -885 1 3 -1.0500000000000000e+00 -5.0194697033740354e+00 1.1907548341371790e+01 -8.0594018260737599e+00 1 0 1 -886 1 4 -9.4999999999999996e-01 -7.6602542409070491e+00 1.0711060750080897e+01 -8.1893221273874310e+00 1 0 1 -887 1 3 -1.0500000000000000e+00 -9.0094074701008555e+00 1.2703195909859126e+01 -5.9607981827342975e+00 1 0 1 -888 1 3 -1.0500000000000000e+00 -5.2664879046879927e+00 1.0525968292949354e+01 -5.9587382228044579e+00 1 0 1 -889 1 3 -1.0500000000000000e+00 -6.4196629439277020e+00 1.2852015502374297e+01 -6.1503932553102407e+00 1 0 1 -890 1 5 4.2499999999999999e-01 -8.1670767718813568e+00 9.8323240619096737e+00 -8.0454342284319758e+00 1 0 1 -891 1 1 1.5750000000000000e+00 -6.7522099413499017e+00 1.4756558947084972e+01 9.1936323727388007e+00 1 0 0 -892 1 2 2.1000000000000001e+00 -7.7856279740588574e+00 1.3528195363213435e+01 -6.4424232658091753e+00 1 0 1 -893 1 2 2.1000000000000001e+00 -7.7060087959671275e+00 1.6483175890169566e+01 -6.4345031930632031e+00 1 0 1 -894 1 3 -1.0500000000000000e+00 -7.9268092601655393e+00 1.3599192115246709e+01 -8.0605653924195604e+00 1 0 1 -895 1 3 -1.0500000000000000e+00 -7.5712960116532937e+00 1.6390457132414308e+01 -8.0594014597887931e+00 1 0 1 -896 1 4 -9.4999999999999996e-01 -5.0521325823369825e+00 1.5193892557836794e+01 -8.1893952534646299e+00 1 0 1 -897 1 3 -1.0500000000000000e+00 -6.4012557391469294e+00 1.7186101532233774e+01 -5.9607858793978696e+00 1 0 1 -898 1 3 -1.0500000000000000e+00 -7.8183317428747330e+00 1.5008887211419324e+01 -5.9586911269344274e+00 1 0 1 -899 1 3 -1.0500000000000000e+00 -8.9714872285006528e+00 1.7334939869012782e+01 -6.1504040245545895e+00 1 0 1 -900 1 5 4.2499999999999999e-01 -5.5589691759804651e+00 1.4315086850375383e+01 -8.0459819775647716e+00 1 0 1 -901 1 1 1.5750000000000000e+00 -9.3442733480072278e+00 1.6260281622445302e+01 9.1931395426557110e+00 1 0 0 -902 1 2 2.1000000000000001e+00 -1.0133273070639682e+01 8.8865135585351283e+00 6.4359254506516130e+00 1 0 0 -903 1 2 2.1000000000000001e+00 -1.0156586250533065e+01 1.4897327970275054e+01 6.4280630778184857e+00 1 0 0 -904 1 3 -1.0500000000000000e+00 -1.0161302019375981e+01 -1.8082122656764607e+01 8.0541343934514202e+00 1 1 0 -905 1 3 -1.0500000000000000e+00 -1.0291257777350937e+01 1.4990303857072181e+01 8.0528666793281509e+00 1 0 0 -906 1 4 -9.4999999999999996e-01 -7.6505730793458735e+00 1.6186540928105540e+01 8.1828953469210077e+00 1 0 0 -907 1 3 -1.0500000000000000e+00 -6.3014405501587794e+00 1.4194458390634342e+01 5.9541017585236222e+00 1 0 0 -908 1 3 -1.0500000000000000e+00 -1.0044451276249209e+01 1.6371648291125627e+01 5.9523999323485963e+00 1 0 0 -909 1 3 -1.0500000000000000e+00 -8.8910624691465792e+00 1.4045613984800305e+01 6.1439241727047040e+00 1 0 0 -910 1 5 4.2499999999999999e-01 -7.1436715781015101e+00 1.7065429938006378e+01 8.0392210249142231e+00 1 0 0 -911 1 1 1.5750000000000000e+00 -1.1952418365405634e+01 1.1777344769910933e+01 9.1931467279769166e+00 1 0 0 -912 1 2 2.1000000000000001e+00 -7.5250893067069100e+00 1.3369431895710402e+01 6.4359125458494333e+00 1 0 0 -913 1 2 2.1000000000000001e+00 -7.6047401369908787e+00 1.0414397698876499e+01 6.4280497411191835e+00 1 0 0 -914 1 3 -1.0500000000000000e+00 -7.3841152575290465e+00 1.3298249173792914e+01 8.0541030584957483e+00 1 0 0 -915 1 3 -1.0500000000000000e+00 -7.7394250224018784e+00 1.0507387430609697e+01 8.0528732915954180e+00 1 0 0 -916 1 4 -9.4999999999999996e-01 -1.0258802640316311e+01 1.1703528516691946e+01 8.1828385357148221e+00 1 0 0 -917 1 3 -1.0500000000000000e+00 -8.9095901142621763e+00 9.7115620830072906e+00 5.9541024500382438e+00 1 0 0 -918 1 3 -1.0500000000000000e+00 -7.4926254257397229e+00 1.1888758199297200e+01 5.9524304645907566e+00 1 0 0 -919 1 3 -1.0500000000000000e+00 -6.3392300077947583e+00 9.5627130728697161e+00 6.1439197965438819e+00 1 0 0 -920 1 5 4.2499999999999999e-01 -9.7518639894871963e+00 1.2582402105100961e+01 8.0387424963826071e+00 1 0 0 -921 1 1 1.5750000000000000e+00 -4.2003781666602471e+00 1.0273659178062957e+01 9.1936255865073093e+00 1 0 0 -922 1 2 2.1000000000000001e+00 -2.4281380657306251e-01 -1.7852194978795438e+01 -6.4424104817889924e+00 1 1 1 -923 1 2 2.1000000000000001e+00 5.8073311176265463e-03 1.2000289091306779e+01 -6.4344887684447798e+00 1 0 1 -924 1 3 -1.0500000000000000e+00 -2.1499032318097377e-01 9.1162934469930086e+00 -8.0605336122239901e+00 1 0 1 -925 1 3 -1.0500000000000000e+00 1.4053305155494300e-01 1.1907552348135759e+01 -8.0594038296133501e+00 1 0 1 -926 1 4 -9.4999999999999996e-01 -2.5002851790322218e+00 1.0711019049960040e+01 -8.1893367336811629e+00 1 0 1 -927 1 3 -1.0500000000000000e+00 -3.8493992000608142e+00 1.2703200254186580e+01 -5.9607924527654337e+00 1 0 1 -928 1 3 -1.0500000000000000e+00 -1.0649173895659203e-01 1.0525953880245513e+01 -5.9587217128014212e+00 1 0 1 -929 1 3 -1.0500000000000000e+00 -1.2596509514345406e+00 1.2852010139898166e+01 -6.1503965479066123e+00 1 0 1 -930 1 5 4.2499999999999999e-01 -3.0070906737129794e+00 9.8323157767275227e+00 -8.0455750813439302e+00 1 0 1 -931 1 1 1.5750000000000000e+00 -1.5922020057366204e+00 1.4756558606205918e+01 9.1936300371528645e+00 1 0 0 -932 1 2 2.1000000000000001e+00 -2.6256342849090215e+00 1.3528209535884709e+01 -6.4424139428101448e+00 1 0 1 -933 1 2 2.1000000000000001e+00 -2.5460327371080291e+00 1.6483168361853000e+01 -6.4345035627546698e+00 1 0 1 -934 1 3 -1.0500000000000000e+00 -2.7668025513118506e+00 1.3599188282117982e+01 -8.0605804580563216e+00 1 0 1 -935 1 3 -1.0500000000000000e+00 -2.4112982996207268e+00 1.6390467789148698e+01 -8.0594086153186755e+00 1 0 1 -936 1 4 -9.4999999999999996e-01 1.0786065194175976e-01 1.5193881944029133e+01 -8.1893757702455225e+00 1 0 1 -937 1 3 -1.0500000000000000e+00 -1.2412111852687584e+00 1.7186124642348755e+01 -5.9607969511890113e+00 1 0 1 -938 1 3 -1.0500000000000000e+00 -2.6583342475974394e+00 1.5008857192020724e+01 -5.9586852469727489e+00 1 0 1 -939 1 3 -1.0500000000000000e+00 -3.8114931308841973e+00 1.7334943467465425e+01 -6.1504023276487931e+00 1 0 1 -940 1 5 4.2499999999999999e-01 -3.9893427220104982e-01 1.4315121673056158e+01 -8.0458809439058001e+00 1 0 1 -941 1 1 1.5750000000000000e+00 -4.1842647733189811e+00 1.6260280900738014e+01 9.1931373541656640e+00 1 0 0 -942 1 2 2.1000000000000001e+00 -4.9732694000809214e+00 8.8864994991107871e+00 6.4359156339852426e+00 1 0 0 -943 1 2 2.1000000000000001e+00 -4.9965619586163417e+00 1.4897336869865573e+01 6.4280633746036724e+00 1 0 0 -944 1 3 -1.0500000000000000e+00 -5.0013096301578557e+00 -1.8082119246981069e+01 8.0541515174107730e+00 1 1 0 -945 1 3 -1.0500000000000000e+00 -5.1312553567957622e+00 1.4990293360305930e+01 8.0528735880481079e+00 1 0 0 -946 1 4 -9.4999999999999996e-01 -2.4905823373432447e+00 1.6186527481653730e+01 8.1829144834701140e+00 1 0 0 -947 1 3 -1.0500000000000000e+00 -1.1413951190011318e+00 1.4194482448426054e+01 5.9540897749393551e+00 1 0 0 -948 1 3 -1.0500000000000000e+00 -4.8844497340440238e+00 1.6371676351109574e+01 5.9523950906844671e+00 1 0 0 -949 1 3 -1.0500000000000000e+00 -3.7310550651778556e+00 1.4045610398815395e+01 6.1439228472924778e+00 1 0 0 -950 1 5 4.2499999999999999e-01 -1.9836375134124715e+00 1.7065464974264582e+01 8.0393139158871101e+00 1 0 0 -951 1 1 1.5750000000000000e+00 -6.7924322972263633e+00 1.1777354850443714e+01 9.1931438146612265e+00 1 0 0 -952 1 2 2.1000000000000001e+00 -2.3651126781701990e+00 1.3369430006310449e+01 6.4359026051072608e+00 1 0 0 -953 1 2 2.1000000000000001e+00 -2.4447460827353300e+00 1.0414411083296347e+01 6.4280619889271122e+00 1 0 0 -954 1 3 -1.0500000000000000e+00 -2.2241294262454936e+00 1.3298247110263322e+01 8.0541315514418770e+00 1 0 0 -955 1 3 -1.0500000000000000e+00 -2.5794223333527002e+00 1.0507391785141490e+01 8.0528704188601807e+00 1 0 0 -956 1 4 -9.4999999999999996e-01 -5.0987720093367859e+00 1.1703570724197846e+01 8.1828547460418974e+00 1 0 0 -957 1 3 -1.0500000000000000e+00 -3.7495921260073386e+00 9.7115606887493051e+00 5.9540950468016760e+00 1 0 0 -958 1 3 -1.0500000000000000e+00 -2.3326296115329681e+00 1.1888740063197147e+01 5.9524471808153692e+00 1 0 0 -959 1 3 -1.0500000000000000e+00 -1.1792192073374927e+00 9.5627085299782664e+00 6.1439162617713929e+00 1 0 0 -960 1 5 4.2499999999999999e-01 -4.5918481348798545e+00 1.2582412837426194e+01 8.0388923615312642e+00 1 0 0 -961 1 1 1.5750000000000000e+00 7.9060983098709947e-01 -1.6623787873959273e+01 9.1936241221863249e+00 0 1 0 -962 1 2 2.1000000000000001e+00 4.9735388822158324e+00 -8.8863555261994307e+00 -6.4424092998091940e+00 0 1 1 -963 1 2 2.1000000000000001e+00 4.9968241249244869e+00 -1.4897218761397980e+01 -6.4345103916532667e+00 0 1 1 -964 1 3 -1.0500000000000000e+00 4.7760131551751499e+00 -1.7781192163992994e+01 -8.0605609776657161e+00 0 1 1 -965 1 3 -1.0500000000000000e+00 5.1315425565977346e+00 -1.4989934535773086e+01 -8.0594167673316317e+00 0 1 1 -966 1 4 -9.4999999999999996e-01 2.4907718354025317e+00 -1.6186388039551588e+01 -8.1893254397424453e+00 0 1 1 -967 1 3 -1.0500000000000000e+00 1.1416263133331963e+00 -1.4194270381621900e+01 -5.9607865702829335e+00 0 1 1 -968 1 3 -1.0500000000000000e+00 4.8845019877675924e+00 -1.6371500937997865e+01 -5.9587293889869883e+00 0 1 1 -969 1 3 -1.0500000000000000e+00 3.7313268130514974e+00 -1.4045419052787359e+01 -6.1504066950524141e+00 0 1 1 -970 1 5 4.2499999999999999e-01 1.9839009717795477e+00 -1.7065170720648808e+01 -8.0454457650585169e+00 0 1 1 -971 1 1 1.5750000000000000e+00 3.3987763835280393e+00 -1.2140905346190326e+01 9.1936279670263232e+00 0 1 0 -972 1 2 2.1000000000000001e+00 2.3653801838590205e+00 -1.3369283232827510e+01 -6.4424200206570612e+00 0 1 1 -973 1 2 2.1000000000000001e+00 2.4449786524018275e+00 -1.0414270762708139e+01 -6.4344947097414282e+00 0 1 1 -974 1 3 -1.0500000000000000e+00 2.2241844110169264e+00 -1.3298260551948676e+01 -8.0605520411220617e+00 0 1 1 -975 1 3 -1.0500000000000000e+00 2.5796912969422721e+00 -1.0507005922241635e+01 -8.0593940590064257e+00 0 1 1 -976 1 4 -9.4999999999999996e-01 5.0988702527267655e+00 -1.1703548043198262e+01 -8.1893609630806132e+00 0 1 1 -977 1 3 -1.0500000000000000e+00 3.7497226337578446e+00 -9.7113711982098554e+00 -5.9607926003920886e+00 0 1 1 -978 1 3 -1.0500000000000000e+00 2.3326731922370776e+00 -1.1888581465336951e+01 -5.9587182867267821e+00 0 1 1 -979 1 3 -1.0500000000000000e+00 1.1795119362153041e+00 -9.5625531841926961e+00 -6.1503935088776673e+00 0 1 1 -980 1 5 4.2499999999999999e-01 4.5920550844469084e+00 -1.2582296526462123e+01 -8.0457276875216497e+00 0 1 1 -981 1 1 1.5750000000000000e+00 8.0672847412836290e-01 -1.0637207792244846e+01 9.1931446898855285e+00 0 1 0 -982 1 2 2.1000000000000001e+00 1.7735241745661767e-02 -1.8010958050662659e+01 6.4359214102136661e+00 0 1 0 -983 1 2 2.1000000000000001e+00 -5.5984692701720462e-03 -1.2000144101042064e+01 6.4280608641863495e+00 0 1 0 -984 1 3 -1.0500000000000000e+00 2.1504497388601607e-01 -9.1163020892610103e+00 8.0541133501916313e+00 0 1 0 -985 1 3 -1.0500000000000000e+00 -1.4026752501513329e-01 -1.1907157403873917e+01 8.0528737619875344e+00 0 1 0 -986 1 4 -9.4999999999999996e-01 2.5003778817693600e+00 -1.0710992981939540e+01 8.1828509244580552e+00 0 1 0 -987 1 3 -1.0500000000000000e+00 3.8495354817159484e+00 -1.2703010397069693e+01 5.9540985576838814e+00 0 1 0 -988 1 3 -1.0500000000000000e+00 1.0654000383107132e-01 -1.0525822550974517e+01 5.9524296977026996e+00 0 1 0 -989 1 3 -1.0500000000000000e+00 1.2599376891911795e+00 -1.2851860677111500e+01 6.1439254063881670e+00 0 1 0 -990 1 5 4.2499999999999999e-01 3.0073045113687797e+00 -9.8321299051036668e+00 8.0388731267178173e+00 0 1 0 -991 1 1 1.5750000000000000e+00 -1.8014219144703780e+00 -1.5120102745243090e+01 9.1931438625465880e+00 0 1 0 -992 1 2 2.1000000000000001e+00 2.6258996467147959e+00 -1.3528044251547879e+01 6.4359209604334673e+00 0 1 0 -993 1 2 2.1000000000000001e+00 2.5462735712870828e+00 -1.6483086989741455e+01 6.4280448059299271e+00 0 1 0 -994 1 3 -1.0500000000000000e+00 2.7668677793957492e+00 -1.3599231581151475e+01 8.0541173845552336e+00 0 1 0 -995 1 3 -1.0500000000000000e+00 2.4115859888696161e+00 -1.6390097180934195e+01 8.0528587154913431e+00 0 1 0 -996 1 4 -9.4999999999999996e-01 -1.0775774466886645e-01 -1.5193886699232316e+01 8.1828630796662409e+00 0 1 0 -997 1 3 -1.0500000000000000e+00 1.2414435679215039e+00 -1.7185906236511268e+01 5.9541111590081126e+00 0 1 0 -998 1 3 -1.0500000000000000e+00 2.6583690581402628e+00 -1.5008709077371243e+01 5.9524182019502625e+00 0 1 0 -999 1 3 -1.0500000000000000e+00 3.8117604092858510e+00 -1.7334728765347329e+01 6.1439089845392907e+00 0 1 0 -1000 1 5 4.2499999999999999e-01 3.9913087790997537e-01 -1.4315031645600069e+01 8.0389424860193159e+00 0 1 0 -1001 1 1 1.5750000000000000e+00 5.9506242267994338e+00 -1.6623797722718635e+01 9.1936266671202027e+00 0 1 0 -1002 1 2 2.1000000000000001e+00 -1.0506484231044222e+01 -8.8863590027846140e+00 -6.4424197062906847e+00 1 1 1 -1003 1 2 2.1000000000000001e+00 -1.0483178876911868e+01 -1.4897205772908450e+01 -6.4344990737011551e+00 1 1 1 -1004 1 3 -1.0500000000000000e+00 9.9359983241624121e+00 -1.7781194811616796e+01 -8.0605324246202574e+00 0 1 1 -1005 1 3 -1.0500000000000000e+00 -1.0348454886651519e+01 -1.4989930517170308e+01 -8.0594191130608888e+00 1 1 1 -1006 1 4 -9.4999999999999996e-01 7.6507412164599700e+00 -1.6186429673609464e+01 -8.1893398094371470e+00 0 1 1 -1007 1 3 -1.0500000000000000e+00 6.3016333555911750e+00 -1.4194266019203811e+01 -5.9607817823241254e+00 0 1 1 -1008 1 3 -1.0500000000000000e+00 -1.0595502565248184e+01 -1.6371514961221607e+01 -5.9587127227690981e+00 1 1 1 -1009 1 3 -1.0500000000000000e+00 8.8913398738443519e+00 -1.4045424689210986e+01 -6.1504098107569085e+00 0 1 1 -1010 1 5 4.2499999999999999e-01 7.1438876889407545e+00 -1.7065178919134084e+01 -8.0455854917667171e+00 0 1 1 -1011 1 1 1.5750000000000000e+00 -1.2081215850500879e+01 -1.2140905395609227e+01 9.1936259420414075e+00 1 1 0 -1012 1 2 2.1000000000000001e+00 7.5253738692339525e+00 -1.3369269642659075e+01 -6.4424111597687768e+00 0 1 1 -1013 1 2 2.1000000000000001e+00 7.6049545385687836e+00 -1.0414276974615465e+01 -6.4344945980992394e+00 0 1 1 -1014 1 3 -1.0500000000000000e+00 7.3841902361699852e+00 -1.3298264178152394e+01 -8.0605659001293244e+00 0 1 1 -1015 1 3 -1.0500000000000000e+00 7.7396886594995777e+00 -1.0506995362793919e+01 -8.0594009666794690e+00 0 1 1 -1016 1 4 -9.4999999999999996e-01 -1.0381136033782756e+01 -1.1703557162467805e+01 -8.1893415275727754e+00 1 1 1 -1017 1 3 -1.0500000000000000e+00 8.9097683875275777e+00 -9.7113477429998554e+00 -5.9608036880169948e+00 0 1 1 -1018 1 3 -1.0500000000000000e+00 7.4926707750249442e+00 -1.1888611603990626e+01 -5.9587129622138315e+00 0 1 1 -1019 1 3 -1.0500000000000000e+00 6.3395050264705226e+00 -9.5625498048806605e+00 -6.1503917722438839e+00 0 1 1 -1020 1 5 4.2499999999999999e-01 9.7520894232513022e+00 -1.2582261952400280e+01 -8.0456251567187103e+00 0 1 1 -1021 1 1 1.5750000000000000e+00 5.9667370778486841e+00 -1.0637208378655330e+01 9.1931422048264544e+00 0 1 0 -1022 1 2 2.1000000000000001e+00 5.1777388423707791e+00 -1.8010972751178073e+01 6.4359121754500244e+00 0 1 0 -1023 1 2 2.1000000000000001e+00 5.1544257741572128e+00 -1.2000135136612140e+01 6.4280617964993638e+00 0 1 0 -1024 1 3 -1.0500000000000000e+00 5.3750375393141656e+00 -9.1162982390217753e+00 8.0541305365780431e+00 0 1 0 -1025 1 3 -1.0500000000000000e+00 5.0197352902290149e+00 -1.1907167532088971e+01 8.0528807818657455e+00 0 1 0 -1026 1 4 -9.4999999999999996e-01 -1.2979631380919937e+01 -1.0711006291129422e+01 8.1828700503208935e+00 1 1 0 -1027 1 3 -1.0500000000000000e+00 -1.1630417926343309e+01 -1.2702985659105673e+01 5.9540877407865125e+00 1 1 0 -1028 1 3 -1.0500000000000000e+00 5.2665416753772529e+00 -1.0525794189955786e+01 5.9524244742663583e+00 0 1 0 -1029 1 3 -1.0500000000000000e+00 6.4199440092225899e+00 -1.2851863874618857e+01 6.1439235679236717e+00 0 1 0 -1030 1 5 4.2499999999999999e-01 -1.2472661329901149e+01 -9.8320942016287756e+00 8.0389673105729180e+00 1 1 0 -1031 1 1 1.5750000000000000e+00 3.3585649047189889e+00 -1.5120093348845725e+01 9.1931411954480566e+00 0 1 0 -1032 1 2 2.1000000000000001e+00 -1.2854123594330217e+01 -1.3528045164039147e+01 6.4359116103016181e+00 1 1 0 -1033 1 2 2.1000000000000001e+00 -1.2933732590309141e+01 -1.6483074437729339e+01 6.4280564286910398e+00 1 1 0 -1034 1 3 -1.0500000000000000e+00 -1.2713145906083197e+01 -1.3599233632746742e+01 8.0541449495269859e+00 1 1 0 -1035 1 3 -1.0500000000000000e+00 -1.3068411221795856e+01 -1.6390092450304788e+01 8.0528554659863651e+00 1 1 0 -1036 1 4 -9.4999999999999996e-01 5.0522727200298299e+00 -1.5193845531977976e+01 8.1828789851171209e+00 0 1 0 -1037 1 3 -1.0500000000000000e+00 6.4014411247152445e+00 -1.7185907439712917e+01 5.9541046118211618e+00 0 1 0 -1038 1 3 -1.0500000000000000e+00 -1.2821635126045146e+01 -1.5008727883675213e+01 5.9524348860327301e+00 1 1 0 -1039 1 3 -1.0500000000000000e+00 -1.1668227901039566e+01 -1.7334733486964044e+01 6.1439059255523709e+00 1 1 0 -1040 1 5 4.2499999999999999e-01 5.5591473737227073e+00 -1.4315020006199346e+01 8.0390921650199161e+00 0 1 0 -1041 1 1 1.5750000000000000e+00 -9.5293899139307694e+00 -1.6623787874027308e+01 9.1936237921326978e+00 1 1 0 -1042 1 2 2.1000000000000001e+00 -5.3464608308947765e+00 -8.8863556911962096e+00 -6.4424092176216048e+00 1 1 1 -1043 1 2 2.1000000000000001e+00 -5.3231748952036835e+00 -1.4897218973116527e+01 -6.4345104241940962e+00 1 1 1 -1044 1 3 -1.0500000000000000e+00 -5.5439872108319319e+00 -1.7781192038243685e+01 -8.0605608257717840e+00 1 1 1 -1045 1 3 -1.0500000000000000e+00 -5.1884582357209057e+00 -1.4989934983843813e+01 -8.0594168014332030e+00 1 1 1 -1046 1 4 -9.4999999999999996e-01 -7.8292281421606535e+00 -1.6186388852721340e+01 -8.1893254252454835e+00 1 1 1 -1047 1 3 -1.0500000000000000e+00 -9.1783739996627851e+00 -1.4194270057895784e+01 -5.9607866851716160e+00 1 1 1 -1048 1 3 -1.0500000000000000e+00 -5.4354986326112078e+00 -1.6371500383854073e+01 -5.9587300155577916e+00 1 1 1 -1049 1 3 -1.0500000000000000e+00 -6.5886729673149071e+00 -1.4045419390766746e+01 -6.1504069109579946e+00 1 1 1 -1050 1 5 4.2499999999999999e-01 -8.3360989250281836e+00 -1.7065170615191157e+01 -8.0454468626928328e+00 1 1 1 -1051 1 1 1.5750000000000000e+00 -6.9212237057752120e+00 -1.2140905279613698e+01 9.1936281507656687e+00 1 1 0 -1052 1 2 2.1000000000000001e+00 -7.9546199637027923e+00 -1.3369283212241633e+01 -6.4424198458964543e+00 1 1 1 -1053 1 2 2.1000000000000001e+00 -7.8750220126689445e+00 -1.0414269957845629e+01 -6.4344945451348980e+00 1 1 1 -1054 1 3 -1.0500000000000000e+00 -8.0958159273297188e+00 -1.3298260211663301e+01 -8.0605513382597493e+00 1 1 1 -1055 1 3 -1.0500000000000000e+00 -7.7403088366973201e+00 -1.0507006356603398e+01 -8.0593941765754753e+00 1 1 1 -1056 1 4 -9.4999999999999996e-01 -5.2211297865863031e+00 -1.1703547420839435e+01 -8.1893607408242381e+00 1 1 1 -1057 1 3 -1.0500000000000000e+00 -6.5702769425775092e+00 -9.7113707796203723e+00 -5.9607925028876929e+00 1 1 1 -1058 1 3 -1.0500000000000000e+00 -7.9873270257999014e+00 -1.1888581912789562e+01 -5.9587188809513618e+00 1 1 1 -1059 1 3 -1.0500000000000000e+00 -9.1404883090905678e+00 -9.5625534027958778e+00 -6.1503936739305480e+00 1 1 1 -1060 1 5 4.2499999999999999e-01 -5.7279445458000602e+00 -1.2582296132873992e+01 -8.0457254720891491e+00 1 1 1 -1061 1 1 1.5750000000000000e+00 -9.5132712414377334e+00 -1.0637207901225382e+01 9.1931444515859475e+00 1 1 0 -1062 1 2 2.1000000000000001e+00 -1.0302264392719938e+01 -1.8010958511740707e+01 6.4359215057736137e+00 1 1 0 -1063 1 2 2.1000000000000001e+00 -1.0325597763836218e+01 -1.2000143885660425e+01 6.4280610801444311e+00 1 1 0 -1064 1 3 -1.0500000000000000e+00 -1.0104955208427846e+01 -9.1163013593801878e+00 8.0541136736620658e+00 1 1 0 -1065 1 3 -1.0500000000000000e+00 -1.0460267735536464e+01 -1.1907157783691902e+01 8.0528740633627187e+00 1 1 0 -1066 1 4 -9.4999999999999996e-01 -7.8196223206297599e+00 -1.0710993626792270e+01 8.1828507388406777e+00 1 1 0 -1067 1 3 -1.0500000000000000e+00 -6.4704642052545438e+00 -1.2703010171579383e+01 5.9540992478015298e+00 1 1 0 -1068 1 3 -1.0500000000000000e+00 -1.0213460429886737e+01 -1.0525822438026575e+01 5.9524290073249873e+00 1 1 0 -1069 1 3 -1.0500000000000000e+00 -9.0600631078363385e+00 -1.2851860507306093e+01 6.1439252136403280e+00 1 1 0 -1070 1 5 4.2499999999999999e-01 -7.3126955303015109e+00 -9.8321299462400891e+00 8.0388711780317124e+00 1 1 0 -1071 1 1 1.5750000000000000e+00 -1.2121421966983748e+01 -1.5120103097951539e+01 9.1931440500472021e+00 1 1 0 -1072 1 2 2.1000000000000001e+00 -7.6941002854421603e+00 -1.3528043511188180e+01 6.4359209951073471e+00 1 1 0 -1073 1 2 2.1000000000000001e+00 -7.7737266980076587e+00 -1.6483087090498845e+01 6.4280445509300250e+00 1 1 0 -1074 1 3 -1.0500000000000000e+00 -7.5531320715693777e+00 -1.3599231720429650e+01 8.0541168058333739e+00 1 1 0 -1075 1 3 -1.0500000000000000e+00 -7.9084140951184896e+00 -1.6390096710853786e+01 8.0528583515780205e+00 1 1 0 -1076 1 4 -9.4999999999999996e-01 -1.0427757546752302e+01 -1.5193886230508655e+01 8.1828631556698568e+00 1 1 0 -1077 1 3 -1.0500000000000000e+00 -9.0785565111582986e+00 -1.7185905911303450e+01 5.9541108650454166e+00 1 1 0 -1078 1 3 -1.0500000000000000e+00 -7.6616310609012928e+00 -1.5008709807568991e+01 5.9524186852294534e+00 1 1 0 -1079 1 3 -1.0500000000000000e+00 -6.5082396808725838e+00 -1.7334728922656321e+01 6.1439092326832387e+00 1 1 0 -1080 1 5 4.2499999999999999e-01 -9.9208689362280111e+00 -1.4315031144537746e+01 8.0389449231468681e+00 1 1 0 -1081 1 1 1.5750000000000000e+00 -4.3693757223617666e+00 -1.6623797501862640e+01 9.1936263177833482e+00 1 1 0 -1082 1 2 2.1000000000000001e+00 -1.8648460984142190e-01 -8.8863586813278168e+00 -6.4424195624530487e+00 1 1 1 -1083 1 2 2.1000000000000001e+00 -1.6317858587872180e-01 -1.4897205481208472e+01 -6.4344990010154151e+00 1 1 1 -1084 1 3 -1.0500000000000000e+00 -3.8400153394278114e-01 -1.7781193820588967e+01 -8.0605319542434177e+00 1 1 1 -1085 1 3 -1.0500000000000000e+00 -2.8454999893785526e-02 -1.4989931453633501e+01 -8.0594185181939455e+00 1 1 1 -1086 1 4 -9.4999999999999996e-01 -2.6692591084942503e+00 -1.6186430683271997e+01 -8.1893402866282834e+00 1 1 1 -1087 1 3 -1.0500000000000000e+00 -4.0183661906291688e+00 -1.4194265831610833e+01 -5.9607808745353807e+00 1 1 1 -1088 1 3 -1.0500000000000000e+00 -2.7550238935744531e-01 -1.6371514908008283e+01 -5.9587140310484852e+00 1 1 1 -1089 1 3 -1.0500000000000000e+00 -1.4286614237111728e+00 -1.4045424230641748e+01 -6.1504096183736543e+00 1 1 1 -1090 1 5 4.2499999999999999e-01 -3.1761126419061068e+00 -1.7065179317613428e+01 -8.0455892156983246e+00 1 1 1 -1091 1 1 1.5750000000000000e+00 -1.7612158961272968e+00 -1.2140905479144390e+01 9.1936260759968853e+00 1 1 0 -1092 1 2 2.1000000000000001e+00 -2.7946263215985852e+00 -1.3369269256921584e+01 -6.4424110744123801e+00 1 1 1 -1093 1 2 2.1000000000000001e+00 -2.7150458550199357e+00 -1.0414277514160078e+01 -6.4344944256095680e+00 1 1 1 -1094 1 3 -1.0500000000000000e+00 -2.9358094427693269e+00 -1.3298264285990225e+01 -8.0605669808735332e+00 1 1 1 -1095 1 3 -1.0500000000000000e+00 -2.5803112238951149e+00 -1.0506994842385364e+01 -8.0594011087445736e+00 1 1 1 -1096 1 4 -9.4999999999999996e-01 -6.1136511004701077e-02 -1.1703557808529808e+01 -8.1893413821177354e+00 1 1 1 -1097 1 3 -1.0500000000000000e+00 -1.4102319921708553e+00 -9.7113476086937851e+00 -5.9608039429212827e+00 1 1 1 -1098 1 3 -1.0500000000000000e+00 -2.8273291376600058e+00 -1.1888611910680980e+01 -5.9587126204693064e+00 1 1 1 -1099 1 3 -1.0500000000000000e+00 -3.9804942634357019e+00 -9.5625498131225903e+00 -6.1503916166810431e+00 1 1 1 -1100 1 5 4.2499999999999999e-01 -5.6791014020577890e-01 -1.2582261570234339e+01 -8.0456254549334609e+00 1 1 1 -1101 1 1 1.5750000000000000e+00 -4.3532626822440168e+00 -1.0637208536663195e+01 9.1931420264587729e+00 1 1 0 -1102 1 2 2.1000000000000001e+00 -5.1422605340029284e+00 -1.8010972814526962e+01 6.4359120870863116e+00 1 1 0 -1103 1 2 2.1000000000000001e+00 -5.1655741403261368e+00 -1.2000135207445506e+01 6.4280620600064111e+00 1 1 0 -1104 1 3 -1.0500000000000000e+00 -4.9449629476468537e+00 -9.1162979298605773e+00 8.0541307780712827e+00 1 1 0 -1105 1 3 -1.0500000000000000e+00 -5.3002653908317328e+00 -1.1907167772463211e+01 8.0528808659252675e+00 1 1 0 -1106 1 4 -9.4999999999999996e-01 -2.6596311317213690e+00 -1.0711006131470690e+01 8.1828701429922646e+00 1 1 0 -1107 1 3 -1.0500000000000000e+00 -1.3104180489574517e+00 -1.2702985515202105e+01 5.9540876691461300e+00 1 1 0 -1108 1 3 -1.0500000000000000e+00 -5.0534589320363521e+00 -1.0525793717166195e+01 5.9524239638193972e+00 1 1 0 -1109 1 3 -1.0500000000000000e+00 -3.9000552799467680e+00 -1.2851864283020131e+01 6.1439229758272287e+00 1 1 0 -1110 1 5 4.2499999999999999e-01 -2.1526612288429927e+00 -9.8320937887400692e+00 8.0389686940673108e+00 1 1 0 -1111 1 1 1.5750000000000000e+00 -6.9614351741271125e+00 -1.5120093227433923e+01 9.1931413794662760e+00 1 1 0 -1112 1 2 2.1000000000000001e+00 -2.5341240788726989e+00 -1.3528045681933817e+01 6.4359119500026907e+00 1 1 0 -1113 1 2 2.1000000000000001e+00 -2.6137328955640973e+00 -1.6483073671230674e+01 6.4280561366629687e+00 1 1 0 -1114 1 3 -1.0500000000000000e+00 -2.3931455622464295e+00 -1.3599233318386894e+01 8.0541451348176771e+00 1 1 0 -1115 1 3 -1.0500000000000000e+00 -2.7484109330614652e+00 -1.6390092942449684e+01 8.0528560015686210e+00 1 1 0 -1116 1 4 -9.4999999999999996e-01 -5.2677274043188298e+00 -1.5193844862391190e+01 8.1828790257998492e+00 1 1 0 -1117 1 3 -1.0500000000000000e+00 -3.9185585465782733e+00 -1.7185907339500744e+01 5.9541042049943371e+00 1 1 0 -1118 1 3 -1.0500000000000000e+00 -2.5016349383751777e+00 -1.5008727970228067e+01 5.9524344787992991e+00 1 1 0 -1119 1 3 -1.0500000000000000e+00 -1.3482285748874521e+00 -1.7334733258778282e+01 6.1439062228621797e+00 1 1 0 -1120 1 5 4.2499999999999999e-01 -4.7608525391156977e+00 -1.4315020002600260e+01 8.0390931457615267e+00 1 1 0 -1121 1 1 1.5750000000000000e+00 8.4695165366353464e-01 -7.6579835812050305e+00 9.1936288874475025e+00 0 1 0 -1122 1 2 2.1000000000000001e+00 5.0298854047814761e+00 7.9466019669347077e-02 -6.4424144556152356e+00 0 1 1 -1123 1 2 2.1000000000000001e+00 5.0531536696119623e+00 -5.9314030709104628e+00 -6.4345137045491718e+00 0 1 1 -1124 1 3 -1.0500000000000000e+00 4.8323591387051597e+00 -8.8153742682486840e+00 -8.0605820239111772e+00 0 1 1 -1125 1 3 -1.0500000000000000e+00 5.1878732372825311e+00 -6.0241061595734156e+00 -8.0594120212256826e+00 0 1 1 -1126 1 4 -9.4999999999999996e-01 2.5470666548004353e+00 -7.2206258319811312e+00 -8.1893702843091258e+00 0 1 1 -1127 1 3 -1.0500000000000000e+00 1.1979474982824225e+00 -5.2284455720511929e+00 -5.9607876425440542e+00 0 1 1 -1128 1 3 -1.0500000000000000e+00 4.9408304873956261e+00 -7.4056780595905938e+00 -5.9586989539517790e+00 0 1 1 -1129 1 3 -1.0500000000000000e+00 3.7876635127476206e+00 -5.0795967839315637e+00 -6.1504077701680906e+00 0 1 1 -1130 1 5 4.2499999999999999e-01 2.0402139399280124e+00 -8.0994421271782215e+00 -8.0457925512527595e+00 0 1 1 -1131 1 1 1.5750000000000000e+00 3.4551102318040119e+00 -3.1750602373809240e+00 9.1936249963033703e+00 0 1 0 -1132 1 2 2.1000000000000001e+00 2.4217092647353429e+00 -4.4034682343922888e+00 -6.4424100556567545e+00 0 1 1 -1133 1 2 2.1000000000000001e+00 2.5013293209638849e+00 -1.4484603202585618e+00 -6.4344992392404317e+00 0 1 1 -1134 1 3 -1.0500000000000000e+00 2.2805060226959757e+00 -4.3324466752627728e+00 -8.0605363775723244e+00 0 1 1 -1135 1 3 -1.0500000000000000e+00 2.6360394328354282e+00 -1.5411974066626648e+00 -8.0594077778299429e+00 0 1 1 -1136 1 4 -9.4999999999999996e-01 5.1552544755530079e+00 -2.7376679909019241e+00 -8.1893317299450903e+00 0 1 1 -1137 1 3 -1.0500000000000000e+00 3.8060930080128710e+00 -7.4554775156575559e-01 -5.9607837224071307e+00 0 1 1 -1138 1 3 -1.0500000000000000e+00 2.3890075299204767e+00 -2.9227581668061351e+00 -5.9587353346909673e+00 0 1 1 -1139 1 3 -1.0500000000000000e+00 1.2358408994011736e+00 -5.9670616076288141e-01 -6.1504018482632379e+00 0 1 1 -1140 1 5 4.2499999999999999e-01 4.6483926264102795e+00 -3.6164252934885788e+00 -8.0454920049899243e+00 0 1 1 -1141 1 1 1.5750000000000000e+00 8.6307055672640232e-01 -1.6713754640994978e+00 9.1931460949904640e+00 0 1 0 -1142 1 2 2.1000000000000001e+00 7.4067440539106855e-02 -9.0451227689768317e+00 6.4359123217975327e+00 0 1 0 -1143 1 2 2.1000000000000001e+00 5.0752316497217009e-02 -3.0343466932277092e+00 6.4280512560994687e+00 0 1 0 -1144 1 3 -1.0500000000000000e+00 2.7137419103710414e-01 -1.5049744182525160e-01 8.0541123492163607e+00 0 1 0 -1145 1 3 -1.0500000000000000e+00 -8.3917914878398392e-02 -2.9413479949048895e+00 8.0528600947866131e+00 0 1 0 -1146 1 4 -9.4999999999999996e-01 2.5567365503950334e+00 -1.7451597138855846e+00 8.1828414199204254e+00 0 1 0 -1147 1 3 -1.0500000000000000e+00 3.9059034396848951e+00 -3.7371848336857560e+00 5.9541096293006248e+00 0 1 0 -1148 1 3 -1.0500000000000000e+00 1.6286724521224549e-01 -1.5599986393757455e+00 5.9524414687461746e+00 0 1 0 -1149 1 3 -1.0500000000000000e+00 1.3162680069554646e+00 -3.8860046896279545e+00 6.1439117370450713e+00 0 1 0 -1150 1 5 4.2499999999999999e-01 3.0636187093141718e+00 -8.6634582863043264e-01 8.0388105803397210e+00 0 1 0 -1151 1 1 1.5750000000000000e+00 -1.7450965412416704e+00 -6.1542721885858267e+00 9.1931396400753584e+00 0 1 0 -1152 1 2 2.1000000000000001e+00 2.6822454390238182e+00 -4.5622313652435196e+00 6.4359253215799903e+00 0 1 0 -1153 1 2 2.1000000000000001e+00 2.6026017072422256e+00 -7.5172435230657051e+00 6.4280525353786011e+00 0 1 0 -1154 1 3 -1.0500000000000000e+00 2.8231982980173314e+00 -4.6333936871729211e+00 8.0541324435706265e+00 0 1 0 -1155 1 3 -1.0500000000000000e+00 2.4679139242312864e+00 -7.4242702203153303e+00 8.0528635321919779e+00 0 1 0 -1156 1 4 -9.4999999999999996e-01 -5.1408619376051234e-02 -6.2280255545507099e+00 8.1829007040250481e+00 0 1 0 -1157 1 3 -1.0500000000000000e+00 1.2977674624764681e+00 -8.2200857847518538e+00 5.9541052800705856e+00 0 1 0 -1158 1 3 -1.0500000000000000e+00 2.7147125497670821e+00 -6.0428853524192228e+00 5.9523886568029081e+00 0 1 0 -1159 1 3 -1.0500000000000000e+00 3.8680955259932048e+00 -8.3689256292345569e+00 6.1439186514543209e+00 0 1 0 -1160 1 5 4.2499999999999999e-01 4.5549352909885421e-01 -5.3491180364217001e+00 8.0392291387924644e+00 0 1 0 -1161 1 1 1.5750000000000000e+00 6.0069661936035175e+00 -7.6579937548320185e+00 9.1936316044666739e+00 0 1 0 -1162 1 2 2.1000000000000001e+00 -1.0450137639744804e+01 7.9463299035463564e-02 -6.4424243710353402e+00 1 1 1 -1163 1 2 2.1000000000000001e+00 -1.0426849451533693e+01 -5.9313896376259745e+00 -6.4345018460644283e+00 1 1 1 -1164 1 3 -1.0500000000000000e+00 9.9923438028197751e+00 -8.8153761390063448e+00 -8.0605530520838684e+00 0 1 1 -1165 1 3 -1.0500000000000000e+00 -1.0292123773060068e+01 -6.0241018369519264e+00 -8.0594139253470427e+00 1 1 1 -1166 1 4 -9.4999999999999996e-01 7.7070346980525173e+00 -7.2206693221354694e+00 -8.1893857246142900e+00 0 1 1 -1167 1 3 -1.0500000000000000e+00 6.3579542845899226e+00 -5.2284417436908193e+00 -5.9607824168769161e+00 0 1 1 -1168 1 3 -1.0500000000000000e+00 -1.0539173651568435e+01 -7.4056923085044541e+00 -5.9586827688544748e+00 1 1 1 -1169 1 3 -1.0500000000000000e+00 8.9476763873501461e+00 -5.0796014856025877e+00 -6.1504115174662424e+00 0 1 1 -1170 1 5 4.2499999999999999e-01 7.2001993237605930e+00 -8.0994521615003521e+00 -8.0459408726587203e+00 0 1 1 -1171 1 1 1.5750000000000000e+00 -1.2024881927933214e+01 -3.1750599741083469e+00 9.1936226503397407e+00 1 1 0 -1172 1 2 2.1000000000000001e+00 7.5817028306539775e+00 -4.4034548242472553e+00 -6.4424012953316998e+00 0 1 1 -1173 1 2 2.1000000000000001e+00 7.6613050161260396e+00 -1.4484663840709260e+00 -6.4344990879805639e+00 0 1 1 -1174 1 3 -1.0500000000000000e+00 7.4405122110527309e+00 -4.3324502105469040e+00 -8.0605503307031601e+00 0 1 1 -1175 1 3 -1.0500000000000000e+00 7.7960372596729002e+00 -1.5411873078722387e+00 -8.0594145656169474e+00 0 1 1 -1176 1 4 -9.4999999999999996e-01 -1.0324751332420679e+01 -2.7376760680379526e+00 -8.1893113790367398e+00 1 1 1 -1177 1 3 -1.0500000000000000e+00 8.9661392654718526e+00 -7.4552372525409538e-01 -5.9607953656302595e+00 0 1 1 -1178 1 3 -1.0500000000000000e+00 7.5490052861507984e+00 -2.9227882817179367e+00 -5.9587292162986722e+00 0 1 1 -1179 1 3 -1.0500000000000000e+00 6.3958341876680791e+00 -5.9670249615731663e-01 -6.1504001903853247e+00 0 1 1 -1180 1 5 4.2499999999999999e-01 9.8084275444973414e+00 -3.6163895221434412e+00 -8.0453831689662785e+00 0 1 1 -1181 1 1 1.5750000000000000e+00 6.0230793220357306e+00 -1.6713760727027740e+00 9.1931436640286570e+00 0 1 0 -1182 1 2 2.1000000000000001e+00 5.2340703084782234e+00 -9.0451373900601055e+00 6.4359026509421398e+00 0 1 0 -1183 1 2 2.1000000000000001e+00 5.2107768285475249e+00 -3.0343378220597543e+00 6.4280520030326400e+00 0 1 0 -1184 1 3 -1.0500000000000000e+00 5.4313667981565832e+00 -1.5049347755671505e-01 8.0541295280698009e+00 0 1 0 -1185 1 3 -1.0500000000000000e+00 5.0760850477762016e+00 -2.9413590110961252e+00 8.0528672520399454e+00 0 1 0 -1186 1 4 -9.4999999999999996e-01 -1.2923273102973829e+01 -1.7451732121810899e+00 8.1828599921332490e+00 1 1 0 -1187 1 3 -1.0500000000000000e+00 -1.1574049043750753e+01 -3.7371601802106404e+00 5.9540991225733642e+00 1 1 0 -1188 1 3 -1.0500000000000000e+00 5.3228691356732281e+00 -1.5599701988768047e+00 5.9524365669383243e+00 0 1 0 -1189 1 3 -1.0500000000000000e+00 6.4762747623866446e+00 -3.8860082222617720e+00 6.1439098279782520e+00 0 1 0 -1190 1 5 4.2499999999999999e-01 -1.2416347906588287e+01 -8.6631108188533545e-01 8.0389014904005194e+00 1 1 0 -1191 1 1 1.5750000000000000e+00 3.4148894200107200e+00 -6.1542622930241908e+00 9.1931366055821719e+00 0 1 0 -1192 1 2 2.1000000000000001e+00 -1.2797778702965626e+01 -4.5622320761539967e+00 6.4359157700181306e+00 1 1 0 -1193 1 2 2.1000000000000001e+00 -1.2877404237061196e+01 -7.5172309934459047e+00 6.4280643167095981e+00 1 1 0 -1194 1 3 -1.0500000000000000e+00 -1.2656816171316713e+01 -4.6333960070141416e+00 8.0541603707338680e+00 1 1 0 -1195 1 3 -1.0500000000000000e+00 -1.3012083101506889e+01 -7.4242649986939213e+00 8.0528602947442778e+00 1 1 0 -1196 1 4 -9.4999999999999996e-01 5.1086228485452754e+00 -6.2279825781387714e+00 8.1829178979826871e+00 0 1 0 -1197 1 3 -1.0500000000000000e+00 6.4577656205449188e+00 -8.2200870263303347e+00 5.9540987494082156e+00 0 1 0 -1198 1 3 -1.0500000000000000e+00 -1.2765291524992206e+01 -6.0429045661158707e+00 5.9524054565834668e+00 1 1 0 -1199 1 3 -1.0500000000000000e+00 -1.1611893334617134e+01 -8.3689294997385222e+00 6.1439150437810142e+00 1 1 0 -1200 1 5 4.2499999999999999e-01 5.6155110306614677e+00 -5.3491040803435190e+00 8.0393878066564533e+00 0 1 0 -1201 1 1 1.5750000000000000e+00 -9.4730482558538363e+00 -7.6579837804608353e+00 9.1936288584421817e+00 1 1 0 -1202 1 2 2.1000000000000001e+00 -5.2901137812505343e+00 7.9465578875971943e-02 -6.4424141224911704e+00 1 1 1 -1203 1 2 2.1000000000000001e+00 -5.2668457657427714e+00 -5.9314030152575619e+00 -6.4345136025435696e+00 1 1 1 -1204 1 3 -1.0500000000000000e+00 -5.4876411141658021e+00 -8.8153737446390359e+00 -8.0605818622866803e+00 1 1 1 -1205 1 3 -1.0500000000000000e+00 -5.1321272527986546e+00 -6.0241062466034769e+00 -8.0594120618712797e+00 1 1 1 -1206 1 4 -9.4999999999999996e-01 -7.7729334170461382e+00 -7.2206262093781639e+00 -8.1893704172959332e+00 1 1 1 -1207 1 3 -1.0500000000000000e+00 -9.1220532114999084e+00 -5.2284458130184035e+00 -5.9607879501683279e+00 1 1 1 -1208 1 3 -1.0500000000000000e+00 -5.3791700396304432e+00 -7.4056785499597986e+00 -5.9586994192034970e+00 1 1 1 -1209 1 3 -1.0500000000000000e+00 -6.5323364101775097e+00 -5.0795968883872256e+00 -6.1504080690006111e+00 1 1 1 -1210 1 5 4.2499999999999999e-01 -8.2797860458884607e+00 -8.0994421096420997e+00 -8.0457936049874998e+00 1 1 1 -1211 1 1 1.5750000000000000e+00 -6.8648895692884251e+00 -3.1750601185026568e+00 9.1936250796126728e+00 1 1 0 -1212 1 2 2.1000000000000001e+00 -7.8982904263320277e+00 -4.4034684490191758e+00 -6.4424103941693547e+00 1 1 1 -1213 1 2 2.1000000000000001e+00 -7.8186708591875442e+00 -1.4484597541953050e+00 -6.4344993359968523e+00 1 1 1 -1214 1 3 -1.0500000000000000e+00 -8.0394941486076519e+00 -4.3324466787230307e+00 -8.0605359249190123e+00 1 1 1 -1215 1 3 -1.0500000000000000e+00 -7.6839605876128365e+00 -1.5411977245256949e+00 -8.0594077717620856e+00 1 1 1 -1216 1 4 -9.4999999999999996e-01 -5.1647454040881282e+00 -2.7376674564410823e+00 -8.1893315607054049e+00 1 1 1 -1217 1 3 -1.0500000000000000e+00 -6.5139066907486161e+00 -7.4554731891745618e-01 -5.9607837703642241e+00 1 1 1 -1218 1 3 -1.0500000000000000e+00 -7.9309926183745523e+00 -2.9227576840502572e+00 -5.9587353580265621e+00 1 1 1 -1219 1 3 -1.0500000000000000e+00 -9.0841593543895360e+00 -5.9670620551901621e-01 -6.1504020768312335e+00 1 1 1 -1220 1 5 4.2499999999999999e-01 -5.6716072349666886e+00 -3.6164251093405397e+00 -8.0454906260480783e+00 1 1 1 -1221 1 1 1.5750000000000000e+00 -9.4569292783711720e+00 -1.6713754920263852e+00 9.1931457295587080e+00 1 1 0 -1222 1 2 2.1000000000000001e+00 -1.0245932376290614e+01 -9.0451235386775792e+00 6.4359124866582462e+00 1 1 0 -1223 1 2 2.1000000000000001e+00 -1.0269246952870757e+01 -3.0343462448060272e+00 6.4280513194600832e+00 1 1 0 -1224 1 3 -1.0500000000000000e+00 -1.0048625782907161e+01 -1.5049666929490613e-01 8.0541125763199020e+00 1 1 0 -1225 1 3 -1.0500000000000000e+00 -1.0403918287278653e+01 -2.9413486509055247e+00 8.0528602350875680e+00 1 1 0 -1226 1 4 -9.4999999999999996e-01 -7.7632636474169150e+00 -1.7451601758199367e+00 8.1828410557435127e+00 1 1 0 -1227 1 3 -1.0500000000000000e+00 -6.4140961797655454e+00 -3.7371846807874363e+00 5.9541096999475336e+00 1 1 0 -1228 1 3 -1.0500000000000000e+00 -1.0157133031150034e+01 -1.5599995082696054e+00 5.9524404810865761e+00 1 1 0 -1229 1 3 -1.0500000000000000e+00 -9.0037325780420030e+00 -3.8860049270011618e+00 6.1439117463650170e+00 1 1 0 -1230 1 5 4.2499999999999999e-01 -7.2563815502586255e+00 -8.6634628906294964e-01 8.0388078115699031e+00 1 1 0 -1231 1 1 1.5750000000000000e+00 -1.2065096650972574e+01 -6.1542722772754583e+00 9.1931397726777710e+00 1 1 0 -1232 1 2 2.1000000000000001e+00 -7.6377546012995223e+00 -4.5622303585522523e+00 6.4359252178928603e+00 1 1 0 -1233 1 2 2.1000000000000001e+00 -7.7173985866608206e+00 -7.5172441124993092e+00 6.4280522853100841e+00 1 1 0 -1234 1 3 -1.0500000000000000e+00 -7.4968018474351847e+00 -4.6333944697759453e+00 8.0541317707799216e+00 1 1 0 -1235 1 3 -1.0500000000000000e+00 -7.8520862052053939e+00 -7.4242695437274406e+00 8.0528631393504213e+00 1 1 0 -1236 1 4 -9.4999999999999996e-01 -1.0371408885631821e+01 -6.2280260117520783e+00 8.1829008047331513e+00 1 1 0 -1237 1 3 -1.0500000000000000e+00 -9.0222328910023926e+00 -8.2200853313923243e+00 5.9541052342574226e+00 1 1 0 -1238 1 3 -1.0500000000000000e+00 -7.6052877106027434e+00 -6.0428855091388112e+00 5.9523894388192833e+00 1 1 0 -1239 1 3 -1.0500000000000000e+00 -6.4519043738629689e+00 -8.3689258339210468e+00 6.1439186596132167e+00 1 1 0 -1240 1 5 4.2499999999999999e-01 -9.8645060505972708e+00 -5.3491171533452899e+00 8.0392299847806328e+00 1 1 0 -1241 1 1 1.5750000000000000e+00 -4.3130335719799664e+00 -7.6579937038842196e+00 9.1936314019332954e+00 1 1 0 -1242 1 2 2.1000000000000001e+00 -1.3013744627974866e-01 7.9462913475630614e-02 -6.4424246376464893e+00 1 1 1 -1243 1 2 2.1000000000000001e+00 -1.0684893537057505e-01 -5.9313893508898428e+00 -6.4345017895585537e+00 1 1 1 -1244 1 3 -1.0500000000000000e+00 -3.2765635106517799e-01 -8.8153758391408683e+00 -8.0605526742101183e+00 1 1 1 -1245 1 3 -1.0500000000000000e+00 2.7875841094589404e-02 -6.0241024867204338e+00 -8.0594144214765731e+00 1 1 1 -1246 1 4 -9.4999999999999996e-01 -2.6129651405688552e+00 -7.2206691446852744e+00 -8.1893860636445819e+00 1 1 1 -1247 1 3 -1.0500000000000000e+00 -3.9620450314031350e+00 -5.2284410824498675e+00 -5.9607825544872162e+00 1 1 1 -1248 1 3 -1.0500000000000000e+00 -2.1917390278932380e-01 -7.4056927498705267e+00 -5.9586833079493466e+00 1 1 1 -1249 1 3 -1.0500000000000000e+00 -1.3723243147179893e+00 -5.0796017338512662e+00 -6.1504112915507374e+00 1 1 1 -1250 1 5 4.2499999999999999e-01 -3.1198011720613454e+00 -8.0994528008667253e+00 -8.0459422208187643e+00 1 1 1 -1251 1 1 1.5750000000000000e+00 -1.7048821048822589e+00 -3.1750600233974851e+00 9.1936227443404306e+00 1 1 0 -1252 1 2 2.1000000000000001e+00 -2.7382971234679294e+00 -4.4034543566522828e+00 -6.4424013859544047e+00 1 1 1 -1253 1 2 2.1000000000000001e+00 -2.6586950753550083e+00 -1.4484668500258664e+00 -6.4344993053995712e+00 1 1 1 -1254 1 3 -1.0500000000000000e+00 -2.8794880275479802e+00 -4.3324506611342049e+00 -8.0605508713604959e+00 1 1 1 -1255 1 3 -1.0500000000000000e+00 -2.5239630752470426e+00 -1.5411866297456065e+00 -8.0594147792074153e+00 1 1 1 -1256 1 4 -9.4999999999999996e-01 -4.7517837259558604e-03 -2.7376768429853673e+00 -8.1893112828875445e+00 1 1 1 -1257 1 3 -1.0500000000000000e+00 -1.3538609137908306e+00 -7.4552332505261631e-01 -5.9607953412511501e+00 1 1 1 -1258 1 3 -1.0500000000000000e+00 -2.7709951342120993e+00 -2.9227884148814525e+00 -5.9587287907420370e+00 1 1 1 -1259 1 3 -1.0500000000000000e+00 -3.9241656194851835e+00 -5.9670276827438684e-01 -6.1504002860173532e+00 1 1 1 -1260 1 5 4.2499999999999999e-01 -5.1157204379419063e-01 -3.6163887288381531e+00 -8.0453830198534977e+00 1 1 1 -1261 1 1 1.5750000000000000e+00 -4.2969203280827042e+00 -1.6713763688959737e+00 9.1931435527350907e+00 1 1 0 -1262 1 2 2.1000000000000001e+00 -5.0859285809060815e+00 -9.0451378610562490e+00 6.4359028036352743e+00 1 1 0 -1263 1 2 2.1000000000000001e+00 -5.1092223160746624e+00 -3.0343377842534469e+00 6.4280523464977879e+00 1 1 0 -1264 1 3 -1.0500000000000000e+00 -4.8886336868453881e+00 -1.5049298815613810e-01 8.0541300922261030e+00 1 1 0 -1265 1 3 -1.0500000000000000e+00 -5.2439155117684226e+00 -2.9413591861830017e+00 8.0528672575652891e+00 1 1 0 -1266 1 4 -9.4999999999999996e-01 -2.6032732264105301e+00 -1.7451740386941132e+00 8.1828598914546760e+00 1 1 0 -1267 1 3 -1.0500000000000000e+00 -1.2540490739490959e+00 -3.7371600128887970e+00 5.9540989905604338e+00 1 1 0 -1268 1 3 -1.0500000000000000e+00 -4.9971316149433278e+00 -1.5599701828983008e+00 5.9524360634314295e+00 1 1 0 -1269 1 3 -1.0500000000000000e+00 -3.8437253850415853e+00 -3.8860083322717820e+00 6.1439094566028505e+00 1 1 0 -1270 1 5 4.2499999999999999e-01 -2.0963478358362906e+00 -8.6631093607094911e-01 8.0388999212996310e+00 1 1 0 -1271 1 1 1.5750000000000000e+00 -6.9051103097426907e+00 -6.1542621657147709e+00 9.1931367563616888e+00 1 1 0 -1272 1 2 2.1000000000000001e+00 -2.4777787674654199e+00 -4.5622327426858931e+00 6.4359160209892181e+00 1 1 0 -1273 1 2 2.1000000000000001e+00 -2.5574043892191067e+00 -7.5172298950838190e+00 6.4280642763354940e+00 1 1 0 -1274 1 3 -1.0500000000000000e+00 -2.3368161191143999e+00 -4.6333959836381862e+00 8.0541606972964814e+00 1 1 0 -1275 1 3 -1.0500000000000000e+00 -2.6920831091204462e+00 -7.4242654010828897e+00 8.0528604112015607e+00 1 1 0 -1276 1 4 -9.4999999999999996e-01 -5.2113770815501210e+00 -6.2279820619212582e+00 8.1829178539255096e+00 1 1 0 -1277 1 3 -1.0500000000000000e+00 -3.8622341308639339e+00 -8.2200867295059776e+00 5.9540986555569546e+00 1 1 0 -1278 1 3 -1.0500000000000000e+00 -2.4452916356073002e+00 -6.0429049672168205e+00 5.9524054018626558e+00 1 1 0 -1279 1 3 -1.0500000000000000e+00 -1.2918938182515838e+00 -8.3689297483017420e+00 6.1439149539106701e+00 1 1 0 -1280 1 5 4.2499999999999999e-01 -4.7044890687991749e+00 -5.3491044489278803e+00 8.0393882099475782e+00 1 1 0 +264 1 3 -1.05 -8.46491586606061 -17.901292325442792 -1.1390414842434584 1 1 0 +304 1 3 -1.05 -3.3049186986576506 -17.901290750068977 -1.1390437890122005 1 1 0 +386 1 4 -0.95 -11.28157790356712 -10.528150577554554 -1.0092882779490928 1 1 0 +387 1 3 -1.05 -9.935357744081871 -12.520946280855286 -3.2389916781308177 1 1 0 +392 1 2 2.1 -11.15811099398584 -13.347486038255383 -2.757315613614664 1 1 0 +393 1 2 2.1 -11.237889362245781 -16.302594662783648 -2.7652874030664893 1 1 0 +394 1 3 -1.05 -11.016750509593795 -13.41838356845754 -1.1390376370894852 1 1 0 +395 1 3 -1.05 -11.372121493310306 -16.209812211718564 -1.1403956987186419 1 1 0 +398 1 3 -1.05 -11.123698820481325 -14.828288395652272 -3.2407370008852503 1 1 0 +399 1 3 -1.05 -9.973058453394058 -17.155713166817623 -3.0491809998142045 1 1 0 +422 1 2 2.1 -8.60626977865343 -17.83040303949202 -2.757307688224758 1 1 0 +423 1 2 2.1 -8.629758159651553 -11.819745199168645 -2.7652839948923624 1 1 0 +425 1 3 -1.05 -8.763971912039096 -11.726883125298963 -1.1403800557050356 1 1 0 +426 1 4 -0.95 -6.121574906086911 -10.528150365511065 -1.0092950354343362 1 1 0 +427 1 3 -1.05 -4.775388146251923 -12.520964201416565 -3.238989168491626 1 1 0 +428 1 3 -1.05 -8.515522554581228 -10.345254400323427 -3.2407468259276673 1 1 0 +429 1 3 -1.05 -7.364884681634946 -12.672823688539507 -3.0491633890428966 1 1 0 +430 1 5 0.425 -5.613050421649238 -9.64905707477696 -1.1481351133572844 1 1 0 +432 1 2 2.1 -5.998102242208308 -13.347479307389396 -2.7573203771857013 1 1 0 +433 1 2 2.1 -6.077895683838097 -16.302607571672493 -2.7652940728794455 1 1 0 +434 1 3 -1.05 -5.856746304305593 -13.418383628427902 -1.1390485082470203 1 1 0 +435 1 3 -1.05 -6.212119786812962 -16.209812802990335 -1.1403998993912392 1 1 0 +436 1 4 -0.95 -8.729708502581238 -15.011039091449069 -1.009285880112964 1 1 0 +437 1 3 -1.05 -7.383491201121386 -17.003869454733763 -3.2389871522032028 1 1 0 +438 1 3 -1.05 -5.963695048103962 -14.828277302058277 -3.240739000854397 1 1 0 +439 1 3 -1.05 -4.813069783015718 -17.155706888160015 -3.049179484681825 1 1 0 +440 1 5 0.425 -8.221237365494655 -14.13197978175737 -1.148104642070665 1 1 0 +462 1 2 2.1 -3.4462548346618433 -17.830406583197693 -2.7573102223982113 1 1 0 +463 1 2 2.1 -3.469735283388167 -11.819752050513955 -2.7652804467485357 1 1 0 +465 1 3 -1.05 -3.603971352452068 -11.726883408388186 -1.1403764365310618 1 1 0 +468 1 3 -1.05 -3.355521162154167 -10.345233316904825 -3.2407460058544304 1 1 0 +469 1 3 -1.05 -2.2048968961935245 -12.67281584124379 -3.0491647524307126 1 1 0 +470 1 5 0.425 -0.4530336944118556 -9.649058436806532 -1.1481079681882829 1 1 0 +476 1 4 -0.95 -3.569702194052315 -15.011029442444274 -1.0092829982342053 1 1 0 +477 1 3 -1.05 -2.223510954503034 -17.003879928264908 -3.238987017751225 1 1 0 +480 1 5 0.425 -3.061226086377273 -14.131977973418296 -1.1480614741617021 1 1 0 +842 1 2 2.1 -10.562132297329805 -17.851014175793086 -6.432546285956645 1 1 1 +882 1 2 2.1 -5.402127266641829 -17.85100681359648 -6.4325501191668755 1 1 1 +1003 1 2 2.1 -10.482315844290621 -14.895888504252758 -6.4245862304386065 1 1 1 +1005 1 3 -1.05 -10.348095162304375 -14.98875808661767 -8.049491681798669 1 1 1 +1008 1 3 -1.05 -10.596544769602936 -16.37040254747953 -5.949125564063066 1 1 1 +1011 1 1 1.575 -8.68725474195775 -11.77759774974404 -9.1893849316929 1 1 1 +1016 1 4 -0.95 -10.382364613954495 -11.704612098178766 -8.180586191286995 1 1 1 +1020 1 5 0.425 9.749175400148882 -12.583669666698384 -8.041796462307946 0 1 1 +1041 1 1 1.575 -6.135425776818094 -16.260473936348028 -9.189383231154757 1 1 1 +1043 1 2 2.1 -5.3223230647806945 -14.895898704501215 -6.424593124897623 1 1 1 +1044 1 3 -1.05 -5.543484086381093 -17.780185221481208 -8.050814994171715 1 1 1 +1045 1 3 -1.05 -5.188093428747346 -14.988758733832059 -8.04949629788937 1 1 1 +1046 1 4 -0.95 -7.8304849276464115 -16.187485278543456 -8.180577316436402 1 1 1 +1047 1 3 -1.05 -9.176703799441476 -14.19469188744462 -5.95088180516822 1 1 1 +1048 1 3 -1.05 -5.436541172095698 -16.370396928539293 -5.9491275765252185 1 1 1 +1049 1 3 -1.05 -6.587179230640963 -14.042820482901044 -6.140706408704635 1 1 1 +1050 1 5 0.425 -8.339016864185075 -17.06657758066529 -8.041710773044175 1 1 1 +1051 1 1 1.575 -3.527261903235889 -11.77759444673707 -9.189385423079939 1 1 1 +1052 1 2 2.1 -7.953952109972265 -13.36816612248871 -6.432556712138617 1 1 1 +1053 1 2 2.1 -7.8741625097250605 -10.413049444820782 -6.4245790461347605 1 1 1 +1054 1 3 -1.05 -8.095317714508074 -13.297256855654805 -8.050832188461564 1 1 1 +1055 1 3 -1.05 -7.739944593076132 -10.505829863398748 -8.049470808969227 1 1 1 +1056 1 4 -0.95 -5.22236234575324 -11.704613397559287 -8.180592735251716 1 1 1 +1057 1 3 -1.05 -6.568578215806069 -9.711775687113166 -5.950883008183602 1 1 1 +1058 1 3 -1.05 -7.988367489366465 -11.887339802933614 -5.949132603449773 1 1 1 +1059 1 3 -1.05 -9.13900815725675 -9.559928450728057 -6.140691573977905 1 1 1 +1060 1 5 0.425 -5.730842071322643 -12.583668202662341 -8.041826700411479 1 1 1 +1061 1 1 1.575 -9.51358678931899 -10.63699289645826 9.189382244602578 1 1 0 +1071 1 1 1.575 -12.121741592199127 -15.119878495438652 9.18938580037907 1 1 0 +1086 1 4 -0.95 -2.670491270081923 -16.187494416422872 -8.180579828027994 1 1 1 +1087 1 3 -1.05 -4.0166814766710734 -14.194679692266455 -5.950882081820672 1 1 1 +1092 1 2 2.1 -2.793967359717164 -13.368163663673295 -6.432553729688593 1 1 1 +1093 1 2 2.1 -2.714183453046749 -10.413041630295027 -6.4245816020409485 1 1 1 +1094 1 3 -1.05 -2.935315187147549 -13.297258489782635 -8.050829092232332 1 1 1 +1095 1 3 -1.05 -2.5799455030118272 -10.505829398335198 -8.049473780055107 1 1 1 +1098 1 3 -1.05 -2.828369189735337 -11.887360068177586 -5.949133477017218 1 1 1 +1099 1 3 -1.05 -3.978994149665634 -9.559937349167438 -6.140690350890794 1 1 1 +1111 1 1 1.575 -6.961748817696581 -15.11987630783114 9.189384651241914 1 1 0 +184 1 3 -1.05 1.8550841706248615 -17.90129235456656 -1.139041394638964 0 1 0 +224 1 3 -1.05 7.015081266257585 -17.90129077481551 -1.1390443875216096 0 1 0 +342 1 2 2.1 1.7137286735549981 -17.830403990336592 -2.7573075994425302 0 1 0 +343 1 2 2.1 1.6902433706862166 -11.81974490284625 -2.765283591611176 0 1 0 +345 1 3 -1.05 1.5560281171673136 -11.726883064897962 -1.1403796474735532 0 1 0 +346 1 4 -0.95 4.19842475094546 -10.528150984297781 -1.0092947548256248 0 1 0 +347 1 3 -1.05 5.544610676800708 -12.520964874446697 -3.238989158956352 0 1 0 +348 1 3 -1.05 1.8044775438647918 -10.34525379637876 -3.2407469149941974 0 1 0 +349 1 3 -1.05 2.9551154623676954 -12.672823617460397 -3.0491633747353077 0 1 0 +350 1 5 0.425 4.70694993483294 -9.649056414846337 -1.1481352776498177 0 1 0 +352 1 2 2.1 4.321898281880586 -13.347477423653608 -2.7573203124497994 0 1 0 +353 1 2 2.1 4.242103458566291 -16.302606453938324 -2.7652944924881524 0 1 0 +354 1 3 -1.05 4.463253605388115 -13.418383717750396 -1.1390481950715863 0 1 0 +355 1 3 -1.05 4.107880173799165 -16.20981289781871 -1.1404006770584267 0 1 0 +356 1 4 -0.95 1.590291661406587 -15.011038808742594 -1.0092858875728705 0 1 0 +357 1 3 -1.05 2.936511486433403 -17.003867946178126 -3.2389871417941283 0 1 0 +358 1 3 -1.05 4.356304894039823 -14.82828075681348 -3.240738966883275 0 1 0 +359 1 3 -1.05 5.5069296575236155 -17.15570655268637 -3.0491796518303165 0 1 0 +360 1 5 0.425 2.0987625163240065 -14.131980219839427 -1.1481045890306945 0 1 0 +382 1 2 2.1 6.873746152856757 -17.83040759592042 -2.7573103659838294 0 1 0 +383 1 2 2.1 6.850264705504596 -11.819752523567601 -2.765280196679372 0 1 0 +385 1 3 -1.05 6.716028840751633 -11.726883416657042 -1.1403757891844322 0 1 0 +388 1 3 -1.05 6.9644790606265055 -10.345231078604485 -3.2407460256393845 0 1 0 +389 1 3 -1.05 8.115103706656491 -12.67281636337119 -3.049164810920919 0 1 0 +390 1 5 0.425 -10.773033349967385 -9.649057938720548 -1.1481081159206 1 1 0 +396 1 4 -0.95 6.750298277493279 -15.011028676607136 -1.009283156622482 0 1 0 +397 1 3 -1.05 8.0964871902111 -17.003881231209515 -3.2389870762613597 0 1 0 +400 1 5 0.425 7.2587734956592485 -14.13197867342077 -1.1480612275841189 0 1 0 +466 1 4 -0.95 -0.9615776661893243 -10.528149916413177 -1.0092884371126996 1 1 0 +467 1 3 -1.05 0.384639153569287 -12.520948194899127 -3.238991755885184 1 1 0 +472 1 2 2.1 -0.8381092882996519 -13.347486331441 -2.757316117320512 1 1 0 +473 1 2 2.1 -0.9178906756593168 -16.302595966027578 -2.7652875692926067 1 1 0 +474 1 3 -1.05 -0.6967505864201584 -13.418383565182262 -1.1390380998660525 1 1 0 +475 1 3 -1.05 -1.052121569574025 -16.2098121280094 -1.1403955470516056 1 1 0 +478 1 3 -1.05 -0.80369877564749 -14.828286105827077 -3.240737085742131 1 1 0 +479 1 3 -1.05 0.3469420057265431 -17.155713599291026 -3.0491809320772196 1 1 0 +802 1 2 2.1 4.917871554153482 -17.85100620844276 -6.432550144635655 0 1 1 +922 1 2 2.1 -0.24213302537487635 -17.851014271362367 -6.432546231091103 1 1 1 +961 1 1 1.575 4.184574182271406 -16.26047384481049 -9.189383148012734 0 1 1 +963 1 2 2.1 4.997676106105352 -14.89589820439723 -6.4245934413401775 0 1 1 +964 1 3 -1.05 4.776515931907607 -17.780185218865757 -8.050814805633557 0 1 1 +965 1 3 -1.05 5.131906621044807 -14.988758753951338 -8.049496747093013 0 1 1 +966 1 4 -0.95 2.4895150021685026 -16.187485328567735 -8.18057734079336 0 1 1 +967 1 3 -1.05 1.143296887105647 -14.194691428548982 -5.9508816939542974 0 1 1 +968 1 3 -1.05 4.883458746547756 -16.37039893676453 -5.949127198225527 0 1 1 +969 1 3 -1.05 3.732820257087102 -14.042820299512814 -6.140706422631954 0 1 1 +970 1 5 0.425 1.9809831558045818 -17.066577464624032 -8.041710794411177 0 1 1 +971 1 1 1.575 6.7927381146326375 -11.77759445236754 -9.189385500475517 0 1 1 +972 1 2 2.1 2.366048010875998 -13.368167275390114 -6.432556655123134 0 1 1 +973 1 2 2.1 2.4458378380486767 -10.41305019631907 -6.424578726466713 0 1 1 +974 1 3 -1.05 2.2246822195755787 -13.29725686242322 -8.05083232247889 0 1 1 +975 1 3 -1.05 2.5800552709418074 -10.505829765473539 -8.049470445822946 0 1 1 +976 1 4 -0.95 5.0976375270724485 -11.704613678089164 -8.180592647516727 0 1 1 +977 1 3 -1.05 3.7514206411706486 -9.711776314023226 -5.950882972545097 0 1 1 +978 1 3 -1.05 2.3316324623441567 -11.887337544400147 -5.949132835505473 0 1 1 +979 1 3 -1.05 1.1809926474831354 -9.559928961691705 -6.140691595020608 0 1 1 +980 1 5 0.425 4.589158058033442 -12.583667977364943 -8.041826644512858 0 1 1 +981 1 1 1.575 0.8064132734883156 -10.636992854297397 9.189382072755725 0 1 0 +991 1 1 1.575 -1.8017416248975664 -15.119878549552123 9.189385972861375 0 1 0 +1001 1 1 1.575 9.344581867349657 -16.26047640418962 -9.189381749309328 0 1 1 +1004 1 3 -1.05 9.936511499778717 -17.780185040060882 -8.05080542913734 0 1 1 +1006 1 4 -0.95 7.649509037996275 -16.18749394104903 -8.180579812342321 0 1 1 +1007 1 3 -1.05 6.303320211197779 -14.1946787391996 -5.950882102933339 0 1 1 +1009 1 3 -1.05 8.892830645210495 -14.042826183342902 -6.140708128407816 0 1 1 +1010 1 5 0.425 7.140972750324373 -17.06658046434351 -8.041751694671362 0 1 1 +1012 1 2 2.1 7.526031845452174 -13.36816391655739 -6.432553511023912 0 1 1 +1013 1 2 2.1 7.605817828327925 -10.413041177382924 -6.424581346822816 0 1 1 +1014 1 3 -1.05 7.38468487052144 -13.29725845871807 -8.050828733960508 0 1 1 +1015 1 3 -1.05 7.7400544850575095 -10.50582940361992 -8.04947339734067 0 1 1 +1017 1 3 -1.05 8.911445176635418 -9.711761973761018 -5.950885381272831 0 1 1 +1018 1 3 -1.05 7.491630912269503 -11.887360305407935 -5.949133684133898 0 1 1 +1019 1 3 -1.05 6.3410053156834145 -9.559936868934592 -6.140690348261861 0 1 1 +1021 1 1 1.575 5.966421032045936 -10.636996344651585 9.18938264851844 0 1 0 +1031 1 1 1.575 3.358251150778086 -15.119876228292004 9.189384489321482 0 1 0 +1081 1 1 1.575 -0.9754180121607927 -16.260476400180153 -9.189381721845933 1 1 1 +1083 1 2 2.1 -0.16231620481821452 -14.89588855547083 -6.424586299599195 1 1 1 +1084 1 3 -1.05 -0.3834885547438134 -17.780184943603096 -8.050805349197944 1 1 1 +1085 1 3 -1.05 -0.028095111453609434 -14.988758081242285 -8.049491887024741 1 1 1 +1088 1 3 -1.05 -0.2765447418097864 -16.37040300834762 -5.9491255041968065 1 1 1 +1089 1 3 -1.05 -1.4271693938816554 -14.042826105628727 -6.140708097208753 1 1 1 +1090 1 5 0.425 -3.179027007517461 -17.066580020974854 -8.041751915389574 1 1 1 +1091 1 1 1.575 1.6327453228612008 -11.777597747951123 -9.189384953878353 1 1 1 +1096 1 4 -0.95 -0.0623645826637933 -11.704612065115022 -8.180586180092902 1 1 1 +1097 1 3 -1.05 -1.4085524757194428 -9.711760380898674 -5.950885471300883 1 1 1 +1100 1 5 0.425 -0.5708246238514203 -12.583669638729017 -8.04179655219608 1 1 1 +1101 1 1 1.575 -4.353578939913898 -10.636996303988589 9.18938270030422 1 1 0 +424 1 3 -1.05 -8.408577734808924 -8.935458287782806 -1.139059751375683 1 1 0 +464 1 3 -1.05 -3.248580635072857 -8.935456708467136 -1.1390620639004094 1 1 0 +546 1 4 -0.95 -11.22522470896448 -1.5623206043777742 -1.009290789576525 1 1 0 +547 1 3 -1.05 -9.878997905733707 -3.5551322132945415 -3.2389873081377836 1 1 0 +552 1 2 2.1 -11.101767117492052 -4.381650113675265 -2.757304877477752 1 1 0 +553 1 2 2.1 -11.18156269540419 -7.336765995632838 -2.765288344254607 1 1 0 +554 1 3 -1.05 -10.960418221812578 -4.452562993782461 -1.1390300904548987 1 1 0 +555 1 3 -1.05 -11.31579151270627 -7.243982991685186 -1.1404006413513326 1 1 0 +558 1 3 -1.05 -11.06735994354583 -5.86248222073808 -3.2407468195561364 1 1 0 +559 1 3 -1.05 -9.916720989567086 -8.189896133020403 -3.0491777269547473 1 1 0 +582 1 2 2.1 -8.549941681999599 -8.864628616853421 -2.7573212395646927 1 1 0 +583 1 2 2.1 -8.573408346697407 -2.853890413154632 -2.765288711323917 1 1 0 +585 1 3 -1.05 -8.707624618283598 -2.761073008594156 -1.1403895124190147 1 1 0 +586 1 4 -0.95 -6.065222151349898 -1.5623213449494315 -1.0092973063700743 1 1 0 +587 1 3 -1.05 -4.719027607075699 -3.5551497395403047 -3.2389848295174266 1 1 0 +588 1 3 -1.05 -8.459194165968885 -1.379498682372585 -3.2407378892779697 1 1 0 +589 1 3 -1.05 -7.308554273668932 -3.7069858317422746 -3.049174267227535 1 1 0 +590 1 5 0.425 -5.556733431736472 -0.6832639340674191 -1.1481901639195726 1 1 0 +592 1 2 2.1 -5.941758795256964 -4.381643258523525 -2.757309447300389 1 1 0 +593 1 2 2.1 -6.0215675995468345 -7.336778252386646 -2.7652948891186604 1 1 0 +594 1 3 -1.05 -5.800414010022665 -4.452562979690537 -1.1390409601576525 1 1 0 +595 1 3 -1.05 -6.155789757574291 -7.243983669469674 -1.1404049422805471 1 1 0 +596 1 4 -0.95 -8.67336350603957 -6.045192015790269 -1.009270118053955 1 1 0 +597 1 3 -1.05 -7.3271615151700535 -8.038035790495682 -3.238992981860023 1 1 0 +598 1 3 -1.05 -5.907356197440085 -5.862471934911557 -3.240748636610774 1 1 0 +599 1 3 -1.05 -4.756733445681928 -8.189889175673681 -3.0491762653397636 1 1 0 +600 1 5 0.425 -8.164891614098584 -5.166098789059271 -1.1479179100126835 1 1 0 +622 1 2 2.1 -3.389926071141417 -8.86463251987464 -2.757323741452172 1 1 0 +623 1 2 2.1 -3.413385787633488 -2.8538972774550295 -2.765285166795646 1 1 0 +625 1 3 -1.05 -3.5476240557786918 -2.7610733325609367 -1.1403860582710532 1 1 0 +628 1 3 -1.05 -3.2991927884903163 -1.3794780433085272 -3.240737139143919 1 1 0 +629 1 3 -1.05 -2.148566845248455 -3.70697790414607 -3.0491756564843833 1 1 0 +630 1 5 0.425 -0.39671665581836635 -0.6832652429943806 -1.1481630022982454 1 1 0 +636 1 4 -0.95 -3.5133574867319632 -6.045182758574995 -1.0092671746550455 1 1 0 +637 1 3 -1.05 -2.16718148458315 -8.038046305327988 -3.2389929701897184 1 1 0 +640 1 5 0.425 -3.004880126821485 -5.166096444308325 -1.147874732161542 1 1 0 +1002 1 2 2.1 -10.505804536592649 -8.88523539174835 -6.432560037265368 1 1 1 +1042 1 2 2.1 -5.345800298480642 -8.885227442477921 -6.432563806365232 1 1 1 +1163 1 2 2.1 -10.425983846443055 -5.930101828666643 -6.4245809302442 1 1 1 +1165 1 3 -1.05 -10.29176457220165 -6.022932645020992 -8.049476504290835 1 1 1 +1168 1 3 -1.05 -10.540210510252924 -7.404496027077366 -5.949119337484573 1 1 1 +1171 1 1 1.575 -8.63091986135657 -2.8117449377960053 -9.189382864542884 1 1 1 +1176 1 4 -0.95 -10.32599221206828 -2.738752318079948 -8.180571473894362 1 1 1 +1180 1 5 0.425 9.80549758975939 -3.6178227408875205 -8.041659890758954 0 1 1 +1201 1 1 1.575 -6.0790863142234715 -7.294676574746575 -9.189383710571903 1 1 1 +1203 1 2 2.1 -5.265992010385035 -5.9301120964551135 -6.424588121260333 1 1 1 +1204 1 3 -1.05 -5.487146068587514 -8.814352398208634 -8.050831889549796 1 1 1 +1205 1 3 -1.05 -5.13176290972859 -6.022933332502667 -8.049481513448013 1 1 1 +1206 1 4 -0.95 -7.774180195115953 -7.221701310871847 -8.180597375280326 1 1 1 +1207 1 3 -1.05 -9.120384514697443 -5.22887681444276 -5.950877168633751 1 1 1 +1208 1 3 -1.05 -5.380207122065727 -7.404491441720323 -5.949121385614578 1 1 1 +1209 1 3 -1.05 -6.530843795028404 -5.077002060288615 -6.140701804367323 1 1 1 +1210 1 5 0.425 -8.282682482860066 -8.100810146883555 -8.041925546941595 1 1 1 +1211 1 1 1.575 -3.4709270920462876 -2.8117417906836764 -9.189383656264441 1 1 1 +1212 1 2 2.1 -7.897616037858306 -4.402286956958651 -6.43254710358858 1 1 1 +1213 1 2 2.1 -7.8178154207096355 -1.447175155438515 -6.4245867930103415 1 1 1 +1214 1 3 -1.05 -8.038985872482693 -4.331447222326599 -8.050813553596454 1 1 1 +1215 1 3 -1.05 -7.683597598118229 -1.5400178951253878 -8.049489918538265 1 1 1 +1216 1 4 -0.95 -5.165990407443373 -2.738754409726031 -8.18057793517165 1 1 1 +1217 1 3 -1.05 -6.512212271258566 -0.7459521192234924 -5.950883480489781 1 1 1 +1218 1 3 -1.05 -7.932036772316762 -2.9216307666036787 -5.949131277993494 1 1 1 +1219 1 3 -1.05 -9.08267694565555 -0.5940914943799172 -6.140702906817449 1 1 1 +1220 1 5 0.425 -5.674519498759423 -3.617820687506949 -8.04169029858849 1 1 1 +1221 1 1 1.575 -9.457246412717982 -1.671157609032207 9.189383876214114 1 1 0 +1231 1 1 1.575 -12.065413830807493 -6.15404471574257 9.18938539391855 1 1 0 +1246 1 4 -0.95 -2.614186286838043 -7.2217101201307425 -8.180599793839612 1 1 1 +1247 1 3 -1.05 -3.960360277202871 -5.228863633164128 -5.950877486276319 1 1 1 +1252 1 2 2.1 -2.737632361906618 -4.402284731749566 -6.432544106737809 1 1 1 +1253 1 2 2.1 -2.6578351242773337 -1.4471666923434476 -6.424589226412993 1 1 1 +1254 1 3 -1.05 -2.8789833754375103 -4.331448893865138 -8.050810085224123 1 1 1 +1255 1 3 -1.05 -2.52359850535919 -1.5400175072708464 -8.049492401815417 1 1 1 +1258 1 3 -1.05 -2.7720385307922406 -2.9216515367363893 -5.949132112636712 1 1 1 +1259 1 3 -1.05 -3.9226633957335055 -0.5941000488864461 -6.140701563447556 1 1 1 +1271 1 1 1.575 -6.9054209708246175 -6.154042407692234 9.189383855475354 1 1 0 +344 1 3 -1.05 1.9114222200240487 -8.935458279277533 -1.139059564533735 0 1 0 +384 1 3 -1.05 7.071419484747558 -8.93545662912592 -1.139062289794058 0 1 0 +502 1 2 2.1 1.770058118239774 -8.864629279480386 -2.7573211125975057 0 1 0 +503 1 2 2.1 1.746593525661929 -2.8538905356736315 -2.7652882528616427 0 1 0 +505 1 3 -1.05 1.6123753212274217 -2.761072943936796 -1.1403890497030549 0 1 0 +506 1 4 -0.95 4.254777803494033 -1.5623214773049696 -1.009297090882841 0 1 0 +507 1 3 -1.05 5.60097265039013 -3.555149476103077 -3.2389847675130836 0 1 0 +508 1 3 -1.05 1.8608059611492145 -1.3794973995029132 -3.2407379362518247 0 1 0 +509 1 3 -1.05 3.0114454619351942 -3.706985652875458 -3.0491742347163786 0 1 0 +510 1 5 0.425 4.763266707487849 -0.6832636557343186 -1.1481903079338203 0 1 0 +512 1 2 2.1 4.37824108680676 -4.381642215703053 -2.7573092994894903 0 1 0 +513 1 2 2.1 4.298431828182256 -7.33677721573053 -2.7652951589904955 0 1 0 +514 1 3 -1.05 4.519586070169236 -4.452562991066955 -1.1390403197679557 0 1 0 +515 1 3 -1.05 4.164210351308228 -7.243983732757602 -1.1404051524282774 0 1 0 +516 1 4 -0.95 1.6466363953447338 -6.0451921005838205 -1.0092700800785774 0 1 0 +517 1 3 -1.05 2.9928396471856065 -8.038035104886228 -3.2389931344831044 0 1 0 +518 1 3 -1.05 4.412643745498574 -5.862474549618074 -3.2407487484486985 0 1 0 +519 1 3 -1.05 5.563266561391211 -8.18988915546985 -3.049176356081455 0 1 0 +520 1 5 0.425 2.1551084204706203 -5.16609866467239 -1.1479179157471826 0 1 0 +542 1 2 2.1 6.930073760633853 -8.864633805826598 -2.7573239225921 0 1 0 +543 1 2 2.1 6.906613517162718 -2.853897481917162 -2.7652852790953517 0 1 0 +545 1 3 -1.05 6.7723761157288465 -2.7610732877001496 -1.1403856281466087 0 1 0 +548 1 3 -1.05 7.020807272771009 -1.379476841625241 -3.240737136594837 0 1 0 +549 1 3 -1.05 8.171434172237035 -3.7069785563504976 -3.0491755848729465 0 1 0 +550 1 5 0.425 -10.71671674630369 -0.6832654187033356 -1.1481629281547843 1 1 0 +556 1 4 -0.95 6.806642683806004 -6.045182652289 -1.009267250406083 0 1 0 +557 1 3 -1.05 8.152818693761645 -8.038046252697145 -3.238992939192382 0 1 0 +560 1 5 0.425 7.315119719776252 -5.166096588082807 -1.1478746942687081 0 1 0 +626 1 4 -0.95 -0.9052247640192803 -1.5623207270903876 -1.0092908139849168 1 1 0 +627 1 3 -1.05 0.4409986064558229 -3.55513430014612 -3.238987362520838 1 1 0 +632 1 2 2.1 -0.781765198312538 -4.381650335007297 -2.757305136503125 1 1 0 +633 1 2 2.1 -0.8615624137678708 -7.3367669283109755 -2.765288206868874 1 1 0 +634 1 3 -1.05 -0.64041820705304 -4.452562941095179 -1.1390306805857744 1 1 0 +635 1 3 -1.05 -0.99579148699058 -7.243983089295831 -1.1404005503235641 1 1 0 +638 1 3 -1.05 -0.7473598652504947 -5.862480258450255 -3.2407468109284423 1 1 0 +639 1 3 -1.05 0.4032783081311422 -8.189895897628547 -3.0491778997613777 1 1 0 +962 1 2 2.1 4.974200302039463 -8.885226777627686 -6.432563729132441 0 1 1 +1082 1 2 2.1 -0.185806274293137 -8.88523494640969 -6.432559660140516 1 1 1 +1121 1 1 1.575 4.240913714129455 -7.294676590686793 -9.189383695860338 0 1 1 +1123 1 2 2.1 5.054007902786916 -5.930111693030472 -6.424588129023356 0 1 1 +1124 1 3 -1.05 4.832853936182163 -8.814352442842836 -8.050831879699462 0 1 1 +1125 1 3 -1.05 5.188237146181489 -6.022933335225861 -8.04948169103402 0 1 1 +1126 1 4 -0.95 2.545820092137145 -7.221700886779187 -8.180597400605782 0 1 1 +1127 1 3 -1.05 1.1996162029904571 -5.228876391762018 -5.950877255533969 0 1 1 +1128 1 3 -1.05 4.939792907189725 -7.404492472702664 -5.949121217373286 0 1 1 +1129 1 3 -1.05 3.7891559709552 -5.077001971456189 -6.140701857527632 0 1 1 +1130 1 5 0.425 2.037317272972258 -8.100810548569898 -8.041925509572767 0 1 1 +1131 1 1 1.575 6.849072888825457 -2.811741689480723 -9.189383537844549 0 1 1 +1132 1 2 2.1 2.4223841271020863 -4.402287509447001 -6.432547026529044 0 1 1 +1133 1 2 2.1 2.502185680946525 -1.4471749599701873 -6.42458639136697 0 1 1 +1134 1 3 -1.05 2.2810141007135005 -4.3314471971634685 -8.050813463045493 0 1 1 +1135 1 3 -1.05 2.6364022779876706 -1.5400179185302143 -8.04948944504933 0 1 1 +1136 1 4 -0.95 5.154009380117879 -2.73875462121606 -8.180577998655997 0 1 1 +1137 1 3 -1.05 3.807785149367101 -0.7459535839548899 -5.950883537936585 0 1 1 +1138 1 3 -1.05 2.387963148489902 -2.9216298569088384 -5.949131508409803 0 1 1 +1139 1 3 -1.05 1.2373236894784867 -0.5940918355153002 -6.140702909127059 0 1 1 +1140 1 5 0.425 4.645480590911754 -3.617820504422353 -8.041690386363467 0 1 1 +1141 1 1 1.575 0.8627536087070986 -1.6711577052294828 9.18938406619552 0 1 0 +1151 1 1 1.575 -1.7454137744760594 -6.154044591809328 9.18938520735365 0 1 0 +1161 1 1 1.575 9.400921345592693 -7.294679183739749 -9.189382152847024 0 1 1 +1164 1 3 -1.05 9.992849429211155 -8.81435221076156 -8.050822440181973 0 1 1 +1166 1 4 -0.95 7.705813430829789 -7.221710674457647 -8.18059968821399 0 1 1 +1167 1 3 -1.05 6.3596398781576156 -5.228863629458221 -5.950877516883361 0 1 1 +1169 1 3 -1.05 8.94916626015327 -5.077007792880384 -6.140703499406546 0 1 1 +1170 1 5 0.425 7.197307460595866 -8.100812243136945 -8.041966681414198 0 1 1 +1172 1 2 2.1 7.582367683488243 -4.402284032411057 -6.432543750269571 0 1 1 +1173 1 2 2.1 7.662165094646056 -1.447166201878126 -6.424589375468346 0 1 1 +1174 1 3 -1.05 7.441016703458011 -4.33144872801018 -8.05080991887099 0 1 1 +1175 1 3 -1.05 7.796401552064157 -1.5400176490207613 -8.049492711113222 0 1 1 +1177 1 3 -1.05 8.967811472553645 -0.7459382621993349 -5.950885996764763 0 1 1 +1178 1 3 -1.05 7.547961458135202 -2.921653116508409 -5.949132270533429 0 1 1 +1179 1 3 -1.05 6.397335934009757 -0.5940995052845253 -6.140701722863454 0 1 1 +1181 1 1 1.575 6.022761452224014 -1.6711610325038038 9.189384733881601 0 1 0 +1191 1 1 1.575 3.4145789253607752 -6.154042373460836 9.189383895405408 0 1 0 +1241 1 1 1.575 -0.919078623965504 -7.294679079021275 -9.189382380319893 1 1 1 +1243 1 2 2.1 -0.10598440370268136 -5.930100932531092 -6.424581119725159 1 1 1 +1244 1 3 -1.05 -0.32715050640343435 -8.814352196195246 -8.05082183294797 1 1 1 +1245 1 3 -1.05 0.028235486212588867 -6.022932681205882 -8.049476719692466 1 1 1 +1248 1 3 -1.05 -0.22021063902228377 -7.404498240171787 -5.949119370717186 1 1 1 +1249 1 3 -1.05 -1.370833370356804 -5.077008018598221 -6.140703488710428 1 1 1 +1250 1 5 0.425 -3.1226928311026017 -8.100812730925876 -8.041966561917656 1 1 1 +1251 1 1 1.575 1.6890802359826953 -2.811744966880619 -9.189383163839267 1 1 1 +1256 1 4 -0.95 -0.005992758242417295 -2.738753216631558 -8.180571330642541 1 1 1 +1257 1 3 -1.05 -1.3521890001903145 -0.7459384409832701 -5.950885927432735 1 1 1 +1260 1 5 0.425 -0.5145019540468603 -3.6178218687876402 -8.041660116739482 1 1 1 +1261 1 1 1.575 -4.297238698912295 -1.671161039098081 9.189384626544689 1 1 0 +66 1 4 -0.95 -11.168857413411244 7.40354230473303 -1.009270621918711 1 0 0 +67 1 3 -1.05 -9.822645460808385 5.410696592905623 -3.238991317700341 1 0 0 +72 1 2 2.1 -11.045431902700038 4.584118883669678 -2.7573129595669927 1 0 0 +73 1 2 2.1 -11.125242586862766 1.6290062999736783 -2.7652808348657647 1 0 0 +74 1 3 -1.05 -10.904080920918116 4.513273040814628 -1.139048034178586 1 0 0 +75 1 3 -1.05 -11.259470010039587 1.7218521674576586 -1.140382566465906 1 0 0 +78 1 3 -1.05 -11.011020631747801 3.1034522866952905 -3.2407497089701973 1 0 0 +79 1 3 -1.05 -9.860382334314748 0.7759117274275305 -3.049165720829433 1 0 0 +102 1 2 2.1 -8.493613424986258 0.10122409846838565 -2.757323192975578 1 0 0 +103 1 2 2.1 -8.517068108693376 6.111974095994508 -2.765294523187803 1 0 0 +105 1 3 -1.05 -8.651283926478486 6.204745693345419 -1.140405943066158 1 0 0 +106 1 4 -0.95 -6.008854360601466 7.403542287020748 -1.0092772192840815 1 0 0 +107 1 3 -1.05 -4.662672238122222 5.41068100659405 -3.238988681070188 1 0 0 +108 1 3 -1.05 -8.402859804670333 7.586231166902241 -3.2407428765350357 1 0 0 +109 1 3 -1.05 -7.252220538727875 5.258843554485125 -3.0491804233363666 1 0 0 +110 1 5 0.425 -5.500400910059637 8.282611476985458 -1.1479800750695226 1 0 0 +112 1 2 2.1 -5.885425009588118 4.584125237437899 -2.757317352913315 1 0 0 +113 1 2 2.1 -5.9652471268907 1.6289946463227452 -2.7652873359068035 1 0 0 +114 1 3 -1.05 -5.7440766738855835 4.513273091979116 -1.1390583802266399 1 0 0 +115 1 3 -1.05 -6.099468233788193 1.7218514621970193 -1.140386585906322 1 0 0 +116 1 4 -0.95 -8.617064557281656 2.9205985811717774 -1.0092826841011693 1 0 0 +117 1 3 -1.05 -7.270858314853548 0.9277887665995053 -3.2389934936208906 1 0 0 +118 1 3 -1.05 -5.851016824061415 3.103461965248542 -3.2407514463188676 1 0 0 +119 1 3 -1.05 -4.700394398805081 0.7759184548700553 -3.049164281105149 1 0 0 +120 1 5 0.425 -8.108543295227213 3.7997076991375103 -1.1480274788545408 1 0 0 +142 1 2 2.1 -3.3335981782845536 0.10122011566864941 -2.757325467057764 1 0 0 +143 1 2 2.1 -3.357047142472161 6.11196782113624 -2.7652915386543686 1 0 0 +145 1 3 -1.05 -3.491283130074649 6.204745345271121 -1.1404029948656156 1 0 0 +148 1 3 -1.05 -3.2428585701820545 7.586249294640197 -3.240741946764139 1 0 0 +149 1 3 -1.05 -2.092232840778756 5.258851348198554 -3.049181809306372 1 0 0 +150 1 5 0.425 -0.3403842372794994 8.28260966896027 -1.147952880973289 1 0 0 +156 1 4 -0.95 -3.457058959682409 2.9206070634285233 -1.0092797708444152 1 0 0 +157 1 3 -1.05 -2.1108774684637233 0.9277784951989752 -3.238993287738875 1 0 0 +160 1 5 0.425 -2.9485314187216485 3.799710624823639 -1.1479843692043108 1 0 0 +584 1 3 -1.05 -8.352243293361232 0.030357255394267924 -1.1390524737995804 1 1 0 +624 1 3 -1.05 -3.1922461439355594 0.030358867266201628 -1.1390547665052146 1 1 0 +683 1 2 2.1 -10.369664422889349 3.0356838773287826 -6.424575215502184 1 0 1 +685 1 3 -1.05 -10.23544329651916 2.9429037405897773 -8.049464594434008 1 0 1 +688 1 3 -1.05 -10.483869565823827 1.5614073964043058 -5.949127164061662 1 0 1 +691 1 1 1.575 -8.574578130087637 6.154071208432605 -9.189382180610352 1 0 1 +696 1 4 -0.95 -10.26966239527055 6.227051952939341 -8.18058521084057 1 0 1 +700 1 5 0.425 9.861819220954118 5.347945210496121 -8.041828398642311 0 0 1 +721 1 1 1.575 -6.022756736308421 1.6711303517316303 -9.189385968117815 1 0 1 +723 1 2 2.1 -5.209671651803681 3.0356748124450768 -6.424582436808366 1 0 1 +724 1 3 -1.05 -5.430810675667206 0.15147978126713468 -8.050841477729787 1 0 1 +725 1 3 -1.05 -5.075441675948434 2.9429030094494593 -8.049469596004098 1 0 1 +726 1 4 -0.95 -7.717868211333117 1.7441099614575464 -8.180598129872275 1 0 1 +727 1 3 -1.05 -9.064078445575394 3.7369535813240518 -5.950881069909556 1 0 1 +728 1 3 -1.05 -5.323866211609281 1.5614101422204314 -5.949129186293185 1 0 1 +729 1 3 -1.05 -6.474505361873171 3.888805922950688 -6.140690242051968 1 0 1 +730 1 5 0.425 -8.226330365821905 0.8650337528317387 -8.04190334906801 1 0 1 +731 1 1 1.575 -3.414585332552538 6.154074477881739 -9.189382566209709 1 0 1 +732 1 2 2.1 -7.841289477842381 4.563531901090041 -6.432556537458721 1 0 1 +733 1 2 2.1 -7.761472051295536 7.5186496363365265 -6.424587203245381 1 0 1 +734 1 3 -1.05 -7.982649355928281 4.634376331833035 -8.050818102751318 1 0 1 +735 1 3 -1.05 -7.627256350140505 7.425797358610215 -8.049487688430835 1 0 1 +736 1 4 -0.95 -5.109660696087643 6.227049833368586 -8.180591643035886 1 0 1 +737 1 3 -1.05 -6.455868157279019 8.219860147310026 -5.95087771030675 1 0 1 +738 1 3 -1.05 -7.875707074793935 6.044192212608447 -5.94912141317001 1 0 1 +739 1 3 -1.05 -9.026344217684544 8.371738975760678 -6.140708086311505 1 0 1 +740 1 5 0.425 -5.6181977533352105 5.3479473553048 -8.041858759758451 1 0 1 +741 1 1 1.575 -9.400915706306321 7.294693070513674 9.189384926206701 1 0 0 +751 1 1 1.575 -12.009080441958165 2.811750177053689 9.18938314266052 1 0 0 +766 1 4 -0.95 -2.557874232771691 1.7441011023401245 -8.180600685373042 1 0 1 +767 1 3 -1.05 -3.904055434708212 3.7369659883295796 -5.95088122604723 1 0 1 +772 1 2 2.1 -2.6813056080742177 4.563533847624484 -6.432553914027515 1 0 1 +773 1 2 2.1 -2.601490329276581 7.518657095971896 -6.424589458180317 1 0 1 +774 1 3 -1.05 -2.8226468844219257 4.634374668663277 -8.050815326905791 1 0 1 +775 1 3 -1.05 -2.4672573177963235 7.425797891173772 -8.049490259445886 1 0 1 +778 1 3 -1.05 -2.7157085450829808 6.044173304923305 -5.949121943750433 1 0 1 +779 1 3 -1.05 -3.8663325104492907 8.371731480896397 -6.1407067178695645 1 0 1 +791 1 1 1.575 -6.849087529751488 2.8117525878767076 9.1893818738603 1 0 0 +1162 1 2 2.1 -10.449465120471645 0.08055078594262355 -6.432560152381424 1 1 1 +1202 1 2 2.1 -5.289460289979266 0.08055961753068175 -6.432563855616946 1 1 1 +22 1 2 2.1 1.8263872057743669 0.10122323982130865 -2.757323069657862 0 0 0 +23 1 2 2.1 1.802934745269436 6.111973633171797 -2.765294216508333 0 0 0 +25 1 3 -1.05 1.668716070201313 6.204745778974964 -1.1404054664058876 0 0 0 +26 1 4 -0.95 4.311144928833087 7.403541337708113 -1.0092768860747352 0 0 0 +27 1 3 -1.05 5.657326890881341 5.410680424130639 -3.238988834418395 0 0 0 +28 1 3 -1.05 1.9171402669985689 7.586233181934492 -3.240742714496779 0 0 0 +29 1 3 -1.05 3.0677776400331744 5.2588447310193835 -3.0491803607990793 0 0 0 +30 1 5 0.425 4.8195997233909065 8.28261243314935 -1.1479801940850205 0 0 0 +32 1 2 2.1 4.434576150427134 4.584125949994959 -2.757317218978379 0 0 0 +33 1 2 2.1 4.354752672996783 1.6289957720393495 -2.7652874840181454 0 0 0 +34 1 3 -1.05 4.5759233376029655 4.513273129126759 -1.139057813284337 0 0 0 +35 1 3 -1.05 4.22053164114371 1.7218514201119213 -1.1403866240843445 0 0 0 +36 1 4 -0.95 1.7029355240571267 2.9205989386970366 -1.0092827600960685 0 0 0 +37 1 3 -1.05 3.0491419813654197 0.9277888380035257 -3.2389933763391117 0 0 0 +38 1 3 -1.05 4.468983158494831 3.1034597839279527 -3.2407515601519075 0 0 0 +39 1 3 -1.05 5.619605927640823 0.7759183556409575 -3.049164220104494 0 0 0 +40 1 5 0.425 2.2114564850808733 3.799707313511526 -1.1480272683057233 0 0 0 +62 1 2 2.1 6.98640117943874 0.10121957566898487 -2.757325568981271 0 0 0 +63 1 2 2.1 6.962952872691414 6.111965565108033 -2.765291053290289 0 0 0 +65 1 3 -1.05 6.828716908336894 6.204745500725302 -1.140402317732672 0 0 0 +68 1 3 -1.05 7.077141690972795 7.586254503483634 -3.240741979621399 0 0 0 +69 1 3 -1.05 8.22776739587561 5.258851157636421 -3.0491818244113524 0 0 0 +70 1 5 0.425 -10.660383820606539 8.282610501019679 -1.147952957708176 1 0 0 +76 1 4 -0.95 6.862941628467034 2.9206079904103746 -1.0092797796811954 0 0 0 +77 1 3 -1.05 8.209123056757985 0.9277789976030242 -3.238993264209034 0 0 0 +80 1 5 0.425 7.371467964909829 3.799709712130774 -1.1479841901184216 0 0 0 +146 1 4 -0.95 -0.848856980688371 7.403543065635521 -1.009270824726272 1 0 0 +147 1 3 -1.05 0.49734997703464323 5.410693694185699 -3.2389910874000423 1 0 0 +152 1 2 2.1 -0.7254293332831061 4.584118530889224 -2.7573137024694017 1 0 0 +153 1 2 2.1 -0.8052417523067312 1.6290045848501222 -2.7652807440033573 1 0 0 +154 1 3 -1.05 -0.5840810386894884 4.513273006817702 -1.139048972722227 1 0 0 +155 1 3 -1.05 -0.9394700517706553 1.72185203484268 -1.140382327667803 1 0 0 +158 1 3 -1.05 -0.6910205720729508 3.103455656179019 -3.240749615640384 1 0 0 +159 1 3 -1.05 0.459616131096908 0.7759123793662148 -3.049165738355901 1 0 0 +504 1 3 -1.05 1.9677567762458388 0.030357116215178337 -1.1390524463935598 0 1 0 +544 1 3 -1.05 7.12775394829735 0.03035871942021373 -1.1390547635028394 0 1 0 +641 1 1 1.575 4.297243280430267 1.671130298800211 -9.189385641244018 0 0 1 +643 1 2 2.1 5.110326224583382 3.0356739402471575 -6.424582352677525 0 0 1 +644 1 3 -1.05 4.889189397603788 0.15147969781351733 -8.050841862301551 0 0 1 +645 1 3 -1.05 5.244558465032792 2.9429031552053644 -8.049469782410847 0 0 1 +646 1 4 -0.95 2.6021319091520816 1.744110022530954 -8.180598314731402 0 0 1 +647 1 3 -1.05 1.2559239052415947 3.7369549667711297 -5.950880998844742 0 0 1 +648 1 3 -1.05 4.996133819794588 1.5614110520094115 -5.949129347804236 0 0 1 +649 1 3 -1.05 3.845495927210548 3.888805031760729 -6.140690357525236 0 0 1 +650 1 5 0.425 2.093669549271727 0.8650335817131634 -8.041903350027011 0 0 1 +651 1 1 1.575 6.9054145512570955 6.154074540458179 -9.189382656499738 0 0 1 +652 1 2 2.1 2.4787088179628842 4.563531561622252 -6.432556181635265 0 0 1 +653 1 2 2.1 2.5585280519123863 7.518649657399113 -6.424586980258276 0 0 1 +654 1 3 -1.05 2.337350595388921 4.634376273058173 -8.050818213443714 0 0 1 +655 1 3 -1.05 2.6927435931419677 7.425797306887876 -8.049487673491134 0 0 1 +656 1 4 -0.95 5.210339517630658 6.227049915612355 -8.180591746443643 0 0 1 +657 1 3 -1.05 3.864131301319931 8.21985992889757 -5.95087766666106 0 0 1 +658 1 3 -1.05 2.4442928575967446 6.0441923323782305 -5.949121469473265 0 0 1 +659 1 3 -1.05 1.293656047976766 8.371738811992955 -6.14070806309522 0 0 1 +660 1 5 0.425 4.701802056134319 5.3479472107053745 -8.041858727818608 0 0 1 +661 1 1 1.575 0.9190842362638474 7.294693176083765 9.18938507480893 0 0 0 +671 1 1 1.575 -1.6890804391306382 2.8117504093218777 9.18938332505079 0 0 0 +681 1 1 1.575 9.457250970166566 1.6711276693326198 -9.18938446512876 0 0 1 +684 1 3 -1.05 10.049184911415573 0.15147980327706279 -8.050832179942425 0 0 1 +686 1 4 -0.95 7.762125313928461 1.7441003699159374 -8.180600491077195 0 0 1 +687 1 3 -1.05 6.415947469477651 3.7369678311064902 -5.950881518055825 0 0 1 +689 1 3 -1.05 9.00550526381668 3.888799817051286 -6.140691886923977 0 0 1 +690 1 5 0.425 7.2536596052110625 0.8650317110006327 -8.0419445547798 0 0 1 +692 1 2 2.1 7.638693043216929 4.563534397426547 -6.4325531536019 0 0 1 +693 1 2 2.1 7.718508628628836 7.518659026560055 -6.424589752422065 0 0 1 +694 1 3 -1.05 7.497353200810323 4.6343747301491796 -8.050814243532022 0 0 1 +695 1 3 -1.05 7.852742644013961 7.425797704432085 -8.049490509348363 0 0 1 +697 1 3 -1.05 9.024155028039374 8.219873732752141 -5.950880032041851 0 0 1 +698 1 3 -1.05 7.604291305384475 6.044169570929853 -5.9491223139608955 0 0 1 +699 1 3 -1.05 6.4536687395115315 8.371730865840878 -6.140706656787863 0 0 1 +701 1 1 1.575 6.079092109884446 7.294689732957998 9.18938567229783 0 0 0 +711 1 1 1.575 3.470912432260338 2.811752520407829 9.18938169427584 0 0 0 +761 1 1 1.575 -0.862748970625967 1.6711279104285026 -9.189384196227254 1 0 1 +763 1 2 2.1 -0.04966552243351785 3.0356854531893447 -6.424575713127194 1 0 1 +764 1 3 -1.05 -0.27081511421111415 0.15147985204080072 -8.050831834106292 1 0 1 +765 1 3 -1.05 0.08455673703883626 2.942903550076892 -8.049465159099038 1 0 1 +768 1 3 -1.05 -0.1638698065461348 1.5614034363256728 -5.949127300886313 1 0 1 +769 1 3 -1.05 -1.314494472039442 3.888799611479218 -6.140691815778049 1 0 1 +770 1 5 0.425 -3.066340835168454 0.8650309510303416 -8.041944499248094 1 0 1 +771 1 1 1.575 1.7454217382651063 6.154071312403289 -9.189382010954455 1 0 1 +776 1 4 -0.95 0.05033727790187115 6.227051569791222 -8.180585248517964 1 0 1 +777 1 3 -1.05 -1.2958462848877286 8.219873003854904 -5.9508799815340065 1 0 1 +780 1 5 0.425 -0.45818049467738753 5.347945702077382 -8.041828574124134 1 0 1 +781 1 1 1.575 -4.24090790530673 7.294689732506644 9.189385751111567 1 0 0 +1122 1 2 2.1 5.030540831106158 0.08055969575320887 -6.432563931728475 0 1 1 +1242 1 2 2.1 -0.12946529950842844 0.08055281636946887 -6.432559861989349 1 1 1 +104 1 3 -1.05 -8.2959121065224 8.996169249695711 -1.1390343890689216 1 0 0 +144 1 3 -1.05 -3.135914908937057 8.996170757432672 -1.1390363095158538 1 0 0 +226 1 4 -0.95 -11.11254078166963 16.369359515899372 -1.0092685783280562 1 0 0 +227 1 3 -1.05 -9.766336767287553 14.376528090276803 -3.238995751451072 1 0 0 +232 1 2 2.1 -10.989105741717744 13.549928023588016 -2.757323935025683 1 0 0 +233 1 2 2.1 -11.068899971135107 10.594822188451765 -2.765279879336142 1 0 0 +234 1 3 -1.05 -10.847743946171107 13.479098577596996 -1.139055897700814 1 0 0 +235 1 3 -1.05 -11.203130777002407 10.687669044069192 -1.1403772521551225 1 0 0 +238 1 3 -1.05 -10.954690024169619 12.0692952367427 -3.2407400224236813 1 0 0 +239 1 3 -1.05 -9.804050408061553 9.741740732019732 -3.0491690386393895 1 0 0 +262 1 2 2.1 -8.437271860709437 9.067095538704638 -2.757309714415854 1 0 0 +263 1 2 2.1 -8.460747726831363 15.077765756381456 -2.7652898300476085 1 0 0 +265 1 3 -1.05 -8.59496192705347 15.170581558375392 -1.1403965373644613 1 0 0 +266 1 4 -0.95 -5.952537888276847 16.369358966890967 -1.009275025184838 1 0 0 +267 1 3 -1.05 -4.606364507026352 14.376511915388033 -3.2389931337439766 1 0 0 +268 1 3 -1.05 -8.346518937455452 16.552120589815434 -3.2407517060692665 1 0 0 +269 1 3 -1.05 -7.195882464907534 14.224652440524341 -3.049169641913795 1 0 0 +270 1 5 0.425 -5.444048709356704 17.248463720191207 -1.147926072458759 1 0 0 +272 1 2 2.1 -5.82909830220383 13.54993452321374 -2.7573283893462746 1 0 0 +273 1 2 2.1 -5.908905613187655 10.594810706455835 -2.7652862916855394 1 0 0 +274 1 3 -1.05 -5.687739797179347 13.479098509652726 -1.1390661905436907 1 0 0 +275 1 3 -1.05 -6.043129004198134 10.687668498390035 -1.1403811302142177 1 0 0 +276 1 4 -0.95 -8.560740308552909 11.886397563127215 -1.0092984324169958 1 0 0 +277 1 3 -1.05 -7.2145196644512986 9.893600558555839 -3.2389874855870726 1 0 0 +278 1 3 -1.05 -5.794686347127319 12.069305033408408 -3.2407418681182447 1 0 0 +279 1 3 -1.05 -4.644060718572748 9.741746448813768 -3.049167473148536 1 0 0 +280 1 5 0.425 -8.052219545977914 12.76547280470178 -1.1482142578089327 1 0 0 +302 1 2 2.1 -3.277258168611019 9.06709268329568 -2.757311979744827 1 0 0 +303 1 2 2.1 -3.300726568040103 15.077758676128251 -2.7652865730743468 1 0 0 +305 1 3 -1.05 -3.4349611231128563 15.170581239105989 -1.140393118347875 1 0 0 +308 1 3 -1.05 -3.1865176799692243 16.552141258442898 -3.2407508225636663 1 0 0 +309 1 3 -1.05 -2.0358940608778617 14.224659879221303 -3.049171103603271 1 0 0 +310 1 5 0.425 -0.2840321731062527 17.248462066835817 -1.147899000522239 1 0 0 +316 1 4 -0.95 -3.400734418826705 11.88640656459975 -1.009295426410807 1 0 0 +317 1 3 -1.05 -2.0545374153539004 9.893591389941722 -3.238987396892891 1 0 0 +320 1 5 0.425 -2.892208151349891 12.765475346667152 -1.1481709903587394 1 0 0 +682 1 2 2.1 -10.393123499696863 9.046417716708568 -6.432546443741804 1 0 1 +722 1 2 2.1 -5.233118165742026 9.046425415362691 -6.432550064074174 1 0 1 +843 1 2 2.1 -10.313327211997532 12.001542453469945 -6.424580425058928 1 0 1 +845 1 3 -1.05 -10.179104461980216 11.908724309692506 -8.049479685803213 1 0 1 +848 1 3 -1.05 -10.427534414878945 10.527148371504556 -5.949133527898292 1 0 1 +851 1 1 1.575 -8.51824369157916 15.119864900254253 -9.189383813337964 1 0 1 +856 1 4 -0.95 -10.213364798519171 15.19283911129094 -8.1805999456996 1 0 1 +860 1 5 0.425 9.918165904359903 14.31374353290386 -8.041964406905526 0 0 1 +881 1 1 1.575 -5.966426869062609 10.63697892126217 -9.189385316838635 1 0 1 +883 1 2 2.1 -5.153334349175274 12.001533504730254 -6.4245873656476835 1 0 1 +884 1 3 -1.05 -5.37447932514466 9.117293092454549 -8.05082458509691 1 0 1 +885 1 3 -1.05 -5.019102860091463 11.908723625594156 -8.049484444657638 1 0 1 +886 1 4 -0.95 -7.661503944640748 10.709971405747378 -8.180577991074518 1 0 1 +887 1 3 -1.05 -9.007728176997928 12.702784770767579 -5.950885590714915 1 0 1 +888 1 3 -1.05 -5.267530930954242 10.527151999311467 -5.949135635771657 1 0 1 +889 1 3 -1.05 -6.41817044734872 12.85463275660672 -6.140694819991762 1 0 1 +890 1 5 0.425 -8.169994851836138 9.830913491173146 -8.04168744838706 1 0 1 +891 1 1 1.575 -3.3582508216134324 15.119868110955334 -9.189384343267172 1 0 1 +892 1 2 2.1 -7.78495678012643 13.529298477845082 -6.43256609319971 1 0 1 +893 1 2 2.1 -7.705149478241227 16.484421351166855 -6.4245793302851455 1 0 1 +894 1 3 -1.05 -7.926311841895801 13.600212556274936 -8.050837106470572 1 0 1 +895 1 3 -1.05 -7.570934159096701 16.391631488705965 -8.049468672465693 1 0 1 +896 1 4 -0.95 -5.053362791171019 15.192837358764411 -8.180606557550988 1 0 1 +897 1 3 -1.05 -6.39956503035528 17.185682318971356 -5.950877092454645 1 0 1 +898 1 3 -1.05 -7.819368343047313 15.010129619847799 -5.949122570305669 1 0 1 +899 1 3 -1.05 -8.970006576215036 17.33754814394433 -6.140696561990261 1 0 1 +900 1 5 0.425 -5.561851311372902 14.31374529314498 -8.041994715875438 1 0 1 +901 1 1 1.575 -9.344586773498397 16.260504033010424 9.189383061469888 1 0 0 +911 1 1 1.575 -11.952738939766169 11.777562142070536 9.189383933133433 1 0 0 +926 1 4 -0.95 -2.501509910995111 10.709962944319543 -8.180580504155689 1 0 1 +927 1 3 -1.05 -3.847706337399428 12.702796475235434 -5.95088592683273 1 0 1 +932 1 2 2.1 -2.6249716110823975 13.529300956978918 -6.432563378051501 1 0 1 +933 1 2 2.1 -2.545169473198447 16.484429053990457 -6.424581927314836 1 0 1 +934 1 3 -1.05 -2.766309288557113 13.60021091940969 -8.050834014660039 1 0 1 +935 1 3 -1.05 -2.4109350640925493 16.391631918688784 -8.049471644682779 1 0 1 +938 1 3 -1.05 -2.6593699486230253 15.01010932633989 -5.949123442093706 1 0 1 +939 1 3 -1.05 -3.8099936729346524 17.337539995470653 -6.1406953820272605 1 0 1 +951 1 1 1.575 -6.792745980839589 11.77756446289758 9.18938260060447 1 0 0 +24 1 3 -1.05 2.024087914529936 8.996169156423772 -1.1390344040655176 0 0 0 +64 1 3 -1.05 7.1840851787278694 8.996170799073049 -1.1390371246747328 0 0 0 +182 1 2 2.1 1.8827269267658568 9.067094010459222 -2.7573098488458445 0 0 0 +183 1 2 2.1 1.8592529639379158 15.077765641437093 -2.765289826325004 0 0 0 +185 1 3 -1.05 1.7250381794570995 15.170581615306336 -1.140396317987694 0 0 0 +186 1 4 -0.95 4.367461639099476 16.369358398717548 -1.0092749502092584 0 0 0 +187 1 3 -1.05 5.713635253023561 14.376511780801248 -3.2389931627830233 0 0 0 +188 1 3 -1.05 1.973481145796077 16.552121393137707 -3.240751532677078 0 0 0 +189 1 3 -1.05 3.1241173355918086 14.224652737956877 -3.049169549865817 0 0 0 +190 1 5 0.425 4.875951715036274 17.248464394280933 -1.1479261082563532 0 0 0 +192 1 2 2.1 4.490901958219151 13.549935878555889 -2.7573283335925183 0 0 0 +193 1 2 2.1 4.411093600085744 10.594811332515622 -2.7652867782753123 0 0 0 +194 1 3 -1.05 4.632260285297237 13.47909860671924 -1.1390658297944274 0 0 0 +195 1 3 -1.05 4.276871012971121 10.687668403574609 -1.1403818756309079 0 0 0 +196 1 4 -0.95 1.7592596338728619 11.886397590084986 -1.009298531294947 0 0 0 +197 1 3 -1.05 3.105482884951323 9.893602100379187 -3.238987419660816 0 0 0 +198 1 3 -1.05 4.525313593280881 12.06930177005012 -3.240741819055666 0 0 0 +199 1 3 -1.05 5.675938131533806 9.741747191339616 -3.049167537714908 0 0 0 +200 1 5 0.425 2.2677804650185784 12.765472764023784 -1.1482141972846076 0 0 0 +222 1 2 2.1 7.042742997773182 9.06709065048177 -2.757312355283716 0 0 0 +223 1 2 2.1 7.01927329241666 15.077757124097925 -2.7652861994385667 0 0 0 +225 1 3 -1.05 6.885038862750001 15.170581286095011 -1.1403927842743506 0 0 0 +228 1 3 -1.05 7.133482597267005 16.552144500578226 -3.24075083839441 0 0 0 +229 1 3 -1.05 8.284105934673054 14.224659825474038 -3.049171073901001 0 0 0 +230 1 5 0.425 -10.604031977218472 17.248462460723108 -1.1478989225176974 1 0 0 +236 1 4 -0.95 6.919266019605498 11.886407164285622 -1.0092956224084197 0 0 0 +237 1 3 -1.05 8.26546077991545 9.893590106942362 -3.2389873515609295 0 0 0 +240 1 5 0.425 7.427791685687939 12.765474859759728 -1.1481709088514993 0 0 0 +306 1 4 -0.95 -0.7925404329129417 16.36935978204208 -1.0092685234917038 1 0 0 +307 1 3 -1.05 0.5536617436637812 14.376527208127765 -3.238995583926612 1 0 0 +312 1 2 2.1 -0.669105152749097 13.549928062179351 -2.757324364009518 1 0 0 +313 1 2 2.1 -0.7489012635521384 10.594821654108735 -2.7652800741043446 1 0 0 +314 1 3 -1.05 -0.5277440456768847 13.479098585859202 -1.1390561242138784 1 0 0 +315 1 3 -1.05 -0.8831307002281701 10.687669040991018 -1.140377271846452 1 0 0 +318 1 3 -1.05 -0.6346900144781458 12.069295967999206 -3.240739844147214 1 0 0 +319 1 3 -1.05 0.5159499812446136 9.741740306242114 -3.0491689677433413 1 0 0 +642 1 2 2.1 5.086881183770259 9.046425911742144 -6.432550150515191 0 0 1 +762 1 2 2.1 -0.07312306646521094 9.046418567335255 -6.432546469896677 1 0 1 +801 1 1 1.575 4.353573033337209 10.636979042290022 -9.189385175536927 0 0 1 +803 1 2 2.1 5.166664061273867 12.001532910814223 -6.424587670201428 0 0 1 +804 1 3 -1.05 4.945520713988733 9.117292956379355 -8.050824916593145 0 0 1 +805 1 3 -1.05 5.3008973690342565 11.908723709427026 -8.049484733585496 0 0 1 +806 1 4 -0.95 2.6584959262536785 10.709971246531975 -8.18057805604267 0 0 1 +807 1 3 -1.05 1.3122728430088326 12.702785257177823 -5.950885474338808 0 0 1 +808 1 3 -1.05 5.052469129605173 10.527151794250187 -5.949135352014368 0 0 1 +809 1 3 -1.05 3.9018297035645837 12.854632641977553 -6.1406947910058385 0 0 1 +810 1 5 0.425 2.1500052491708654 9.8309136506718 -8.041687402015095 0 0 1 +811 1 1 1.575 6.961748976029714 15.11986798997648 -9.189384482358879 0 0 1 +812 1 2 2.1 2.535042687523287 13.529297970232026 -6.4325661347972565 0 0 1 +813 1 2 2.1 2.614849740198629 16.48442051022965 -6.424579413308912 0 0 1 +814 1 3 -1.05 2.3936882153036816 13.60021257463752 -8.050837163771524 0 0 1 +815 1 3 -1.05 2.7490658487965707 16.391631453766433 -8.049468717992344 0 0 1 +816 1 4 -0.95 5.266637005508615 15.192836965901162 -8.18060636473161 0 0 1 +817 1 3 -1.05 3.920436314988857 17.185683167433734 -5.950877119319536 0 0 1 +818 1 3 -1.05 2.5006316587760526 15.010130254796007 -5.949122772496109 0 0 1 +819 1 3 -1.05 1.3499937471668204 17.337547912493786 -6.140696589330803 0 0 1 +820 1 5 0.425 4.758148953436567 14.313745713621554 -8.04199471755077 0 0 1 +821 1 1 1.575 0.9754132074566062 16.260504016462573 9.189383008011989 0 0 0 +831 1 1 1.575 -1.632738974614906 11.777562083519168 9.18938401267412 0 0 0 +841 1 1 1.575 9.513580811205571 10.636976340496151 -9.189383726764085 0 0 1 +844 1 3 -1.05 10.105516190294331 9.117293135343541 -8.050815507300172 0 0 1 +846 1 4 -0.95 7.818489772082437 10.709962301298077 -8.180580332939817 0 0 1 +847 1 3 -1.05 6.472296617251764 12.702798330503999 -5.950885979768901 0 0 1 +849 1 3 -1.05 9.061839113308423 12.85462734482412 -6.140696399395345 0 0 1 +850 1 5 0.425 7.309994958903577 9.830911036100812 -8.041728700792529 0 0 1 +852 1 2 2.1 7.695026696212686 13.529300436217842 -6.432563050299859 0 0 1 +853 1 2 2.1 7.774830524031032 16.484429805628476 -6.4245820389886 0 0 1 +854 1 3 -1.05 7.553690820056456 13.600211019443176 -8.050833425414133 0 0 1 +855 1 3 -1.05 7.90906499883684 16.391631831273738 -8.049471300477997 0 0 1 +857 1 3 -1.05 9.080458785689217 17.18569631092181 -5.950879504982494 0 0 1 +858 1 3 -1.05 7.660630099640052 15.010108645803708 -5.949123539735778 0 0 1 +859 1 3 -1.05 6.510007127986675 17.337539652224454 -6.140695210856152 0 0 1 +861 1 1 1.575 6.135421058173524 16.260500644067545 9.18938364090062 0 0 0 +871 1 1 1.575 3.5272538816622223 11.777564383420493 9.189382493802137 0 0 0 +921 1 1 1.575 -0.806419090335142 10.6369764569408 -9.189383713930892 1 0 1 +923 1 2 2.1 0.006672498480664757 12.001542880171968 -6.424580735660621 1 0 1 +924 1 3 -1.05 -0.21448392537694794 9.11729318150578 -8.050815514872385 1 0 1 +925 1 3 -1.05 0.1408954660648405 11.908724218193651 -8.04948002701215 1 0 1 +928 1 3 -1.05 -0.10753447832841978 10.52714708281717 -5.9491334742097575 1 0 1 +929 1 3 -1.05 -1.2581612100588444 12.854627509935817 -6.140696384375066 1 0 1 +930 1 5 0.425 -3.0100053531165374 9.830910509518201 -8.041728647622413 1 0 1 +931 1 1 1.575 1.8017562269381084 15.11986483513633 -9.189383868712579 1 0 1 +936 1 4 -0.95 0.1066350030095542 15.192838843972428 -8.18059994641965 1 0 1 +937 1 3 -1.05 -1.2395403472651836 17.185696825023822 -5.950879632472325 1 0 1 +940 1 5 0.425 -0.4018339418639325 14.313743809074847 -8.041964435447152 1 0 1 +941 1 1 1.575 -4.184578902062027 16.260500609273645 9.18938369837054 1 0 0 +202 1 2 2.1 -12.25907142254093 -18.03284292800733 2.7573256699420927 1 1 0 +242 1 2 2.1 -7.099067653695995 -18.032834660131254 2.757321949202108 1 1 0 +282 1 2 2.1 -1.9390718808592098 -18.032841752433647 2.7573260151961314 1 1 0 +363 1 2 2.1 -12.17925475263019 -15.077717311058388 2.765285829341023 1 1 0 +365 1 3 -1.05 -12.045034136641693 -15.17058638521851 1.140380284474201 1 1 0 +368 1 3 -1.05 -12.293483708242846 -16.552230120486666 3.2407464397069514 1 1 0 +371 1 1 1.575 -10.384193742378155 -11.959425939444456 0.00048685249345048476 1 1 0 +376 1 4 -0.95 -12.079303598777397 -11.886440401085338 1.0092857120331082 1 1 0 +380 1 5 0.425 8.05223641778737 -12.765497942560684 1.1480754613364113 0 1 0 +401 1 1 1.575 -7.832364735753668 -16.442302159158654 0.0004887404677624829 1 1 0 +403 1 2 2.1 -7.0192621716443195 -15.077726395299486 2.7652785593097526 1 1 0 +404 1 3 -1.05 -7.240423003632657 -17.962013523315086 1.1390571695805392 1 1 0 +405 1 3 -1.05 -6.88503232555705 -15.170587037025818 1.1403751249754315 1 1 0 +406 1 4 -0.95 -9.52742392394671 -16.369313757792415 1.0092944834335125 1 1 0 +407 1 3 -1.05 -10.873642789988851 -14.376520147083449 3.238990044343934 1 1 0 +408 1 3 -1.05 -7.133480193318928 -16.55222721372571 3.240744460593115 1 1 0 +409 1 3 -1.05 -8.284118927456472 -14.224648350829375 3.0491654057163835 1 1 0 +410 1 5 0.425 -10.035955666435909 -17.24840570373585 1.1481612082133505 1 1 0 +411 1 1 1.575 -5.22420079757442 -11.959422800114778 0.00048645201034069885 1 1 0 +412 1 2 2.1 -9.650890626615093 -13.549995402180539 2.7573154149176524 1 1 0 +413 1 2 2.1 -9.571101081554449 -10.59487844511782 2.7652931515755252 1 1 0 +414 1 3 -1.05 -9.79225658896784 -13.479085120313027 1.1390395402492484 1 1 0 +415 1 3 -1.05 -9.43688362912373 -10.687658124577233 1.1404014440605117 1 1 0 +416 1 4 -0.95 -6.919301425568876 -11.886441838598635 1.0092790865815378 1 1 0 +417 1 3 -1.05 -8.26551829041191 -9.893604601648414 3.23898900788749 1 1 0 +418 1 3 -1.05 -9.68530634639146 -12.06916633578844 3.2407391018412675 1 1 0 +419 1 3 -1.05 -10.835946889124276 -9.741756916972987 3.0491804516627496 1 1 0 +420 1 5 0.425 -7.427780896515371 -12.765496313753136 1.148045263075046 1 1 0 +421 1 1 1.575 -7.816647968665705 -10.455164560774879 -0.0004897073322478462 1 1 0 +431 1 1 1.575 -10.424802848423498 -14.93805036694446 -0.0004859056005166451 1 1 0 +441 1 1 1.575 -2.672356985637104 -16.442304661398456 0.0004900967852954352 1 1 0 +443 1 2 2.1 -1.859254766057532 -15.077715497267564 2.7652856485819424 1 1 0 +444 1 3 -1.05 -2.080427517107452 -17.96201341457353 1.1390669364709627 1 1 0 +445 1 3 -1.05 -1.7250341319023796 -15.170586397099527 1.1403800605829684 1 1 0 +446 1 4 -0.95 -4.367430017015452 -16.369322564554952 1.009292140799971 1 1 0 +447 1 3 -1.05 -5.713619531094013 -14.376507547027593 3.2389899091549132 1 1 0 +448 1 3 -1.05 -1.9734837675643213 -16.552233362306946 3.2407464072217795 1 1 0 +449 1 3 -1.05 -3.124107903450609 -14.224654635100869 3.0491639457169573 1 1 0 +450 1 5 0.425 -4.875966104966851 -17.24840844446412 1.1481201137788588 1 1 0 +452 1 2 2.1 -4.490906768877101 -13.549992289876716 2.7573182139731394 1 1 0 +453 1 2 2.1 -4.411121706661005 -10.594869786965624 2.7652903571435505 1 1 0 +454 1 3 -1.05 -4.632254153063665 -13.479086778990123 1.1390428907981356 1 1 0 +455 1 3 -1.05 -4.276884510841384 -10.687657631952451 1.140398470795125 1 1 0 +456 1 4 -0.95 -1.759303475003291 -11.886440295102556 1.0092857335364354 1 1 0 +457 1 3 -1.05 -3.1054929638501587 -9.893589696855543 3.238986417750816 1 1 0 +458 1 3 -1.05 -4.5253080460816815 -12.069187701329469 3.240738460509835 1 1 0 +459 1 3 -1.05 -5.6759330828412295 -9.741765530480448 3.049181725968289 1 1 0 +461 1 1 1.575 -2.6566402814800893 -10.455168034309882 -0.0004892102139120169 1 1 0 +471 1 1 1.575 -5.264810010804999 -14.938048096264206 -0.000487296179734642 1 1 0 +904 1 3 -1.05 -10.161854685695545 -18.083120592662027 8.050830551575691 1 1 0 +944 1 3 -1.05 -5.0018574844249635 -18.08311895062402 8.050827904580979 1 1 0 +1026 1 4 -0.95 -12.978516922048088 -10.709978874953269 8.180583642606527 1 1 0 +1027 1 3 -1.05 -11.63229786651004 -12.702775234356054 5.950880154637874 1 1 0 +1032 1 2 2.1 -12.855048702475655 -13.529314203926136 6.432556100815381 1 1 0 +1033 1 2 2.1 -12.934828913170918 -16.484422806588526 6.424584210403742 1 1 0 +1034 1 3 -1.05 -12.713689435153274 -13.600211848270453 8.050834252924775 1 1 0 +1035 1 3 -1.05 -13.069060384643878 -16.39164043985936 8.04947631781359 1 1 0 +1038 1 3 -1.05 -12.820637718787896 -15.010116398098276 5.949134768177112 1 1 0 +1039 1 3 -1.05 -11.66999655483321 -17.337541956749448 6.140690977240167 1 1 0 +1062 1 2 2.1 -10.303209469423026 -18.012230849774276 6.432564214130078 1 1 0 +1063 1 2 2.1 -10.326696781513265 -12.001574504575316 6.424588327366143 1 1 0 +1065 1 3 -1.05 -10.46091070201314 -11.908711333552967 8.04949252107611 1 1 0 +1066 1 4 -0.95 -7.818513991591397 -10.709979211148491 8.180577084620788 1 1 0 +1067 1 3 -1.05 -6.472326004187935 -12.702791670718351 5.9508827006348675 1 1 0 +1068 1 3 -1.05 -10.212461185927816 -10.527079940778258 5.9491249291990975 1 1 0 +1069 1 3 -1.05 -9.061822886101059 -12.854652084676546 6.140708572507496 1 1 0 +1070 1 5 0.425 -7.309988942363981 -9.83088467575225 8.041736795520984 1 1 0 +1072 1 2 2.1 -7.695041897866641 -13.529307071510981 6.432551577978835 1 1 0 +1073 1 2 2.1 -7.774834793344618 -16.484434939947647 6.424577603346634 1 1 0 +1074 1 3 -1.05 -7.553685084393516 -13.60021181043779 8.050823752129004 1 1 0 +1075 1 3 -1.05 -7.90905859095466 -16.39164117482209 8.049471719485046 1 1 0 +1076 1 4 -0.95 -10.426647145797157 -15.192866902601361 8.180586106999344 1 1 0 +1077 1 3 -1.05 -9.080429028015885 -17.18569724875303 5.950884797992369 1 1 0 +1078 1 3 -1.05 -7.660633858427131 -15.010107503057135 5.949133029699604 1 1 0 +1079 1 3 -1.05 -6.510008950950501 -17.337534855285654 6.140692414529196 1 1 0 +1080 1 5 0.425 -9.918176441334206 -14.313808476712383 8.041767318325997 1 1 0 +1102 1 2 2.1 -5.143192688598495 -18.01223469020368 6.43256163865242 1 1 0 +1103 1 2 2.1 -5.166674659914734 -12.001581247949602 6.42459150745173 1 1 0 +1105 1 3 -1.05 -5.30091011073581 -11.90871163472071 8.049495593212923 1 1 0 +1106 1 4 -0.95 -2.6585163778844034 -10.709977949816722 8.18058344571133 1 1 0 +1108 1 3 -1.05 -5.052460029806349 -10.527060001226648 5.949125945371383 1 1 0 +1109 1 3 -1.05 -3.9018353937420382 -12.854644320517036 6.140707119099776 1 1 0 +1110 1 5 0.425 -2.149972520489074 -9.830886800682975 8.041764004644078 1 1 0 +1112 1 2 2.1 -2.535048249868213 -13.529314790919454 6.4325557752826 1 1 0 +1113 1 2 2.1 -2.614828592705191 -16.484424453660697 6.424584582139241 1 1 0 +1114 1 3 -1.05 -2.3936893961900143 -13.60021174374376 8.050833520746858 1 1 0 +1115 1 3 -1.05 -2.7490603036216505 -16.391640281660283 8.049476486761636 1 1 0 +1116 1 4 -0.95 -5.26664099130191 -15.192857666732323 8.180588944438727 1 1 0 +1117 1 3 -1.05 -3.92045104663105 -17.18570897645179 5.950884811850528 1 1 0 +1118 1 3 -1.05 -2.5006374505687665 -15.010113340479645 5.949134814048831 1 1 0 +1120 1 5 0.425 -4.758164912029445 -14.313806137693177 8.041810512450352 1 1 0 +162 1 2 2.1 3.2209340369483392 -18.032833757481832 2.7573218012303666 0 1 0 +321 1 1 1.575 2.4876351465059408 -16.442302154784315 0.0004888543282763891 0 1 0 +323 1 2 2.1 3.300736726127152 -15.077726538699793 2.7652785057231757 0 1 0 +324 1 3 -1.05 3.079577082904713 -17.962013555013442 1.1390567851692257 0 1 0 +325 1 3 -1.05 3.4349676885715965 -15.17058703603631 1.1403750102570616 0 1 0 +326 1 4 -0.95 0.7925763172482458 -16.369313154371326 1.0092944072974692 0 1 0 +327 1 3 -1.05 -0.5536431863284719 -14.376520315382402 3.2389901201446865 0 1 0 +328 1 3 -1.05 3.186519855031559 -16.552227249856152 3.240744515086007 0 1 0 +329 1 3 -1.05 2.0358818673234893 -14.224648915409531 3.0491654939012367 0 1 0 +330 1 5 0.425 0.2840440343041557 -17.248406206415737 1.1481612674588284 0 1 0 +331 1 1 1.575 5.095799077392401 -11.95942278124406 0.0004864450394208575 0 1 0 +332 1 2 2.1 0.669109464863638 -13.549995278717017 2.757315210932033 0 1 0 +333 1 2 2.1 0.7488989807994404 -10.594878651163997 2.765293220622354 0 1 0 +334 1 3 -1.05 0.5277433362522466 -13.479085130961657 1.1390393870012794 0 1 0 +335 1 3 -1.05 0.8831162860029735 -10.68765806499949 1.1404014490301666 0 1 0 +336 1 4 -0.95 3.4006984714464785 -11.886441915318503 1.009279146529078 0 1 0 +337 1 3 -1.05 2.05448186886235 -9.89360444283963 3.2389889279451722 0 1 0 +338 1 3 -1.05 0.6346935230510518 -12.069165638686224 3.240739110626995 0 1 0 +339 1 3 -1.05 -0.5159464707475578 -9.741757212644893 3.0491802687542187 0 1 0 +340 1 5 0.425 2.892219107482818 -12.76549622369036 1.1480452697934158 0 1 0 +341 1 1 1.575 2.5033520639114464 -10.45516467544924 -0.0004897125671803337 0 1 0 +351 1 1 1.575 -0.10480281833843286 -14.938050279884052 -0.00048588915579017566 0 1 0 +361 1 1 1.575 7.6476430809013145 -16.442304686736612 0.00049038023432324 0 1 0 +364 1 3 -1.05 8.239572543766378 -17.962013382666825 1.1390663747804606 0 1 0 +366 1 4 -0.95 5.952569848038642 -16.369322613306085 1.009292148021041 0 1 0 +367 1 3 -1.05 4.60638206298816 -14.376506603214507 3.2389897937288765 0 1 0 +369 1 3 -1.05 7.195891896594336 -14.224654560331162 3.049163809309336 0 1 0 +370 1 5 0.425 5.444033924435217 -17.248408369389658 1.14812008570199 0 1 0 +372 1 2 2.1 5.829092303814921 -13.54999199012334 2.757318610834842 0 1 0 +373 1 2 2.1 5.90887749264844 -10.594869830017455 2.7652903021076654 0 1 0 +374 1 3 -1.05 5.6877459594373825 -13.479086764973678 1.1390432596793474 0 1 0 +375 1 3 -1.05 6.043115538450444 -10.687657699182285 1.1403981434855215 0 1 0 +377 1 3 -1.05 7.214508812427347 -9.893588586527766 3.2389864017305623 0 1 0 +378 1 3 -1.05 5.794691970346413 -12.069189428924563 3.240738236405365 0 1 0 +379 1 3 -1.05 4.644066780347256 -9.741765351175818 3.0491815811632907 0 1 0 +381 1 1 1.575 7.663359745050162 -10.455168066687937 -0.0004892393395401484 0 1 0 +391 1 1 1.575 5.055189932412219 -14.938048027032371 -0.0004872860180871186 0 1 0 +451 1 1 1.575 -0.06419364919500303 -11.959425986989281 0.0004869662395279306 1 1 0 +460 1 5 0.425 -2.2677636282949134 -12.76549803894805 1.148075362714911 1 1 0 +824 1 3 -1.05 0.1581453413464491 -18.083120565372205 8.050830868008626 0 1 0 +864 1 3 -1.05 5.318142529558035 -18.083119031532103 8.050827887575677 0 1 0 +982 1 2 2.1 0.01679048455388532 -18.01223102881715 6.432564492236768 0 1 0 +983 1 2 2.1 -0.0066952224139544825 -12.001572696194678 6.424588219561466 0 1 0 +985 1 3 -1.05 -0.14091080181982996 -11.90871125431586 8.049492287832761 0 1 0 +986 1 4 -0.95 2.501485979919419 -10.709979047674722 8.180577187844913 0 1 0 +987 1 3 -1.05 3.8476721766409234 -12.702792935609825 5.9508827991561954 0 1 0 +988 1 3 -1.05 0.10753867741342837 -10.527082522856396 5.949125116992775 0 1 0 +989 1 3 -1.05 1.2581766829054715 -12.854651901566331 6.140708678514933 0 1 0 +990 1 5 0.425 3.010011029658287 -9.83088482771142 8.041736728168713 0 1 0 +992 1 2 2.1 2.624959204051148 -13.529306355082204 6.43255142132813 0 1 0 +993 1 2 2.1 2.545164633028703 -16.48443503403599 6.42457746374043 0 1 0 +994 1 3 -1.05 2.7663148605711587 -13.600211881262618 8.050823710986089 0 1 0 +995 1 3 -1.05 2.4109413776533053 -16.391641111187187 8.049471733472652 0 1 0 +996 1 4 -0.95 -0.1066473719781591 -15.192867242576972 8.180586172547835 0 1 0 +997 1 3 -1.05 1.2395719193215697 -17.185696569519184 5.950884733429518 0 1 0 +998 1 3 -1.05 2.659366057346901 -15.010107680149012 5.949132937132072 0 1 0 +999 1 3 -1.05 3.809991544530318 -17.337535214117086 6.140692372135046 0 1 0 +1000 1 5 0.425 0.40182382453956933 -14.313808115235338 8.041767358684657 0 1 0 +1022 1 2 2.1 5.176806602000145 -18.01223478887661 6.432561551916441 0 1 0 +1023 1 2 2.1 5.153325970226241 -12.001581171312154 6.424591592957077 0 1 0 +1025 1 3 -1.05 5.019090010771908 -11.908711671328648 8.04949592036308 0 1 0 +1028 1 3 -1.05 5.267540194467005 -10.527058835775907 5.9491260060330475 0 1 0 +1029 1 3 -1.05 6.418164130946273 -12.854644032937445 6.140707132764247 0 1 0 +1030 1 5 0.425 -12.469972004930579 -9.830886011965626 8.04176389538827 1 1 0 +1036 1 4 -0.95 5.053359381870932 -15.192857077416427 8.18058886353535 0 1 0 +1037 1 3 -1.05 6.399549290938857 -17.18570880002915 5.95088487910323 0 1 0 +1040 1 5 0.425 5.561834684837105 -14.313806813221188 8.041810608039574 0 1 0 +1107 1 3 -1.05 -1.3122999739981296 -12.70277646304137 5.950880254538765 1 1 0 +1119 1 3 -1.05 -1.3499973134743044 -17.337541538579533 6.140690843939177 1 1 0 +362 1 2 2.1 -12.202744771981509 -9.067064814200972 2.7573119706868425 1 1 0 +402 1 2 2.1 -7.04273866849521 -9.067055088426352 2.757307939589456 1 1 0 +442 1 2 2.1 -1.8827442162924566 -9.067062967529901 2.7573120570116707 1 1 0 +523 1 2 2.1 -12.122921769822408 -6.111929983949841 2.765291027036895 1 1 0 +525 1 3 -1.05 -11.988703560905819 -6.204760843795567 1.1403957796501452 1 1 0 +528 1 3 -1.05 -12.237149424227058 -7.5863238195216365 3.2407527420150988 1 1 0 +531 1 1 1.575 -10.327858771543793 -2.9935731989533902 0.0004888265444922268 1 1 0 +536 1 4 -0.95 -12.022931150481051 -2.920580487258352 1.0093004267478776 1 1 0 +540 1 5 0.425 8.108558594315166 -3.7996512054948504 1.148212040044502 0 1 0 +561 1 1 1.575 -7.776025262711729 -7.4765049298112505 0.0004881991149989773 1 1 0 +563 1 2 2.1 -6.962930286971465 -6.111939824800135 2.765283881410019 1 1 0 +564 1 3 -1.05 -7.184085023643926 -8.99618073281571 1.1390399029648446 1 1 0 +565 1 3 -1.05 -6.828701808117627 -6.204761586454861 1.1403901964143177 1 1 0 +566 1 4 -0.95 -9.471118879929094 -7.403529138856177 1.0092745530484954 1 1 0 +567 1 3 -1.05 -10.817325824488437 -5.4107065420677785 3.2389947847718457 1 1 0 +568 1 3 -1.05 -7.07714607080063 -7.586320418897543 3.240750734425326 1 1 0 +569 1 3 -1.05 -8.227783475860987 -5.258830022264039 3.0491700040117298 1 1 0 +570 1 5 0.425 -9.979621696041477 -8.282638958710844 1.14794634211753 1 1 0 +571 1 1 1.575 -5.167865926094019 -2.9935700449751117 0.0004884982994557419 1 1 0 +572 1 2 2.1 -9.594553208812169 -4.584114830084795 2.7573247242772645 1 1 0 +573 1 2 2.1 -9.514752964904952 -1.6290031107655665 2.76528557294675 1 1 0 +574 1 3 -1.05 -9.735924934424778 -4.5132754309991014 1.1390582524844408 1 1 0 +575 1 3 -1.05 -9.380536654292207 -1.7218462684346072 1.140382320970689 1 1 0 +576 1 4 -0.95 -6.862929549230458 -2.92058282567767 1.0092939379568069 1 1 0 +577 1 3 -1.05 -8.209153404187742 -0.9277818004229132 3.238988388541747 1 1 0 +578 1 3 -1.05 -9.62897585444286 -3.103458654146092 3.240740428512092 1 1 0 +579 1 3 -1.05 -10.779616213891364 -0.7759196991747856 3.049168880743542 1 1 0 +580 1 5 0.425 -7.371458392180491 -3.799648965132267 1.1481816702921979 1 1 0 +581 1 1 1.575 -7.760307453210186 -1.4893294292081407 -0.000487591834845702 1 1 0 +591 1 1 1.575 -10.368475011993443 -5.972216450792448 -0.0004866657689603926 1 1 0 +601 1 1 1.575 -2.6160175804425334 -7.476507331401965 0.000489554412521187 1 1 0 +603 1 2 2.1 -1.8029234809179044 -6.111929469506379 2.765290938817035 1 1 0 +604 1 3 -1.05 -2.0240895156060503 -8.996180475658797 1.1390497095690097 1 1 0 +605 1 3 -1.05 -1.6687035111919997 -6.204760947315812 1.1403951214536825 1 1 0 +606 1 4 -0.95 -4.311125240437589 -7.40353853925054 1.0092720638271473 1 1 0 +607 1 3 -1.05 -5.657299784603431 -5.4106924097233176 3.2389943904105305 1 1 0 +608 1 3 -1.05 -1.9171495422821216 -7.586325941483118 3.240752466809111 1 1 0 +609 1 3 -1.05 -3.0677722086720367 -5.258836440196976 3.049168256994184 1 1 0 +610 1 5 0.425 -4.819631740010255 -8.28264108406943 1.147905363302021 1 1 0 +612 1 2 2.1 -4.434571167364412 -4.584112138551882 2.757328005439472 1 1 0 +613 1 2 2.1 -4.35477408472807 -1.6289950360376295 2.765282611037348 1 1 0 +614 1 3 -1.05 -4.575922294211849 -4.513277152884633 1.1390617721334308 1 1 0 +615 1 3 -1.05 -4.220537459731567 -1.7218458350906225 1.1403790499316706 1 1 0 +616 1 4 -0.95 -1.7029315494609438 -2.920581286855313 1.009300527997441 1 1 0 +617 1 3 -1.05 -3.049127074634125 -0.9277662650700513 3.238986045411176 1 1 0 +618 1 3 -1.05 -4.468977447340732 -3.1034809491568094 3.2407397732533028 1 1 0 +619 1 3 -1.05 -5.619602858246474 -0.7759278254115536 3.049170295315518 1 1 0 +621 1 1 1.575 -2.600299716589224 -1.4893328740682321 -0.0004870341551566071 1 1 0 +631 1 1 1.575 -5.208482201015078 -5.972214134547372 -0.00048794280472819196 1 1 0 +1064 1 3 -1.05 -10.105516488566403 -9.1172864545765 8.050812017095526 1 1 0 +1104 1 3 -1.05 -4.94551950969972 -9.117284875156573 8.050809425873682 1 1 0 +1186 1 4 -0.95 -12.922163181072401 -1.7441480862858398 8.180580989048229 1 1 0 +1187 1 3 -1.05 -11.57594038211662 -3.736962709780661 5.950884644536357 1 1 0 +1192 1 2 2.1 -12.798703976852076 -4.563477223935855 6.4325671062022085 1 1 0 +1193 1 2 2.1 -12.87850157426794 -7.518594866582022 6.4245838131711785 1 1 0 +1194 1 3 -1.05 -12.657357075069436 -4.634391310577776 8.050841207753615 1 1 0 +1195 1 3 -1.05 -13.012730287598115 -7.425811152679454 8.049471003457095 1 1 0 +1198 1 3 -1.05 -12.764298791768608 -6.044310212087346 5.949124918515372 1 1 0 +1199 1 3 -1.05 -11.613660044905913 -8.371724217557164 6.1406940776695595 1 1 0 +1222 1 2 2.1 -10.246880790109062 -9.046458105402944 6.432550667813766 1 1 0 +1223 1 2 2.1 -10.270345504929077 -3.0357170181300006 6.4245835383340175 1 1 0 +1225 1 3 -1.05 -10.404563440926587 -2.942901247124354 8.049482833097352 1 1 0 +1226 1 4 -0.95 -7.762161044690064 -1.744149770475424 8.180574812461733 1 1 0 +1227 1 3 -1.05 -6.415966116593134 -3.73697764701976 5.9508871807473405 1 1 0 +1228 1 3 -1.05 -10.156132949827974 -1.561327845464941 5.94913393800597 1 1 0 +1229 1 3 -1.05 -9.005492655293018 -3.8888143704750213 6.140697709391448 1 1 0 +1230 1 5 0.425 -7.2536721407950715 -0.8650918391092688 8.041681601019869 1 1 0 +1232 1 2 2.1 -7.638697839125399 -4.56346976541589 6.432562555622445 1 1 0 +1233 1 2 2.1 -7.718506635912108 -7.518604577415662 6.424576758095252 1 1 0 +1234 1 3 -1.05 -7.497352805807434 -4.634391240549473 8.05083153086409 1 1 0 +1235 1 3 -1.05 -7.852728552110221 -7.425811958730723 8.04946655754084 1 1 0 +1236 1 4 -0.95 -10.370302228905821 -6.227020102282678 8.180601687842392 1 1 0 +1237 1 3 -1.05 -9.024099865185532 -8.219863735211376 5.950878868492627 1 1 0 +1238 1 3 -1.05 -7.604295208524743 -6.044303920000971 5.949123349425319 1 1 0 +1239 1 3 -1.05 -6.453672021320111 -8.371717534647717 6.140695622062312 1 1 0 +1240 1 5 0.425 -9.861830566687258 -5.347927183164366 8.041954081983627 1 1 0 +1262 1 2 2.1 -5.086864118735355 -9.046460824361695 6.432547962331752 1 1 0 +1263 1 2 2.1 -5.110325060390764 -3.0357264779902415 6.4245866001619785 1 1 0 +1265 1 3 -1.05 -5.2445627758652025 -2.942901539041836 8.049486192414905 1 1 0 +1266 1 4 -0.95 -2.6021638449486817 -1.7441493140479167 8.180581250684453 1 1 0 +1268 1 3 -1.05 -4.996131563332382 -1.561304142262447 5.949134847146771 1 1 0 +1269 1 3 -1.05 -3.845505208560062 -3.888806435255866 6.140696375915624 1 1 0 +1270 1 5 0.425 -2.0936552768300416 -0.8650931226092098 8.041708750676337 1 1 0 +1272 1 2 2.1 -2.478705083415977 -4.563478530750267 6.432566771448263 1 1 0 +1273 1 2 2.1 -2.5585004268402667 -7.518594042662386 6.424583683031381 1 1 0 +1274 1 3 -1.05 -2.337357058590765 -4.6343911683899695 8.050841730975934 1 1 0 +1275 1 3 -1.05 -2.692730278146584 -7.4258112933116 8.049471495897967 1 1 0 +1276 1 4 -0.95 -5.210295954483267 -6.227010516473889 8.180604547038248 1 1 0 +1277 1 3 -1.05 -3.86412183624161 -8.219875620457026 5.950879044037668 1 1 0 +1278 1 3 -1.05 -2.4442987304969392 -6.044309813785304 5.949125141897687 1 1 0 +1280 1 5 0.425 -4.701819271798077 -5.3479252345724095 8.041997228930375 1 1 0 +322 1 2 2.1 3.2772610098674093 -9.067055693067015 2.7573080000114008 0 1 0 +481 1 1 1.575 2.5439746362228775 -7.476504835357023 0.000488107312015984 0 1 0 +483 1 2 2.1 3.3570675650653765 -6.1119409913516805 2.765283658968608 0 1 0 +484 1 3 -1.05 3.1359149983488273 -8.996180653887704 1.1390399010220378 0 1 0 +485 1 3 -1.05 3.4912982864764803 -6.204761586269585 1.1403902809350122 0 1 0 +486 1 4 -0.95 0.848880935670131 -7.403529456906714 1.0092745179848404 0 1 0 +487 1 3 -1.05 -0.4973223654953767 -5.4107043825084595 3.2389946445963442 0 1 0 +488 1 3 -1.05 3.2428541215929787 -7.586319587782093 3.2407506030975757 0 1 0 +489 1 3 -1.05 2.0922173637001134 -5.258830509141244 3.049170069120102 0 1 0 +490 1 5 0.425 0.34037849430467304 -8.282638585494373 1.1479463507303809 0 1 0 +491 1 1 1.575 5.152133947531471 -2.9935699784041603 0.0004881234041693716 0 1 0 +492 1 2 2.1 0.7254445666488039 -4.58411548963857 2.7573250239711573 0 1 0 +493 1 2 2.1 0.8052450939405311 -1.6290034167113632 2.7652851130343965 0 1 0 +494 1 3 -1.05 0.5840751961211161 -4.513275537476634 1.139058491185871 0 1 0 +495 1 3 -1.05 0.9394635072903537 -1.7218461634728612 1.1403819751435265 0 1 0 +496 1 4 -0.95 3.457070537219302 -2.9205829409048096 1.0092940260285932 0 1 0 +497 1 3 -1.05 2.1108492600941755 -0.9277801182782781 3.2389884882436597 0 1 0 +498 1 3 -1.05 0.6910242115697844 -3.103459227797069 3.240740522829608 0 1 0 +499 1 3 -1.05 -0.45961486738614177 -0.7759203181741157 3.049168941857401 0 1 0 +500 1 5 0.425 2.9485416775480626 -3.7996487609851872 1.148181457575495 0 1 0 +501 1 1 1.575 2.5596923414053414 -1.4893294760794085 -0.00048791691717831043 0 1 0 +511 1 1 1.575 -0.048475029845510775 -5.9722163822729275 -0.000486610148280775 0 1 0 +521 1 1 1.575 7.703982404569835 -7.47650743047992 0.0004894906663004406 0 1 0 +524 1 3 -1.05 8.295910521844277 -8.996180577499706 1.1390498499011983 0 1 0 +526 1 4 -0.95 6.008874247849864 -7.403539256615227 1.009272347205897 0 1 0 +527 1 3 -1.05 4.662703122988951 -5.410690550977408 3.238994424282833 0 1 0 +529 1 3 -1.05 7.25222715620599 -5.258835994797554 3.0491686153219923 0 1 0 +530 1 5 0.425 5.500368804549042 -8.28264025862713 1.1479051971829524 0 1 0 +532 1 2 2.1 5.885427782213334 -4.584112735919096 2.7573281465655857 0 1 0 +533 1 2 2.1 5.965226467012172 -1.628993361989938 2.7652825479136283 0 1 0 +534 1 3 -1.05 5.74407777792679 -4.5132770146071675 1.1390625883841388 0 1 0 +535 1 3 -1.05 6.0994626404410575 -1.7218459113188977 1.1403796100854198 0 1 0 +537 1 3 -1.05 7.270871098481489 -0.9277673866200544 3.2389858821101694 0 1 0 +538 1 3 -1.05 5.8510226007914845 -3.103482215879012 3.240739632064548 0 1 0 +539 1 3 -1.05 4.7003977117094315 -0.7759282649032926 3.0491702761655297 0 1 0 +541 1 1 1.575 7.71970016267743 -1.4893327968293981 -0.0004872882145861013 0 1 0 +551 1 1 1.575 5.111517638351028 -5.972214169324591 -0.00048815723114969956 0 1 0 +611 1 1 1.575 -0.0078587283292606 -2.9935732581044245 0.0004888922267749507 1 1 0 +620 1 5 0.425 -2.211440966107384 -3.7996504259139385 1.1482119261243664 1 1 0 +984 1 3 -1.05 0.21448346242866556 -9.117286626928372 8.050812484857788 0 1 0 +1024 1 3 -1.05 5.374480667058524 -9.1172847465118 8.050809703370929 0 1 0 +1142 1 2 2.1 0.07311912259206466 -9.046457539168534 6.432550791979782 0 1 0 +1143 1 2 2.1 0.049653605296850145 -3.0357192834675537 6.424583355385289 0 1 0 +1145 1 3 -1.05 -0.0845634540740896 -2.9429011311913413 8.049482748208861 0 1 0 +1146 1 4 -0.95 2.5578388527215647 -1.7441499838946513 8.180574701561904 0 1 0 +1147 1 3 -1.05 3.904034789903749 -3.7369772016518894 5.950886974857758 0 1 0 +1148 1 3 -1.05 0.1638671308906794 -1.5613255896995106 5.949134016742535 0 1 0 +1149 1 3 -1.05 1.3145065630773924 -3.8888138098807907 6.140697691304018 0 1 0 +1150 1 5 0.425 3.0663280045002406 -0.8650917177898982 8.041681658582819 0 1 0 +1152 1 2 2.1 2.681301696828717 -4.563470951334201 6.432562677791433 0 1 0 +1153 1 2 2.1 2.6014924415491016 -7.518605844210883 6.42457670393048 0 1 0 +1154 1 3 -1.05 2.8226473559855396 -4.634391279296553 8.050831493737332 0 1 0 +1155 1 3 -1.05 2.467271583937638 -7.425811889492945 8.049466671649265 0 1 0 +1156 1 4 -0.95 -0.050302377863054915 -6.227020357623573 8.18060186788391 0 1 0 +1157 1 3 -1.05 1.2959016487701724 -8.219862803300558 5.950878899595457 0 1 0 +1158 1 3 -1.05 2.715705046173925 -6.0443024015894125 5.949123183070215 0 1 0 +1159 1 3 -1.05 3.866328082096553 -8.371717396852594 6.14069563666442 0 1 0 +1160 1 5 0.425 0.45816960045136135 -5.347926987828261 8.041953993827088 0 1 0 +1182 1 2 2.1 5.233134204042219 -9.046462615939763 6.432548060968001 0 1 0 +1183 1 2 2.1 5.209674691687077 -3.035725777150798 6.42458687581861 0 1 0 +1185 1 3 -1.05 5.075437238345243 -2.9429016177355063 8.0494859105205 0 1 0 +1188 1 3 -1.05 5.323868516938102 -1.5613057900237983 5.949134653550393 0 1 0 +1189 1 3 -1.05 6.474494628261173 -3.8888064118199335 6.140696088678768 0 1 0 +1190 1 5 0.425 -12.413655946990202 -0.8650943030890836 8.041708999745945 1 1 0 +1196 1 4 -0.95 5.109703718829179 -6.227011235494134 8.180604680522054 0 1 0 +1197 1 3 -1.05 6.455880799282653 -8.219873725450045 5.950878826176888 0 1 0 +1200 1 5 0.425 5.618181133036563 -5.347924456811681 8.0419973088112 0 1 0 +1267 1 3 -1.05 -1.255938118796582 -3.736961290112877 5.95088464227411 1 1 0 +1279 1 3 -1.05 -1.293660683856988 -8.371724040207935 6.140694136436416 1 1 0 +43 1 2 2.1 -12.066603589864952 2.8538562635186473 2.765296766562731 1 0 0 +45 1 3 -1.05 -11.932382242280934 2.7610755310900856 1.1404071534983906 1 0 0 +48 1 3 -1.05 -12.180808606969753 1.3795772494375846 3.2407446680776673 1 0 0 +51 1 1 1.575 -10.271517178678891 5.972243043476983 0.0004897808600361486 1 0 0 +56 1 4 -0.95 -11.966601677508535 6.045223061069063 1.0092868522084313 1 0 0 +60 1 5 0.425 8.164880641989306 5.166117461622548 1.1480432930863778 0 0 0 +81 1 1 1.575 -7.719695704081541 1.489301984598221 0.00048620424004042206 1 0 0 +83 1 2 2.1 -6.906611830118906 2.853845289659727 2.765289513921303 1 0 0 +84 1 3 -1.05 -7.1277496439282455 -0.03034856107450068 1.1390300687638835 1 0 0 +85 1 3 -1.05 -6.772380470440207 2.7610747346770914 1.1404021270114981 1 0 0 +86 1 4 -0.95 -9.414807068563295 1.5622817433164506 1.0092737068243878 1 0 0 +87 1 3 -1.05 -10.761016708915546 3.5551257680232844 3.2389908036271358 1 0 0 +88 1 3 -1.05 -7.020805055588193 1.3795831051103633 3.2407426091838403 1 0 0 +89 1 3 -1.05 -8.171444330233143 3.706977523559388 3.0491815779021074 1 0 0 +90 1 5 0.425 -9.92326936174715 0.6832053400645641 1.1479687029894574 1 0 0 +91 1 1 1.575 -5.111524290678346 5.972246284049945 0.0004894123271252937 1 0 0 +92 1 2 2.1 -9.53822873762858 4.381702400713934 2.7573155444923465 1 0 0 +93 1 2 2.1 -9.458410238013869 7.33682068730624 2.765285098253017 1 0 0 +94 1 3 -1.05 -9.679588290829658 4.45254795692637 1.139053534311218 1 0 0 +95 1 3 -1.05 -9.324195367300185 7.243969020237035 1.140384524236497 1 0 0 +96 1 4 -0.95 -6.806599492258481 6.045221693669681 1.009280187757005 1 0 0 +97 1 3 -1.05 -8.152808576570859 8.038030966821896 3.2389942981918 1 0 0 +98 1 3 -1.05 -9.572645830808028 5.862365851389207 3.2407504502190747 1 0 0 +99 1 3 -1.05 -10.723283583484175 8.18991092687909 3.0491638601374564 1 0 0 +100 1 5 0.425 -7.315136856531225 5.166118893998583 1.1480131499026296 1 0 0 +101 1 1 1.575 -7.703976890906669 7.476521396452124 -0.0004869418693242977 1 0 0 +111 1 1 1.575 -10.312141649453219 2.9935784879242497 -0.0004884588124696165 1 0 0 +121 1 1 1.575 -2.5596879766050353 1.4892994022197463 0.0004876271542961774 1 0 0 +123 1 2 2.1 -1.7466035808200573 2.8538558037971953 2.7652965023822897 1 0 0 +124 1 3 -1.05 -1.9677540888021028 -0.03034837344207375 1.1390396821506403 1 0 0 +126 1 4 -0.95 -4.25481364789182 1.5622718466590193 1.009271365196117 1 0 0 +127 1 3 -1.05 -5.6009918988674805 3.55513912460707 3.2389905823258385 1 0 0 +128 1 3 -1.05 -1.860808583710753 1.3795779024677586 3.240744602344904 1 0 0 +129 1 3 -1.05 -3.0114343038263804 3.7069717528642663 3.04917999216428 1 0 0 +130 1 5 0.425 -4.763279165866927 0.6832035674608612 1.1479273728367207 1 0 0 +132 1 2 2.1 -4.378245338999152 4.38170538944145 2.7573185647135965 1 0 0 +133 1 2 2.1 -4.298430131568423 7.336829694841267 2.765282372169972 1 0 0 +134 1 3 -1.05 -4.519585788114593 4.452546370179327 1.1390572508955117 1 0 0 +135 1 3 -1.05 -4.164196247857843 7.243969567402647 1.1403816035253787 1 0 0 +137 1 3 -1.05 -2.992784551459188 8.03804507272551 3.238991727054886 1 0 0 +138 1 3 -1.05 -4.412647569640212 5.86234321615736 3.240749786939869 1 0 0 +139 1 3 -1.05 -5.563270268907923 8.189902706625428 3.049165190799913 1 0 0 +141 1 1 1.575 -2.543969087429206 7.476517985115045 -0.0004862871680106906 1 0 0 +151 1 1 1.575 -5.1521487769677075 2.9935806762264434 -0.0004901006836668387 1 0 0 +522 1 2 2.1 -12.14640321562067 -0.10127600189234087 2.7573120460055964 1 1 0 +562 1 2 2.1 -6.986398207724864 -0.1012687687102094 2.757308016998312 1 1 0 +602 1 2 2.1 -1.826404614623005 -0.10127704899093004 2.757311825180798 1 1 0 +706 1 4 -0.95 -12.865796022624288 7.221714492772325 8.180601207822123 1 0 0 +707 1 3 -1.05 -11.519585625908963 5.228867443825511 5.950880624420204 1 0 0 +712 1 2 2.1 -12.74236927286661 4.402289337375663 6.432558526054466 1 0 0 +713 1 2 2.1 -12.822179576740067 1.447177436755961 6.424591364431221 1 0 0 +714 1 3 -1.05 -12.601019912922663 4.331444765726772 8.050823657348074 1 0 0 +715 1 3 -1.05 -12.9564089613341 1.5400239285377246 8.049490036152141 1 0 0 +718 1 3 -1.05 -12.707959347486435 2.9216270213267173 5.949122287867622 1 0 0 +719 1 3 -1.05 -11.557321491073434 0.5940835324113181 6.140706214927789 1 0 0 +742 1 2 2.1 -10.190553470512224 -0.08060471526624369 6.432549047518183 1 0 0 +743 1 2 2.1 -10.214006128678415 5.930145239857023 6.424577571546896 1 0 0 +744 1 3 -1.05 -9.992850905501367 8.814341090685996 8.050837610229921 1 0 0 +745 1 3 -1.05 -10.348222732989003 6.022917560970665 8.049466320772085 1 0 0 +746 1 4 -0.95 -7.705793610382077 7.221713363185231 8.180594909971527 1 0 0 +747 1 3 -1.05 -6.35961233585525 5.228852016801575 5.9508831678014555 1 0 0 +748 1 3 -1.05 -10.099798574650077 7.404404225630994 5.9491289200407405 1 0 0 +749 1 3 -1.05 -8.949159917306673 5.077015823046679 6.140691533239114 1 0 0 +750 1 5 0.425 -7.197339347246486 8.100783891909586 8.041891733507144 1 0 0 +752 1 2 2.1 -7.582363175185557 4.40229803595107 6.4325545097206405 1 0 0 +753 1 2 2.1 -7.66218773373044 1.447166595599981 6.424584171396804 1 0 0 +754 1 3 -1.05 -7.441015439936198 4.33144478045222 8.050813764214633 1 0 0 +755 1 3 -1.05 -7.796407081280542 1.5400232594796925 8.04948484594699 1 0 0 +756 1 4 -0.95 -10.314003547549689 2.7387701229844446 8.180589327508356 1 0 0 +757 1 3 -1.05 -8.96779392146795 0.7459625241507837 5.950878464150257 1 0 0 +758 1 3 -1.05 -7.547955743292837 2.9216319108547033 5.949120478977855 1 0 0 +759 1 3 -1.05 -6.3973326315710946 0.5940898261857264 6.140707747743219 1 0 0 +760 1 5 0.425 -9.805482010992158 3.617879643362997 8.041844519342556 1 0 0 +782 1 2 2.1 -5.03053752216915 -0.08060905658925677 6.432546163227055 1 0 0 +783 1 2 2.1 -5.053985551934414 5.930137706277755 6.424580953091224 1 0 0 +784 1 3 -1.05 -4.832853756870046 8.814342658293356 8.050834914156995 1 0 0 +785 1 3 -1.05 -5.188222049286011 6.022917177987889 8.049469621886916 1 0 0 +786 1 4 -0.95 -2.54579593414841 7.221714309210501 8.180601184681164 1 0 0 +788 1 3 -1.05 -4.939797262145818 7.404425893631185 5.949129853518169 1 0 0 +789 1 3 -1.05 -3.7891712049732114 5.0770228189984365 6.140690056642459 1 0 0 +790 1 5 0.425 -2.0373227716303397 8.10078202006681 8.041919069850836 1 0 0 +792 1 2 2.1 -2.4223707917632114 4.4022905679840285 6.432558910582037 1 0 0 +793 1 2 2.1 -2.502180902736985 1.4471777819542027 6.424591034963024 1 0 0 +794 1 3 -1.05 -2.281019735917397 4.331444825132113 8.05082378781694 1 0 0 +795 1 3 -1.05 -2.636408851343842 1.5400238125742547 8.049489411652035 1 0 0 +796 1 4 -0.95 -5.15399710310596 2.7387798895711164 8.180592034792975 1 0 0 +797 1 3 -1.05 -3.8078161189370086 0.7459504928387659 5.950878669052271 1 0 0 +798 1 3 -1.05 -2.3879594652644123 2.921624344781165 5.949122369199204 1 0 0 +800 1 5 0.425 -4.645471004162632 3.6178812975920884 8.04188765083781 1 0 0 +902 1 2 2.1 -10.13421204796398 8.885266130047459 6.432562263168402 1 0 0 +942 1 2 2.1 -4.974195624506329 8.885262572218696 6.432559619577779 1 0 0 +1224 1 3 -1.05 -10.049182067561132 -0.1514710749753796 8.050819995602664 1 1 0 +1264 1 3 -1.05 -4.889184949315168 -0.15146950774747125 8.050816947112386 1 1 0 +1 1 1 1.575 2.6003042619820214 1.489301985987158 0.00048617890439572875 0 0 0 +3 1 2 2.1 3.413388030780098 2.853846993110462 2.7652894411413254 0 0 0 +4 1 3 -1.05 3.192250473216461 -0.030348573470597273 1.1390305483599548 0 0 0 +5 1 3 -1.05 3.5476195187832538 2.7610747149761714 1.1404022330734858 0 0 0 +6 1 4 -0.95 0.9051929855174699 1.5622817529618267 1.0092737393651063 0 0 0 +7 1 3 -1.05 -0.44101638859063463 3.5551258758509157 3.238990910738922 0 0 0 +8 1 3 -1.05 3.2991948449339965 1.3795809791892317 3.240742744153204 0 0 0 +9 1 3 -1.05 2.1485570809573353 3.706976696393621 3.0491817246607322 0 0 0 +10 1 5 0.425 0.39673058856233645 0.6832052188137645 1.1479686487541496 0 0 0 +11 1 1 1.575 5.208475641812152 5.972246199066358 0.0004892910943752327 0 0 0 +12 1 2 2.1 0.7817706041936265 4.38170355408236 2.7573153336218788 0 0 0 +13 1 2 2.1 0.8615899292224434 7.336820998825839 2.7652848366160274 0 0 0 +14 1 3 -1.05 0.6404116649888252 4.452548002411522 1.1390536212036224 0 0 0 +15 1 3 -1.05 0.9958046216279932 7.243969023731864 1.1403840581284594 0 0 0 +16 1 4 -0.95 3.513400407792714 6.045221555334809 1.0092802794076725 0 0 0 +17 1 3 -1.05 2.1671922380352218 8.038031393312668 3.238994437034231 0 0 0 +18 1 3 -1.05 0.7473539186626681 5.862364303969713 3.2407507095117243 0 0 0 +19 1 3 -1.05 -0.40328409120112596 8.189911245998463 3.049163882753348 0 0 0 +20 1 5 0.425 3.004863256879574 5.166119171117636 1.148013285968382 0 0 0 +21 1 1 1.575 2.6160231450750047 7.476521308095869 -0.0004868964845172741 0 0 0 +31 1 1 1.575 0.007858486069929782 2.9935784838606985 -0.0004886229058236324 0 0 0 +41 1 1 1.575 7.7603119800836495 1.4892994847808687 0.0004876409956668937 0 0 0 +44 1 3 -1.05 8.352245958178369 -0.03034852708280411 1.1390398478533665 0 0 0 +46 1 4 -0.95 6.065186680101519 1.5622726468860186 1.0092713469534331 0 0 0 +47 1 3 -1.05 4.719006945859089 3.5551385256659387 3.2389905613454264 0 0 0 +49 1 3 -1.05 7.308566510413744 3.7069713740300188 3.0491800116188568 0 0 0 +50 1 5 0.425 5.55672029157318 0.6832027274139385 1.1479273774212633 0 0 0 +52 1 2 2.1 5.941754691612481 4.381705907161461 2.7573185281719876 0 0 0 +53 1 2 2.1 6.021569156148551 7.336829473327171 2.765282260596237 0 0 0 +54 1 3 -1.05 5.800414227629432 4.452546389521338 1.1390571190245424 0 0 0 +55 1 3 -1.05 6.155803761978959 7.243969506923385 1.1403815022420147 0 0 0 +57 1 3 -1.05 7.327216945332573 8.038046038385499 3.2389918433149454 0 0 0 +58 1 3 -1.05 5.90735237093768 5.8623431966956865 3.2407497213706336 0 0 0 +59 1 3 -1.05 4.756730041223639 8.189902512772619 3.0491652979454305 0 0 0 +61 1 1 1.575 7.776030915957783 7.4765179856259465 -0.00048630439592045605 0 0 0 +71 1 1 1.575 5.1678511824652595 2.993580880857408 -0.0004901999814084235 0 0 0 +125 1 3 -1.05 -1.6123821854260463 2.761075314653997 1.1404070154366295 1 0 0 +131 1 1 1.575 0.04848294209673121 5.972242935779885 0.000490037179456948 1 0 0 +136 1 4 -0.95 -1.6466013343857568 6.0452237602823296 1.009286692899492 1 0 0 +140 1 5 0.425 -2.1551197559159263 5.166116856956847 1.1480434751617512 1 0 0 +482 1 2 2.1 3.333600286305689 -0.10126833528058299 2.7573081542690936 0 1 0 +662 1 2 2.1 0.1294481221970365 -0.0806049883627118 6.432548631586574 0 0 0 +663 1 2 2.1 0.10599334680137673 5.930145648028347 6.424577282515786 0 0 0 +664 1 3 -1.05 0.3271491025311537 8.814340912836013 8.050837562340648 0 0 0 +665 1 3 -1.05 -0.02822261760979572 6.022917492990221 8.049465873202388 0 0 0 +666 1 4 -0.95 2.6142064843337565 7.221713579662975 8.180594739766134 0 0 0 +667 1 3 -1.05 3.9603863448931165 5.228851139494434 5.950883261310734 0 0 0 +668 1 3 -1.05 0.22020140066630312 7.404402962508492 5.9491292107555385 0 0 0 +669 1 3 -1.05 1.370839907147385 5.0770158086882695 6.140691527571985 0 0 0 +670 1 5 0.425 3.122660489762424 8.10078354117201 8.041891815867482 0 0 0 +672 1 2 2.1 2.7376378509887616 4.402297453839999 6.432554269024626 0 0 0 +673 1 2 2.1 2.657814143905327 1.4471664246497618 6.4245845586209835 0 0 0 +674 1 3 -1.05 2.8789843747672226 4.331444892670223 8.050813478586486 0 0 0 +675 1 3 -1.05 2.5235929276811255 1.5400231451238362 8.049485296604866 0 0 0 +676 1 4 -0.95 0.005996469612352229 2.7387702634425644 8.180589156812536 0 0 0 +677 1 3 -1.05 1.35220333360148 0.7459606544277797 5.9508784991572234 0 0 0 +678 1 3 -1.05 2.772044403479459 2.921633738753382 5.949120410621978 0 0 0 +679 1 3 -1.05 3.9226663496817054 0.5940905195502779 6.140707539547966 0 0 0 +680 1 5 0.425 0.5145179216393423 3.6178796125064707 8.041844457004787 0 0 0 +702 1 2 2.1 5.2894644486370055 -0.08060750115534532 6.432546281853535 0 0 0 +703 1 2 2.1 5.266015505409589 5.930137771849527 6.424580792396204 0 0 0 +704 1 3 -1.05 5.487146353425208 8.814342589672009 8.050834969489033 0 0 0 +705 1 3 -1.05 5.131778084715114 6.022917199990019 8.049469586914329 0 0 0 +708 1 3 -1.05 5.380202829540677 7.404425443770609 5.949129963862305 0 0 0 +709 1 3 -1.05 6.530827312385206 5.077023734536393 6.14069010936865 0 0 0 +710 1 5 0.425 -12.357322833708851 8.100781892429946 8.041919043812685 1 0 0 +716 1 4 -0.95 5.166002670346272 2.7387795855326154 8.180592061839635 0 0 0 +717 1 3 -1.05 6.512180758213354 0.7459485736595788 5.95087865003107 0 0 0 +720 1 5 0.425 5.674529320524975 3.6178817424015435 8.041887704595718 0 0 0 +787 1 3 -1.05 -1.1995843894029825 5.228868218664132 5.950880728607876 1 0 0 +799 1 3 -1.05 -1.2373222098897543 0.594084068338713 6.140706246118169 1 0 0 +822 1 2 2.1 0.18578805441223878 8.885266915444351 6.432562197797376 0 0 0 +862 1 2 2.1 5.345804278048195 8.885262760376076 6.43255959737005 0 0 0 +1144 1 3 -1.05 0.2708179763475371 -0.15147101591706758 8.050819426100988 0 1 0 +1184 1 3 -1.05 5.430815094845618 -0.1514693876244877 8.050816796018031 0 1 0 +42 1 2 2.1 -12.09006260584677 8.864589177393615 2.7573256224033216 1 0 0 +82 1 2 2.1 -6.930057050782033 8.864597863376343 2.75732164447156 1 0 0 +122 1 2 2.1 -1.7700616265708433 8.864589076582348 2.757325473341277 1 0 0 +203 1 2 2.1 -12.010265577762329 11.819715092153334 2.765291360502074 1 0 0 +205 1 3 -1.05 -11.87604343181911 11.726896004685383 1.1403924325820025 1 0 0 +208 1 3 -1.05 -12.124473345038734 10.345319342352141 3.2407384604436444 1 0 0 +211 1 1 1.575 -10.215182621282619 14.938036557984727 0.00048802927475399827 1 0 0 +216 1 4 -0.95 -11.910303760846821 15.011010860547525 1.009271885162475 1 0 0 +220 1 5 0.425 8.221226954671451 14.131915169973812 1.1479074717195452 0 0 0 +241 1 1 1.575 -7.6633658312451125 10.455150665603007 0.00048674450156838134 1 0 0 +243 1 2 2.1 -6.850274802226975 11.819704709836884 2.765284103462397 1 0 0 +244 1 3 -1.05 -7.071418315464653 8.935464760159874 1.1390470826570223 1 0 0 +245 1 3 -1.05 -6.716041717351411 11.726895262208341 1.1403871825276504 1 0 0 +246 1 4 -0.95 -9.358442661161195 10.528143597063906 1.0092939108167762 1 0 0 +247 1 3 -1.05 -10.704668560055994 12.520955558501814 3.238986452455382 1 0 0 +248 1 3 -1.05 -6.964469919678031 10.345323343327664 3.240736447098582 1 0 0 +249 1 3 -1.05 -8.115109303492375 12.672804410356928 3.0491772060606532 1 0 0 +250 1 5 0.425 -9.86693405976031 9.649084784979703 1.1481844532688399 1 0 0 +251 1 1 1.575 -5.055189905145113 14.938039766588904 0.00048748737759041205 1 0 0 +252 1 2 2.1 -9.481895140515539 13.347470616334537 2.7573054912819455 1 0 0 +253 1 2 2.1 -9.402089479039432 16.30259246114154 2.7652923834422634 1 0 0 +254 1 3 -1.05 -9.623250645681043 13.418384253474247 1.1390345417105667 1 0 0 +255 1 3 -1.05 -9.267873053886584 16.209803149203925 1.1404029722314721 1 0 0 +256 1 4 -0.95 -6.750301966919627 15.011008793832236 1.0092655645710042 1 0 0 +257 1 3 -1.05 -8.096502014882379 17.003855189336587 3.2389947631306786 1 0 0 +258 1 3 -1.05 -9.516307273099796 14.828301501434499 3.2407492682947225 1 0 0 +259 1 3 -1.05 -10.666945431166095 17.155719681097477 3.049175296686906 1 0 0 +260 1 5 0.425 -7.258790173497739 14.131917299137772 1.1478771519031028 1 0 0 +261 1 1 1.575 -7.647647928463388 16.442332287146424 -0.000488821392487182 1 0 0 +271 1 1 1.575 -10.255800064478802 11.959390414342575 -0.0004879826669004217 1 0 0 +281 1 1 1.575 -2.5033581396528186 10.455148150790972 0.0004880508656999183 1 0 0 +283 1 2 2.1 -1.6902660097883206 11.819714042088183 2.765291463935222 1 0 0 +284 1 3 -1.05 -1.9114228701738583 8.935464925204077 1.1390564976711524 1 0 0 +286 1 4 -0.95 -4.198449098102025 10.528133983598376 1.0092915759019423 1 0 0 +287 1 3 -1.05 -5.544642042234459 12.520970094327684 3.238986094778216 1 0 0 +288 1 3 -1.05 -1.8044733565556257 10.345320519191759 3.240738331572988 1 0 0 +289 1 3 -1.05 -2.9550994549008944 12.672798772092221 3.049175605830589 1 0 0 +290 1 5 0.425 -4.706943981189049 9.649082683942861 1.1481432534485005 1 0 0 +292 1 2 2.1 -4.321912545284045 13.347472426595289 2.7573087615778036 1 0 0 +293 1 2 2.1 -4.242109237221538 16.302601544499094 2.765289869034204 1 0 0 +294 1 3 -1.05 -4.463248142025066 13.418382607713053 1.139038490940214 1 0 0 +295 1 3 -1.05 -4.107873920942626 16.209803614349052 1.140400471186064 1 0 0 +297 1 3 -1.05 -2.9364789165855 17.003868750171616 3.2389922567955534 1 0 0 +298 1 3 -1.05 -4.356308934359183 14.828279979627037 3.240748540873943 1 0 0 +299 1 3 -1.05 -5.506931509883287 17.155711082805635 3.049176629135548 1 0 0 +301 1 1 1.575 -2.487640147269909 16.442328816418733 -0.0004883367723138576 1 0 0 +311 1 1 1.575 -5.095807262339934 11.959392592244821 -0.0004895582360084916 1 0 0 +866 1 4 -0.95 -12.809479347924743 16.18753152254509 8.180603331692547 1 0 0 +867 1 3 -1.05 -11.463275683185296 14.194699747323508 5.950876300797919 1 0 0 +872 1 2 2.1 -12.686044332292026 13.368099433193311 6.432547920762799 1 0 0 +873 1 2 2.1 -12.765838937433683 10.41299358974631 6.424592111086573 1 0 0 +874 1 3 -1.05 -12.544682823574899 13.297270345420436 8.050815957208696 1 0 0 +875 1 3 -1.05 -12.900069677630333 10.5058408528262 8.049494880803467 1 0 0 +878 1 3 -1.05 -12.651628832221212 11.887467867095268 5.9491319671647975 1 0 0 +879 1 3 -1.05 -11.500988895646206 9.559912285205048 6.140702884052089 1 0 0 +903 1 2 2.1 -10.15768664396984 14.895937931749142 6.4245820529389 1 0 0 +905 1 3 -1.05 -10.29190066164717 14.988753381285374 8.049475307293187 1 0 0 +906 1 4 -0.95 -7.649476933430761 16.18753061890442 8.180596856550588 1 0 0 +907 1 3 -1.05 -6.303303846872613 14.194683336474714 5.950878682998182 1 0 0 +908 1 3 -1.05 -10.043457772052527 16.370291645323054 5.949120441329194 1 0 0 +909 1 3 -1.05 -8.892821020091677 14.04282418271502 6.140702337720942 1 0 0 +910 1 5 0.425 -7.140987432429453 17.0666357882375 8.041945898966334 1 0 0 +912 1 2 2.1 -7.526036934568197 13.368107272741312 6.4325434453563695 1 0 0 +913 1 2 2.1 -7.605845200775825 10.412982355545267 6.424585246251738 1 0 0 +914 1 3 -1.05 -7.384678562846151 13.297270278808188 8.05080567732344 1 0 0 +915 1 3 -1.05 -7.740067845155377 10.505840284961845 8.049490055106476 1 0 0 +916 1 4 -0.95 -10.257679256880722 11.704569167331858 8.180573427892023 1 0 0 +917 1 3 -1.05 -8.911455963414486 9.711773926551299 5.950884469289509 1 0 0 +918 1 3 -1.05 -7.491625174558855 11.887475216511863 5.949130124537872 1 0 0 +919 1 3 -1.05 -6.341000561150384 9.559918847426733 6.140704372264844 1 0 0 +920 1 5 0.425 -9.749158350506987 12.583644683468911 8.041657698866539 1 0 0 +943 1 2 2.1 -4.997664858400203 14.895930244835991 6.424585607692931 1 0 0 +945 1 3 -1.05 -5.131900069757357 14.98875297667713 8.049478722615055 1 0 0 +946 1 4 -0.95 -2.4894793258925247 16.187531494753113 8.18060331455739 1 0 0 +948 1 3 -1.05 -4.883456385777334 16.37031336364964 5.94912114642281 1 0 0 +949 1 3 -1.05 -3.73283340764449 14.042831878604474 6.140700750137892 1 0 0 +950 1 5 0.425 -1.980970887878998 17.06663388813786 8.041972936030264 1 0 0 +952 1 2 2.1 -2.366044208847562 13.368099483410205 6.432548100519332 1 0 0 +953 1 2 2.1 -2.4458390869474993 10.41299379338496 6.424592232856112 1 0 0 +954 1 3 -1.05 -2.2246828141337502 13.297270286553317 8.050815880203343 1 0 0 +955 1 3 -1.05 -2.580069543536629 10.505840925682026 8.04949477487744 1 0 0 +956 1 4 -0.95 -5.097672768092682 11.704578991964201 8.180576300900766 1 0 0 +957 1 3 -1.05 -3.7514781712957763 9.711761903734494 5.950884468909207 1 0 0 +958 1 3 -1.05 -2.331628855394513 11.887467661981258 5.949131825798181 1 0 0 +960 1 5 0.425 -4.589147136714461 12.583646517910942 8.04170102397289 1 0 0 +2 1 2 2.1 3.3899422731256763 8.864597132006875 2.7573215253057963 0 0 0 +161 1 1 1.575 2.6566341651466274 10.455150667308867 0.00048679133445439504 0 0 0 +163 1 2 2.1 3.469725611191784 11.819703973175962 2.7652842672918947 0 0 0 +164 1 3 -1.05 3.248581755192575 8.935464749145556 1.139046873812159 0 0 0 +165 1 3 -1.05 3.603958382521821 11.726895331931285 1.1403873843045993 0 0 0 +166 1 4 -0.95 0.9615570622632923 10.528143207441804 1.009293869122109 0 0 0 +167 1 3 -1.05 -0.38466753745755256 12.520956284187964 3.23898646303282 0 0 0 +168 1 3 -1.05 3.3555302887687066 10.345324712237673 3.240736497944564 0 0 0 +169 1 3 -1.05 2.2048898258862977 12.672804867739217 3.0491771504206753 0 0 0 +170 1 5 0.425 0.4530661645712417 9.649085132213575 1.1481844303253137 0 0 0 +171 1 1 1.575 5.26481011625984 14.93803969584685 0.00048748398004327953 0 0 0 +172 1 2 2.1 0.8381050018951335 13.34746956355098 2.7573056112375216 0 0 0 +173 1 2 2.1 0.917912298353329 16.302592791352506 2.7652928068938305 0 0 0 +174 1 3 -1.05 0.6967492081717079 13.418384331397867 1.139034719167146 0 0 0 +175 1 3 -1.05 1.0521268357949296 16.209803156886135 1.140403453608636 0 0 0 +176 1 4 -0.95 3.5696981167895174 15.011008782764922 1.0092654803188346 0 0 0 +177 1 3 -1.05 2.2234949075541905 17.003853295689932 3.238994790958916 0 0 0 +178 1 3 -1.05 0.8036927614304492 14.828302477588569 3.24074919764605 0 0 0 +179 1 3 -1.05 -0.346945556400458 17.155719849990422 3.049175316321957 0 0 0 +180 1 5 0.425 3.0612098947390933 14.131917293649405 1.1478771488772814 0 0 0 +181 1 1 1.575 2.672352132552927 16.44233222954824 -0.00048893065522293 0 0 0 +191 1 1 1.575 0.06419990661849084 11.959390323353912 -0.00048797842278069936 0 0 0 +201 1 1 1.575 7.816641875063663 10.455148129073955 0.00048818953626117434 0 0 0 +204 1 3 -1.05 8.408577227951085 8.935464962316985 1.1390566838791205 0 0 0 +206 1 4 -0.95 6.121550861150677 10.528133978087624 1.0092915549395602 0 0 0 +207 1 3 -1.05 4.775356948747724 12.520969520585183 3.2389861172974115 0 0 0 +209 1 3 -1.05 7.364900489893909 12.672798839171666 3.0491755919080212 0 0 0 +210 1 5 0.425 5.61305603153591 9.649082778114593 1.1481433153431642 0 0 0 +212 1 2 2.1 5.998088138826827 13.347473093028178 2.757308731405036 0 0 0 +213 1 2 2.1 6.077891819286037 16.30260193787044 2.765289869913314 0 0 0 +214 1 3 -1.05 5.856751818752759 13.418382710971027 1.1390384696391855 0 0 0 +215 1 3 -1.05 6.212125957670043 16.209803423133504 1.1404002385609324 0 0 0 +217 1 3 -1.05 7.383520043027556 17.003868000384625 3.2389922772992907 0 0 0 +218 1 3 -1.05 5.963690997777473 14.828279007765143 3.2407484945718856 0 0 0 +219 1 3 -1.05 4.81306751453938 17.15571169886196 3.049176642461564 0 0 0 +221 1 1 1.575 7.832359959333601 16.442328863944606 -0.00048820826442330656 0 0 0 +231 1 1 1.575 5.224192755472295 11.9593926983067 -0.0004895452984730042 0 0 0 +285 1 3 -1.05 -1.5560434921058235 11.7268960105203 1.1403925019894405 1 0 0 +291 1 1 1.575 0.10481734176789637 14.938036477244676 0.0004878663631728841 1 0 0 +296 1 4 -0.95 -1.5903037992881508 15.011010762815896 1.0092720957491625 1 0 0 +300 1 5 0.425 -2.098773053271172 14.131915286048635 1.1479073358599035 1 0 0 +823 1 2 2.1 0.16231342663308013 14.895938457827786 6.424582090151786 0 0 0 +825 1 3 -1.05 0.028099381747342278 14.988753389323616 8.049475282091281 0 0 0 +826 1 4 -0.95 2.6705230911081035 16.187530512616757 8.180596938009801 0 0 0 +827 1 3 -1.05 4.01669641754593 14.194683450538559 5.950878753854479 0 0 0 +828 1 3 -1.05 0.27654220878196156 16.37029094078053 5.94912022193599 0 0 0 +829 1 3 -1.05 1.4271792302815047 14.04282401595217 6.140702235142053 0 0 0 +830 1 5 0.425 3.1790125843134582 17.06663589040934 8.04194593753139 0 0 0 +832 1 2 2.1 2.79396271801315 13.368107134362024 6.432543570568198 0 0 0 +833 1 2 2.1 2.714155029782006 10.41298252966632 6.424585299216295 0 0 0 +834 1 3 -1.05 2.9353214295031798 13.297270348704007 8.050805811867614 0 0 0 +835 1 3 -1.05 2.5799322816150294 10.50584016157514 8.049490292842309 0 0 0 +836 1 4 -0.95 0.06232056055442037 11.704568865571552 8.180573482122442 0 0 0 +837 1 3 -1.05 1.4085436097406188 9.711773557309051 5.950884536837345 0 0 0 +838 1 3 -1.05 2.8283748897425482 11.88747503498794 5.949130056988739 0 0 0 +839 1 3 -1.05 3.9789992841497615 9.559918964820955 6.140704411314749 0 0 0 +840 1 5 0.425 0.570841912948957 12.58364508171616 8.04165770071049 0 0 0 +863 1 2 2.1 5.322334696359004 14.895930247507533 6.424585536161565 0 0 0 +865 1 3 -1.05 5.18810009801547 14.988752969144539 8.049478754913183 0 0 0 +868 1 3 -1.05 5.4365436852018405 16.370313581914186 5.949121173646114 0 0 0 +869 1 3 -1.05 6.587166884334117 14.04283169075152 6.140700804578795 0 0 0 +870 1 5 0.425 -12.300970922825949 17.06663390893986 8.041972903281911 1 0 0 +876 1 4 -0.95 5.222326990852581 11.704578679828789 8.180576328926842 0 0 0 +877 1 3 -1.05 6.5685219413996165 9.71176198584331 5.950884504654278 0 0 0 +880 1 5 0.425 5.7308529675779845 12.58364688731844 8.041700994215164 0 0 0 +947 1 3 -1.05 -1.14327593789511 14.194699627136107 5.950876109055651 1 0 0 +959 1 3 -1.05 -1.1809884299906663 9.55991198753285 6.140702871950106 1 0 0 Velocities -1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -65 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -66 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -67 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -68 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -69 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -70 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -71 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -72 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -73 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -74 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -75 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -76 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -77 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -78 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -79 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -80 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -81 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -82 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -83 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -84 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -85 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -86 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -87 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -88 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -89 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -90 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -91 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -92 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -93 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -94 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -95 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -96 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -97 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -98 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -99 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -401 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -402 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -403 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -404 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -405 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -406 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -407 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -408 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -409 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -410 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -411 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -412 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -413 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -414 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -415 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -416 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -417 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -418 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -419 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -420 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -421 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -422 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -423 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -424 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -425 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -426 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -427 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -428 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -429 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -430 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -431 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -432 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -433 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -434 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -435 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -436 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -437 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -438 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -439 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -440 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -441 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -442 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -443 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -444 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -445 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -446 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -447 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -448 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -449 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -450 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -451 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -452 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -453 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -454 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -455 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -456 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -457 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -458 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -459 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -460 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -461 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -462 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -463 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -464 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -465 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -466 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -467 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -468 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -469 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -470 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -471 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -472 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -473 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -474 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -475 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -476 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -477 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -478 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -479 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -480 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -481 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -482 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -483 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -484 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -485 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -486 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -487 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -488 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -489 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -490 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -491 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -492 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -493 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -494 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -495 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -496 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -497 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -498 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -499 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -500 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -501 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -502 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -503 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -504 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -505 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -506 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -507 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -508 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -509 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -510 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -511 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -512 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -513 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -514 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -515 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -516 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -517 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -518 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -519 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -520 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -521 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -522 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -523 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -524 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -525 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -526 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -527 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -528 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -529 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -530 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -531 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -532 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -533 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -534 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -535 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -536 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -537 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -538 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -539 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -540 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -541 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -542 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -543 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -544 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -545 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -546 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -547 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -548 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -549 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -550 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -551 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -552 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -553 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -554 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -555 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -556 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -557 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -558 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -559 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -560 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -561 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -562 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -563 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -564 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -565 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -566 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -567 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -568 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -569 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -570 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -571 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -572 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -573 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -574 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -575 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -576 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -577 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -578 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -579 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -580 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -581 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -582 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -583 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -584 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -585 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -586 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -587 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -588 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -589 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -590 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -591 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -592 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -593 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -594 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -595 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -596 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -597 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -598 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -599 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -600 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -601 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -602 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -603 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -604 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -605 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -606 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -607 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -608 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -609 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -610 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -611 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -612 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -613 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -614 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -615 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -616 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -617 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -618 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -619 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -620 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -621 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -622 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -623 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -624 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -625 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -626 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -627 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -628 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -629 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -630 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -631 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -632 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -633 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -634 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -635 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -636 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -637 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -638 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -639 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -640 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -641 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -642 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -643 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -644 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -645 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -646 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -647 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -648 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -649 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -650 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -651 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -652 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -653 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -654 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -655 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -656 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -657 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -658 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -659 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -660 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -661 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -662 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -663 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -664 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -665 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -666 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -667 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -668 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -669 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -670 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -671 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -672 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -673 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -674 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -675 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -676 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -677 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -678 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -679 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -680 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -681 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -682 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -683 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -684 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -685 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -686 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -687 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -688 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -689 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -690 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -691 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -692 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -693 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -694 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -695 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -696 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -697 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -698 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -699 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -700 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -701 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -702 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -703 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -704 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -705 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -706 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -707 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -708 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -709 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -710 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -711 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -712 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -713 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -714 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -715 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -716 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -717 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -718 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -719 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -720 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -721 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -722 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -723 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -724 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -725 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -726 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -727 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -728 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -729 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -730 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -731 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -732 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -733 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -734 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -735 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -736 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -737 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -738 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -739 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -740 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -741 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -742 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -743 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -744 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -745 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -746 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -747 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -748 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -749 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -750 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -751 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -752 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -753 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -754 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -755 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -756 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -757 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -758 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -759 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -760 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -761 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -762 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -763 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -764 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -765 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -766 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -767 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -768 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -769 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -770 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -771 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -772 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -773 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -774 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -775 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -776 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -777 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -778 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -779 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -780 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -781 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -782 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -783 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -784 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -785 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -786 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -787 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -788 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -789 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -790 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -791 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -792 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -793 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -794 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -795 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -796 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -797 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -798 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -799 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -800 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -801 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -802 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -803 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -804 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -805 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -806 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -807 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -808 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -809 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -810 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -811 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -812 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -813 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -814 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -815 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -816 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -817 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -818 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -819 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -820 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -821 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -822 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -823 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -824 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -825 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -826 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -827 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -828 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -829 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -830 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -831 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -832 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -833 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -834 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -835 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -836 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -837 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -838 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -839 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -840 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -841 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -842 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -843 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -844 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -845 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -846 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -847 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -848 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -849 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -850 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -851 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -852 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -853 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -854 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -855 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -856 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -857 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -858 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -859 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -860 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -861 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -862 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -863 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -864 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -865 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -866 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -867 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -868 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -869 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -870 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -871 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -872 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -873 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -874 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -875 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -876 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -877 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -878 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -879 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -880 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -881 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -882 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -883 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -884 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -885 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -886 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -887 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -888 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -889 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -890 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -891 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -892 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -893 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -894 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -895 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -896 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -897 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -898 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -899 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -900 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -901 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -902 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -903 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -904 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -905 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -906 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -907 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -908 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -909 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -910 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -911 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -912 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -913 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -914 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -915 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -916 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -917 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -918 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -919 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -920 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -921 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -922 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -923 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -924 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -925 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -926 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -927 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -928 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -929 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -930 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -931 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -932 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -933 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -934 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -935 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -936 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -937 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -938 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -939 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -940 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -941 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -942 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -943 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -944 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -945 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -946 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -947 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -948 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -949 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -950 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -951 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -952 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -953 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -954 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -955 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -956 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -957 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -958 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -959 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -960 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -961 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -962 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -963 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -964 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -965 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -966 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -967 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -968 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -969 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -970 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -971 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -972 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -973 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -974 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -975 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -976 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -977 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -978 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -979 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -980 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -981 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -982 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -983 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -984 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -985 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -986 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -987 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -988 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -989 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -990 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -991 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -992 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -993 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -994 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -995 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -996 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -997 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -998 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -999 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1000 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1001 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1002 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1003 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1004 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1005 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1006 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1007 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1008 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1009 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1010 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1011 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1012 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1013 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1014 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1015 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1016 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1017 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1018 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1019 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1020 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1021 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1022 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1023 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1024 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1025 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1026 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1027 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1028 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1029 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1030 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1031 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1032 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1033 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1034 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1035 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1036 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1037 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1038 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1039 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1040 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1041 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1042 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1043 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1044 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1045 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1046 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1047 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1048 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1049 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1050 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1051 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1052 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1053 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1054 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1055 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1056 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1057 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1058 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1059 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1060 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1061 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1062 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1063 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1064 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1065 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1066 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1067 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1068 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1069 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1070 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1071 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1072 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1073 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1074 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1075 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1076 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1077 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1078 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1079 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1080 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1081 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1082 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1083 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1084 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1085 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1086 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1087 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1088 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1089 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1090 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1091 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1092 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1093 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1094 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1095 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1096 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1097 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1098 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1099 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +264 0 0 0 +304 0 0 0 +386 0 0 0 +387 0 0 0 +392 0 0 0 +393 0 0 0 +394 0 0 0 +395 0 0 0 +398 0 0 0 +399 0 0 0 +422 0 0 0 +423 0 0 0 +425 0 0 0 +426 0 0 0 +427 0 0 0 +428 0 0 0 +429 0 0 0 +430 0 0 0 +432 0 0 0 +433 0 0 0 +434 0 0 0 +435 0 0 0 +436 0 0 0 +437 0 0 0 +438 0 0 0 +439 0 0 0 +440 0 0 0 +462 0 0 0 +463 0 0 0 +465 0 0 0 +468 0 0 0 +469 0 0 0 +470 0 0 0 +476 0 0 0 +477 0 0 0 +480 0 0 0 +842 0 0 0 +882 0 0 0 +1003 0 0 0 +1005 0 0 0 +1008 0 0 0 +1011 0 0 0 +1016 0 0 0 +1020 0 0 0 +1041 0 0 0 +1043 0 0 0 +1044 0 0 0 +1045 0 0 0 +1046 0 0 0 +1047 0 0 0 +1048 0 0 0 +1049 0 0 0 +1050 0 0 0 +1051 0 0 0 +1052 0 0 0 +1053 0 0 0 +1054 0 0 0 +1055 0 0 0 +1056 0 0 0 +1057 0 0 0 +1058 0 0 0 +1059 0 0 0 +1060 0 0 0 +1061 0 0 0 +1071 0 0 0 +1086 0 0 0 +1087 0 0 0 +1092 0 0 0 +1093 0 0 0 +1094 0 0 0 +1095 0 0 0 +1098 0 0 0 +1099 0 0 0 +1111 0 0 0 +184 0 0 0 +224 0 0 0 +342 0 0 0 +343 0 0 0 +345 0 0 0 +346 0 0 0 +347 0 0 0 +348 0 0 0 +349 0 0 0 +350 0 0 0 +352 0 0 0 +353 0 0 0 +354 0 0 0 +355 0 0 0 +356 0 0 0 +357 0 0 0 +358 0 0 0 +359 0 0 0 +360 0 0 0 +382 0 0 0 +383 0 0 0 +385 0 0 0 +388 0 0 0 +389 0 0 0 +390 0 0 0 +396 0 0 0 +397 0 0 0 +400 0 0 0 +466 0 0 0 +467 0 0 0 +472 0 0 0 +473 0 0 0 +474 0 0 0 +475 0 0 0 +478 0 0 0 +479 0 0 0 +802 0 0 0 +922 0 0 0 +961 0 0 0 +963 0 0 0 +964 0 0 0 +965 0 0 0 +966 0 0 0 +967 0 0 0 +968 0 0 0 +969 0 0 0 +970 0 0 0 +971 0 0 0 +972 0 0 0 +973 0 0 0 +974 0 0 0 +975 0 0 0 +976 0 0 0 +977 0 0 0 +978 0 0 0 +979 0 0 0 +980 0 0 0 +981 0 0 0 +991 0 0 0 +1001 0 0 0 +1004 0 0 0 +1006 0 0 0 +1007 0 0 0 +1009 0 0 0 +1010 0 0 0 +1012 0 0 0 +1013 0 0 0 +1014 0 0 0 +1015 0 0 0 +1017 0 0 0 +1018 0 0 0 +1019 0 0 0 +1021 0 0 0 +1031 0 0 0 +1081 0 0 0 +1083 0 0 0 +1084 0 0 0 +1085 0 0 0 +1088 0 0 0 +1089 0 0 0 +1090 0 0 0 +1091 0 0 0 +1096 0 0 0 +1097 0 0 0 +1100 0 0 0 +1101 0 0 0 +424 0 0 0 +464 0 0 0 +546 0 0 0 +547 0 0 0 +552 0 0 0 +553 0 0 0 +554 0 0 0 +555 0 0 0 +558 0 0 0 +559 0 0 0 +582 0 0 0 +583 0 0 0 +585 0 0 0 +586 0 0 0 +587 0 0 0 +588 0 0 0 +589 0 0 0 +590 0 0 0 +592 0 0 0 +593 0 0 0 +594 0 0 0 +595 0 0 0 +596 0 0 0 +597 0 0 0 +598 0 0 0 +599 0 0 0 +600 0 0 0 +622 0 0 0 +623 0 0 0 +625 0 0 0 +628 0 0 0 +629 0 0 0 +630 0 0 0 +636 0 0 0 +637 0 0 0 +640 0 0 0 +1002 0 0 0 +1042 0 0 0 +1163 0 0 0 +1165 0 0 0 +1168 0 0 0 +1171 0 0 0 +1176 0 0 0 +1180 0 0 0 +1201 0 0 0 +1203 0 0 0 +1204 0 0 0 +1205 0 0 0 +1206 0 0 0 +1207 0 0 0 +1208 0 0 0 +1209 0 0 0 +1210 0 0 0 +1211 0 0 0 +1212 0 0 0 +1213 0 0 0 +1214 0 0 0 +1215 0 0 0 +1216 0 0 0 +1217 0 0 0 +1218 0 0 0 +1219 0 0 0 +1220 0 0 0 +1221 0 0 0 +1231 0 0 0 +1246 0 0 0 +1247 0 0 0 +1252 0 0 0 +1253 0 0 0 +1254 0 0 0 +1255 0 0 0 +1258 0 0 0 +1259 0 0 0 +1271 0 0 0 +344 0 0 0 +384 0 0 0 +502 0 0 0 +503 0 0 0 +505 0 0 0 +506 0 0 0 +507 0 0 0 +508 0 0 0 +509 0 0 0 +510 0 0 0 +512 0 0 0 +513 0 0 0 +514 0 0 0 +515 0 0 0 +516 0 0 0 +517 0 0 0 +518 0 0 0 +519 0 0 0 +520 0 0 0 +542 0 0 0 +543 0 0 0 +545 0 0 0 +548 0 0 0 +549 0 0 0 +550 0 0 0 +556 0 0 0 +557 0 0 0 +560 0 0 0 +626 0 0 0 +627 0 0 0 +632 0 0 0 +633 0 0 0 +634 0 0 0 +635 0 0 0 +638 0 0 0 +639 0 0 0 +962 0 0 0 +1082 0 0 0 +1121 0 0 0 +1123 0 0 0 +1124 0 0 0 +1125 0 0 0 +1126 0 0 0 +1127 0 0 0 +1128 0 0 0 +1129 0 0 0 +1130 0 0 0 +1131 0 0 0 +1132 0 0 0 +1133 0 0 0 +1134 0 0 0 +1135 0 0 0 +1136 0 0 0 +1137 0 0 0 +1138 0 0 0 +1139 0 0 0 +1140 0 0 0 +1141 0 0 0 +1151 0 0 0 +1161 0 0 0 +1164 0 0 0 +1166 0 0 0 +1167 0 0 0 +1169 0 0 0 +1170 0 0 0 +1172 0 0 0 +1173 0 0 0 +1174 0 0 0 +1175 0 0 0 +1177 0 0 0 +1178 0 0 0 +1179 0 0 0 +1181 0 0 0 +1191 0 0 0 +1241 0 0 0 +1243 0 0 0 +1244 0 0 0 +1245 0 0 0 +1248 0 0 0 +1249 0 0 0 +1250 0 0 0 +1251 0 0 0 +1256 0 0 0 +1257 0 0 0 +1260 0 0 0 +1261 0 0 0 +66 0 0 0 +67 0 0 0 +72 0 0 0 +73 0 0 0 +74 0 0 0 +75 0 0 0 +78 0 0 0 +79 0 0 0 +102 0 0 0 +103 0 0 0 +105 0 0 0 +106 0 0 0 +107 0 0 0 +108 0 0 0 +109 0 0 0 +110 0 0 0 +112 0 0 0 +113 0 0 0 +114 0 0 0 +115 0 0 0 +116 0 0 0 +117 0 0 0 +118 0 0 0 +119 0 0 0 +120 0 0 0 +142 0 0 0 +143 0 0 0 +145 0 0 0 +148 0 0 0 +149 0 0 0 +150 0 0 0 +156 0 0 0 +157 0 0 0 +160 0 0 0 +584 0 0 0 +624 0 0 0 +683 0 0 0 +685 0 0 0 +688 0 0 0 +691 0 0 0 +696 0 0 0 +700 0 0 0 +721 0 0 0 +723 0 0 0 +724 0 0 0 +725 0 0 0 +726 0 0 0 +727 0 0 0 +728 0 0 0 +729 0 0 0 +730 0 0 0 +731 0 0 0 +732 0 0 0 +733 0 0 0 +734 0 0 0 +735 0 0 0 +736 0 0 0 +737 0 0 0 +738 0 0 0 +739 0 0 0 +740 0 0 0 +741 0 0 0 +751 0 0 0 +766 0 0 0 +767 0 0 0 +772 0 0 0 +773 0 0 0 +774 0 0 0 +775 0 0 0 +778 0 0 0 +779 0 0 0 +791 0 0 0 +1162 0 0 0 +1202 0 0 0 +22 0 0 0 +23 0 0 0 +25 0 0 0 +26 0 0 0 +27 0 0 0 +28 0 0 0 +29 0 0 0 +30 0 0 0 +32 0 0 0 +33 0 0 0 +34 0 0 0 +35 0 0 0 +36 0 0 0 +37 0 0 0 +38 0 0 0 +39 0 0 0 +40 0 0 0 +62 0 0 0 +63 0 0 0 +65 0 0 0 +68 0 0 0 +69 0 0 0 +70 0 0 0 +76 0 0 0 +77 0 0 0 +80 0 0 0 +146 0 0 0 +147 0 0 0 +152 0 0 0 +153 0 0 0 +154 0 0 0 +155 0 0 0 +158 0 0 0 +159 0 0 0 +504 0 0 0 +544 0 0 0 +641 0 0 0 +643 0 0 0 +644 0 0 0 +645 0 0 0 +646 0 0 0 +647 0 0 0 +648 0 0 0 +649 0 0 0 +650 0 0 0 +651 0 0 0 +652 0 0 0 +653 0 0 0 +654 0 0 0 +655 0 0 0 +656 0 0 0 +657 0 0 0 +658 0 0 0 +659 0 0 0 +660 0 0 0 +661 0 0 0 +671 0 0 0 +681 0 0 0 +684 0 0 0 +686 0 0 0 +687 0 0 0 +689 0 0 0 +690 0 0 0 +692 0 0 0 +693 0 0 0 +694 0 0 0 +695 0 0 0 +697 0 0 0 +698 0 0 0 +699 0 0 0 +701 0 0 0 +711 0 0 0 +761 0 0 0 +763 0 0 0 +764 0 0 0 +765 0 0 0 +768 0 0 0 +769 0 0 0 +770 0 0 0 +771 0 0 0 +776 0 0 0 +777 0 0 0 +780 0 0 0 +781 0 0 0 +1122 0 0 0 +1242 0 0 0 +104 0 0 0 +144 0 0 0 +226 0 0 0 +227 0 0 0 +232 0 0 0 +233 0 0 0 +234 0 0 0 +235 0 0 0 +238 0 0 0 +239 0 0 0 +262 0 0 0 +263 0 0 0 +265 0 0 0 +266 0 0 0 +267 0 0 0 +268 0 0 0 +269 0 0 0 +270 0 0 0 +272 0 0 0 +273 0 0 0 +274 0 0 0 +275 0 0 0 +276 0 0 0 +277 0 0 0 +278 0 0 0 +279 0 0 0 +280 0 0 0 +302 0 0 0 +303 0 0 0 +305 0 0 0 +308 0 0 0 +309 0 0 0 +310 0 0 0 +316 0 0 0 +317 0 0 0 +320 0 0 0 +682 0 0 0 +722 0 0 0 +843 0 0 0 +845 0 0 0 +848 0 0 0 +851 0 0 0 +856 0 0 0 +860 0 0 0 +881 0 0 0 +883 0 0 0 +884 0 0 0 +885 0 0 0 +886 0 0 0 +887 0 0 0 +888 0 0 0 +889 0 0 0 +890 0 0 0 +891 0 0 0 +892 0 0 0 +893 0 0 0 +894 0 0 0 +895 0 0 0 +896 0 0 0 +897 0 0 0 +898 0 0 0 +899 0 0 0 +900 0 0 0 +901 0 0 0 +911 0 0 0 +926 0 0 0 +927 0 0 0 +932 0 0 0 +933 0 0 0 +934 0 0 0 +935 0 0 0 +938 0 0 0 +939 0 0 0 +951 0 0 0 +24 0 0 0 +64 0 0 0 +182 0 0 0 +183 0 0 0 +185 0 0 0 +186 0 0 0 +187 0 0 0 +188 0 0 0 +189 0 0 0 +190 0 0 0 +192 0 0 0 +193 0 0 0 +194 0 0 0 +195 0 0 0 +196 0 0 0 +197 0 0 0 +198 0 0 0 +199 0 0 0 +200 0 0 0 +222 0 0 0 +223 0 0 0 +225 0 0 0 +228 0 0 0 +229 0 0 0 +230 0 0 0 +236 0 0 0 +237 0 0 0 +240 0 0 0 +306 0 0 0 +307 0 0 0 +312 0 0 0 +313 0 0 0 +314 0 0 0 +315 0 0 0 +318 0 0 0 +319 0 0 0 +642 0 0 0 +762 0 0 0 +801 0 0 0 +803 0 0 0 +804 0 0 0 +805 0 0 0 +806 0 0 0 +807 0 0 0 +808 0 0 0 +809 0 0 0 +810 0 0 0 +811 0 0 0 +812 0 0 0 +813 0 0 0 +814 0 0 0 +815 0 0 0 +816 0 0 0 +817 0 0 0 +818 0 0 0 +819 0 0 0 +820 0 0 0 +821 0 0 0 +831 0 0 0 +841 0 0 0 +844 0 0 0 +846 0 0 0 +847 0 0 0 +849 0 0 0 +850 0 0 0 +852 0 0 0 +853 0 0 0 +854 0 0 0 +855 0 0 0 +857 0 0 0 +858 0 0 0 +859 0 0 0 +861 0 0 0 +871 0 0 0 +921 0 0 0 +923 0 0 0 +924 0 0 0 +925 0 0 0 +928 0 0 0 +929 0 0 0 +930 0 0 0 +931 0 0 0 +936 0 0 0 +937 0 0 0 +940 0 0 0 +941 0 0 0 +202 0 0 0 +242 0 0 0 +282 0 0 0 +363 0 0 0 +365 0 0 0 +368 0 0 0 +371 0 0 0 +376 0 0 0 +380 0 0 0 +401 0 0 0 +403 0 0 0 +404 0 0 0 +405 0 0 0 +406 0 0 0 +407 0 0 0 +408 0 0 0 +409 0 0 0 +410 0 0 0 +411 0 0 0 +412 0 0 0 +413 0 0 0 +414 0 0 0 +415 0 0 0 +416 0 0 0 +417 0 0 0 +418 0 0 0 +419 0 0 0 +420 0 0 0 +421 0 0 0 +431 0 0 0 +441 0 0 0 +443 0 0 0 +444 0 0 0 +445 0 0 0 +446 0 0 0 +447 0 0 0 +448 0 0 0 +449 0 0 0 +450 0 0 0 +452 0 0 0 +453 0 0 0 +454 0 0 0 +455 0 0 0 +456 0 0 0 +457 0 0 0 +458 0 0 0 +459 0 0 0 +461 0 0 0 +471 0 0 0 +904 0 0 0 +944 0 0 0 +1026 0 0 0 +1027 0 0 0 +1032 0 0 0 +1033 0 0 0 +1034 0 0 0 +1035 0 0 0 +1038 0 0 0 +1039 0 0 0 +1062 0 0 0 +1063 0 0 0 +1065 0 0 0 +1066 0 0 0 +1067 0 0 0 +1068 0 0 0 +1069 0 0 0 +1070 0 0 0 +1072 0 0 0 +1073 0 0 0 +1074 0 0 0 +1075 0 0 0 +1076 0 0 0 +1077 0 0 0 +1078 0 0 0 +1079 0 0 0 +1080 0 0 0 +1102 0 0 0 +1103 0 0 0 +1105 0 0 0 +1106 0 0 0 +1108 0 0 0 +1109 0 0 0 +1110 0 0 0 +1112 0 0 0 +1113 0 0 0 +1114 0 0 0 +1115 0 0 0 +1116 0 0 0 +1117 0 0 0 +1118 0 0 0 +1120 0 0 0 +162 0 0 0 +321 0 0 0 +323 0 0 0 +324 0 0 0 +325 0 0 0 +326 0 0 0 +327 0 0 0 +328 0 0 0 +329 0 0 0 +330 0 0 0 +331 0 0 0 +332 0 0 0 +333 0 0 0 +334 0 0 0 +335 0 0 0 +336 0 0 0 +337 0 0 0 +338 0 0 0 +339 0 0 0 +340 0 0 0 +341 0 0 0 +351 0 0 0 +361 0 0 0 +364 0 0 0 +366 0 0 0 +367 0 0 0 +369 0 0 0 +370 0 0 0 +372 0 0 0 +373 0 0 0 +374 0 0 0 +375 0 0 0 +377 0 0 0 +378 0 0 0 +379 0 0 0 +381 0 0 0 +391 0 0 0 +451 0 0 0 +460 0 0 0 +824 0 0 0 +864 0 0 0 +982 0 0 0 +983 0 0 0 +985 0 0 0 +986 0 0 0 +987 0 0 0 +988 0 0 0 +989 0 0 0 +990 0 0 0 +992 0 0 0 +993 0 0 0 +994 0 0 0 +995 0 0 0 +996 0 0 0 +997 0 0 0 +998 0 0 0 +999 0 0 0 +1000 0 0 0 +1022 0 0 0 +1023 0 0 0 +1025 0 0 0 +1028 0 0 0 +1029 0 0 0 +1030 0 0 0 +1036 0 0 0 +1037 0 0 0 +1040 0 0 0 +1107 0 0 0 +1119 0 0 0 +362 0 0 0 +402 0 0 0 +442 0 0 0 +523 0 0 0 +525 0 0 0 +528 0 0 0 +531 0 0 0 +536 0 0 0 +540 0 0 0 +561 0 0 0 +563 0 0 0 +564 0 0 0 +565 0 0 0 +566 0 0 0 +567 0 0 0 +568 0 0 0 +569 0 0 0 +570 0 0 0 +571 0 0 0 +572 0 0 0 +573 0 0 0 +574 0 0 0 +575 0 0 0 +576 0 0 0 +577 0 0 0 +578 0 0 0 +579 0 0 0 +580 0 0 0 +581 0 0 0 +591 0 0 0 +601 0 0 0 +603 0 0 0 +604 0 0 0 +605 0 0 0 +606 0 0 0 +607 0 0 0 +608 0 0 0 +609 0 0 0 +610 0 0 0 +612 0 0 0 +613 0 0 0 +614 0 0 0 +615 0 0 0 +616 0 0 0 +617 0 0 0 +618 0 0 0 +619 0 0 0 +621 0 0 0 +631 0 0 0 +1064 0 0 0 +1104 0 0 0 +1186 0 0 0 +1187 0 0 0 +1192 0 0 0 +1193 0 0 0 +1194 0 0 0 +1195 0 0 0 +1198 0 0 0 +1199 0 0 0 +1222 0 0 0 +1223 0 0 0 +1225 0 0 0 +1226 0 0 0 +1227 0 0 0 +1228 0 0 0 +1229 0 0 0 +1230 0 0 0 +1232 0 0 0 +1233 0 0 0 +1234 0 0 0 +1235 0 0 0 +1236 0 0 0 +1237 0 0 0 +1238 0 0 0 +1239 0 0 0 +1240 0 0 0 +1262 0 0 0 +1263 0 0 0 +1265 0 0 0 +1266 0 0 0 +1268 0 0 0 +1269 0 0 0 +1270 0 0 0 +1272 0 0 0 +1273 0 0 0 +1274 0 0 0 +1275 0 0 0 +1276 0 0 0 +1277 0 0 0 +1278 0 0 0 +1280 0 0 0 +322 0 0 0 +481 0 0 0 +483 0 0 0 +484 0 0 0 +485 0 0 0 +486 0 0 0 +487 0 0 0 +488 0 0 0 +489 0 0 0 +490 0 0 0 +491 0 0 0 +492 0 0 0 +493 0 0 0 +494 0 0 0 +495 0 0 0 +496 0 0 0 +497 0 0 0 +498 0 0 0 +499 0 0 0 +500 0 0 0 +501 0 0 0 +511 0 0 0 +521 0 0 0 +524 0 0 0 +526 0 0 0 +527 0 0 0 +529 0 0 0 +530 0 0 0 +532 0 0 0 +533 0 0 0 +534 0 0 0 +535 0 0 0 +537 0 0 0 +538 0 0 0 +539 0 0 0 +541 0 0 0 +551 0 0 0 +611 0 0 0 +620 0 0 0 +984 0 0 0 +1024 0 0 0 +1142 0 0 0 +1143 0 0 0 +1145 0 0 0 +1146 0 0 0 +1147 0 0 0 +1148 0 0 0 +1149 0 0 0 +1150 0 0 0 +1152 0 0 0 +1153 0 0 0 +1154 0 0 0 +1155 0 0 0 +1156 0 0 0 +1157 0 0 0 +1158 0 0 0 +1159 0 0 0 +1160 0 0 0 +1182 0 0 0 +1183 0 0 0 +1185 0 0 0 +1188 0 0 0 +1189 0 0 0 +1190 0 0 0 +1196 0 0 0 +1197 0 0 0 +1200 0 0 0 +1267 0 0 0 +1279 0 0 0 +43 0 0 0 +45 0 0 0 +48 0 0 0 +51 0 0 0 +56 0 0 0 +60 0 0 0 +81 0 0 0 +83 0 0 0 +84 0 0 0 +85 0 0 0 +86 0 0 0 +87 0 0 0 +88 0 0 0 +89 0 0 0 +90 0 0 0 +91 0 0 0 +92 0 0 0 +93 0 0 0 +94 0 0 0 +95 0 0 0 +96 0 0 0 +97 0 0 0 +98 0 0 0 +99 0 0 0 +100 0 0 0 +101 0 0 0 +111 0 0 0 +121 0 0 0 +123 0 0 0 +124 0 0 0 +126 0 0 0 +127 0 0 0 +128 0 0 0 +129 0 0 0 +130 0 0 0 +132 0 0 0 +133 0 0 0 +134 0 0 0 +135 0 0 0 +137 0 0 0 +138 0 0 0 +139 0 0 0 +141 0 0 0 +151 0 0 0 +522 0 0 0 +562 0 0 0 +602 0 0 0 +706 0 0 0 +707 0 0 0 +712 0 0 0 +713 0 0 0 +714 0 0 0 +715 0 0 0 +718 0 0 0 +719 0 0 0 +742 0 0 0 +743 0 0 0 +744 0 0 0 +745 0 0 0 +746 0 0 0 +747 0 0 0 +748 0 0 0 +749 0 0 0 +750 0 0 0 +752 0 0 0 +753 0 0 0 +754 0 0 0 +755 0 0 0 +756 0 0 0 +757 0 0 0 +758 0 0 0 +759 0 0 0 +760 0 0 0 +782 0 0 0 +783 0 0 0 +784 0 0 0 +785 0 0 0 +786 0 0 0 +788 0 0 0 +789 0 0 0 +790 0 0 0 +792 0 0 0 +793 0 0 0 +794 0 0 0 +795 0 0 0 +796 0 0 0 +797 0 0 0 +798 0 0 0 +800 0 0 0 +902 0 0 0 +942 0 0 0 +1224 0 0 0 +1264 0 0 0 +1 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 0 0 0 +9 0 0 0 +10 0 0 0 +11 0 0 0 +12 0 0 0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 0 0 0 +21 0 0 0 +31 0 0 0 +41 0 0 0 +44 0 0 0 +46 0 0 0 +47 0 0 0 +49 0 0 0 +50 0 0 0 +52 0 0 0 +53 0 0 0 +54 0 0 0 +55 0 0 0 +57 0 0 0 +58 0 0 0 +59 0 0 0 +61 0 0 0 +71 0 0 0 +125 0 0 0 +131 0 0 0 +136 0 0 0 +140 0 0 0 +482 0 0 0 +662 0 0 0 +663 0 0 0 +664 0 0 0 +665 0 0 0 +666 0 0 0 +667 0 0 0 +668 0 0 0 +669 0 0 0 +670 0 0 0 +672 0 0 0 +673 0 0 0 +674 0 0 0 +675 0 0 0 +676 0 0 0 +677 0 0 0 +678 0 0 0 +679 0 0 0 +680 0 0 0 +702 0 0 0 +703 0 0 0 +704 0 0 0 +705 0 0 0 +708 0 0 0 +709 0 0 0 +710 0 0 0 +716 0 0 0 +717 0 0 0 +720 0 0 0 +787 0 0 0 +799 0 0 0 +822 0 0 0 +862 0 0 0 +1144 0 0 0 +1184 0 0 0 +42 0 0 0 +82 0 0 0 +122 0 0 0 +203 0 0 0 +205 0 0 0 +208 0 0 0 +211 0 0 0 +216 0 0 0 +220 0 0 0 +241 0 0 0 +243 0 0 0 +244 0 0 0 +245 0 0 0 +246 0 0 0 +247 0 0 0 +248 0 0 0 +249 0 0 0 +250 0 0 0 +251 0 0 0 +252 0 0 0 +253 0 0 0 +254 0 0 0 +255 0 0 0 +256 0 0 0 +257 0 0 0 +258 0 0 0 +259 0 0 0 +260 0 0 0 +261 0 0 0 +271 0 0 0 +281 0 0 0 +283 0 0 0 +284 0 0 0 +286 0 0 0 +287 0 0 0 +288 0 0 0 +289 0 0 0 +290 0 0 0 +292 0 0 0 +293 0 0 0 +294 0 0 0 +295 0 0 0 +297 0 0 0 +298 0 0 0 +299 0 0 0 +301 0 0 0 +311 0 0 0 +866 0 0 0 +867 0 0 0 +872 0 0 0 +873 0 0 0 +874 0 0 0 +875 0 0 0 +878 0 0 0 +879 0 0 0 +903 0 0 0 +905 0 0 0 +906 0 0 0 +907 0 0 0 +908 0 0 0 +909 0 0 0 +910 0 0 0 +912 0 0 0 +913 0 0 0 +914 0 0 0 +915 0 0 0 +916 0 0 0 +917 0 0 0 +918 0 0 0 +919 0 0 0 +920 0 0 0 +943 0 0 0 +945 0 0 0 +946 0 0 0 +948 0 0 0 +949 0 0 0 +950 0 0 0 +952 0 0 0 +953 0 0 0 +954 0 0 0 +955 0 0 0 +956 0 0 0 +957 0 0 0 +958 0 0 0 +960 0 0 0 +2 0 0 0 +161 0 0 0 +163 0 0 0 +164 0 0 0 +165 0 0 0 +166 0 0 0 +167 0 0 0 +168 0 0 0 +169 0 0 0 +170 0 0 0 +171 0 0 0 +172 0 0 0 +173 0 0 0 +174 0 0 0 +175 0 0 0 +176 0 0 0 +177 0 0 0 +178 0 0 0 +179 0 0 0 +180 0 0 0 +181 0 0 0 +191 0 0 0 +201 0 0 0 +204 0 0 0 +206 0 0 0 +207 0 0 0 +209 0 0 0 +210 0 0 0 +212 0 0 0 +213 0 0 0 +214 0 0 0 +215 0 0 0 +217 0 0 0 +218 0 0 0 +219 0 0 0 +221 0 0 0 +231 0 0 0 +285 0 0 0 +291 0 0 0 +296 0 0 0 +300 0 0 0 +823 0 0 0 +825 0 0 0 +826 0 0 0 +827 0 0 0 +828 0 0 0 +829 0 0 0 +830 0 0 0 +832 0 0 0 +833 0 0 0 +834 0 0 0 +835 0 0 0 +836 0 0 0 +837 0 0 0 +838 0 0 0 +839 0 0 0 +840 0 0 0 +863 0 0 0 +865 0 0 0 +868 0 0 0 +869 0 0 0 +870 0 0 0 +876 0 0 0 +877 0 0 0 +880 0 0 0 +947 0 0 0 +959 0 0 0 Bonds -1 1 6 10 -2 1 16 20 -3 1 26 30 -4 1 36 40 -5 1 46 50 -6 1 56 60 -7 1 66 70 -8 1 76 80 -9 1 86 90 -10 1 96 100 -11 1 106 110 -12 1 116 120 -13 1 126 130 -14 1 136 140 -15 1 146 150 -16 1 156 160 -17 1 166 170 -18 1 176 180 -19 1 186 190 -20 1 196 200 -21 1 206 210 -22 1 216 220 -23 1 226 230 -24 1 236 240 -25 1 246 250 -26 1 256 260 -27 1 266 270 -28 1 276 280 -29 1 286 290 -30 1 296 300 -31 1 306 310 -32 1 316 320 -33 1 326 330 -34 1 336 340 -35 1 346 350 -36 1 356 360 -37 1 366 370 -38 1 376 380 -39 1 386 390 -40 1 396 400 -41 1 406 410 -42 1 416 420 -43 1 426 430 -44 1 436 440 -45 1 446 450 -46 1 456 460 -47 1 466 470 -48 1 476 480 -49 1 486 490 -50 1 496 500 -51 1 506 510 -52 1 516 520 -53 1 526 530 -54 1 536 540 -55 1 546 550 -56 1 556 560 -57 1 566 570 -58 1 576 580 -59 1 586 590 -60 1 596 600 -61 1 606 610 -62 1 616 620 -63 1 626 630 -64 1 636 640 -65 1 646 650 -66 1 656 660 -67 1 666 670 -68 1 676 680 -69 1 686 690 -70 1 696 700 -71 1 706 710 -72 1 716 720 -73 1 726 730 -74 1 736 740 -75 1 746 750 -76 1 756 760 -77 1 766 770 -78 1 776 780 -79 1 786 790 -80 1 796 800 -81 1 806 810 -82 1 816 820 -83 1 826 830 -84 1 836 840 -85 1 846 850 -86 1 856 860 -87 1 866 870 -88 1 876 880 -89 1 886 890 -90 1 896 900 -91 1 906 910 -92 1 916 920 -93 1 926 930 -94 1 936 940 -95 1 946 950 -96 1 956 960 -97 1 966 970 -98 1 976 980 -99 1 986 990 -100 1 996 1000 -101 1 1006 1010 -102 1 1016 1020 -103 1 1026 1030 -104 1 1036 1040 -105 1 1046 1050 -106 1 1056 1060 -107 1 1066 1070 -108 1 1076 1080 -109 1 1086 1090 -110 1 1096 1100 -111 1 1106 1110 -112 1 1116 1120 -113 1 1126 1130 -114 1 1136 1140 -115 1 1146 1150 -116 1 1156 1160 -117 1 1166 1170 -118 1 1176 1180 -119 1 1186 1190 -120 1 1196 1200 -121 1 1206 1210 -122 1 1216 1220 -123 1 1226 1230 -124 1 1236 1240 -125 1 1246 1250 -126 1 1256 1260 -127 1 1266 1270 -128 1 1276 1280 +1 1 386 390 +2 1 426 430 +3 1 436 440 +4 1 476 480 +5 1 1016 1020 +6 1 1046 1050 +7 1 1056 1060 +8 1 1086 1090 +9 1 346 350 +10 1 356 360 +11 1 396 400 +12 1 466 470 +13 1 966 970 +14 1 976 980 +15 1 1006 1010 +16 1 1096 1100 +17 1 546 550 +18 1 586 590 +19 1 596 600 +20 1 636 640 +21 1 1176 1180 +22 1 1206 1210 +23 1 1216 1220 +24 1 1246 1250 +25 1 506 510 +26 1 516 520 +27 1 556 560 +28 1 626 630 +29 1 1126 1130 +30 1 1136 1140 +31 1 1166 1170 +32 1 1256 1260 +33 1 66 70 +34 1 106 110 +35 1 116 120 +36 1 156 160 +37 1 696 700 +38 1 726 730 +39 1 736 740 +40 1 766 770 +41 1 26 30 +42 1 36 40 +43 1 76 80 +44 1 146 150 +45 1 646 650 +46 1 656 660 +47 1 686 690 +48 1 776 780 +49 1 226 230 +50 1 266 270 +51 1 276 280 +52 1 316 320 +53 1 856 860 +54 1 886 890 +55 1 896 900 +56 1 926 930 +57 1 186 190 +58 1 196 200 +59 1 236 240 +60 1 306 310 +61 1 806 810 +62 1 816 820 +63 1 846 850 +64 1 936 940 +65 1 376 380 +66 1 406 410 +67 1 416 420 +68 1 446 450 +69 1 456 460 +70 1 1026 1030 +71 1 1066 1070 +72 1 1076 1080 +73 1 1106 1110 +74 1 1116 1120 +75 1 326 330 +76 1 336 340 +77 1 366 370 +78 1 986 990 +79 1 996 1000 +80 1 1036 1040 +81 1 536 540 +82 1 566 570 +83 1 576 580 +84 1 606 610 +85 1 616 620 +86 1 1186 1190 +87 1 1226 1230 +88 1 1236 1240 +89 1 1266 1270 +90 1 1276 1280 +91 1 486 490 +92 1 496 500 +93 1 526 530 +94 1 1146 1150 +95 1 1156 1160 +96 1 1196 1200 +97 1 56 60 +98 1 86 90 +99 1 96 100 +100 1 126 130 +101 1 706 710 +102 1 746 750 +103 1 756 760 +104 1 786 790 +105 1 796 800 +106 1 6 10 +107 1 16 20 +108 1 46 50 +109 1 136 140 +110 1 666 670 +111 1 676 680 +112 1 716 720 +113 1 216 220 +114 1 246 250 +115 1 256 260 +116 1 286 290 +117 1 866 870 +118 1 906 910 +119 1 916 920 +120 1 946 950 +121 1 956 960 +122 1 166 170 +123 1 176 180 +124 1 206 210 +125 1 296 300 +126 1 826 830 +127 1 836 840 +128 1 876 880 diff --git a/tools/msi2lmp/test/reference/ethane-oplsaa.data2 b/tools/msi2lmp/test/reference/ethane-oplsaa.data2 index 7932115e6e..cf058a4ca9 100644 --- a/tools/msi2lmp/test/reference/ethane-oplsaa.data2 +++ b/tools/msi2lmp/test/reference/ethane-oplsaa.data2 @@ -1,4 +1,4 @@ -LAMMPS data file via write_data, version 24 Oct 2015-ICMS, timestep = 60 +LAMMPS data file via write_data, version 29 Aug 2024, timestep = 64, units = real 8 atoms 2 atom types @@ -9,13 +9,13 @@ LAMMPS data file via write_data, version 24 Oct 2015-ICMS, timestep = 60 9 dihedrals 1 dihedral types --5.0000000000000000e+00 5.0000000000000000e+00 xlo xhi --5.0000000000000000e+00 5.0000000000000000e+00 ylo yhi --5.0000000000000000e+00 5.0000000000000000e+00 zlo zhi +-5 5 xlo xhi +-5 5 ylo yhi +-5 5 zlo zhi Masses -1 12.0112 +1 12.01115 2 1.00797 Pair Coeffs # lj/cut/coul/cut @@ -39,25 +39,25 @@ Dihedral Coeffs # opls Atoms # full -1 1 1 -1.7999999999999999e-01 4.4520961794662339e+00 -4.8331316055118139e+00 4.9921953697666774e+00 0 1 -1 -2 1 1 -1.7999999999999999e-01 -4.0208267456132498e+00 -4.9408970766661060e+00 -4.9962668603193716e+00 1 1 0 -3 1 2 5.9999999999999998e-02 4.1241637410618237e+00 -3.9187715229527775e+00 4.4953501727331462e+00 0 1 -1 -4 1 2 5.9999999999999998e-02 3.9927847754165149e+00 4.3246628372301563e+00 4.4708516600772406e+00 0 0 -1 -5 1 2 5.9999999999999998e-02 4.0591846610420355e+00 -4.8176278098672096e+00 -3.9904372631272924e+00 0 1 0 -6 1 2 5.9999999999999998e-02 -3.5762405194770461e+00 -4.0716394256255244e+00 -4.5137080084717223e+00 1 1 0 -7 1 2 5.9999999999999998e-02 -3.6936651570105905e+00 4.1740778258698201e+00 -4.4511582014826949e+00 1 0 0 -8 1 2 5.9999999999999998e-02 -3.6211369348857190e+00 4.9967667775234554e+00 3.9920131308240276e+00 1 0 -1 +1 1 1 -0.18 4.450690671089314 -4.83133647736812 4.992428212375868 0 1 -1 +2 1 1 -0.18 -4.022291647324266 -4.942324611094984 -4.995836359730008 1 1 0 +3 1 2 0.06 4.1294147504666165 -3.9160894986014068 4.495489435092607 0 1 -1 +4 1 2 0.06 3.9961668185396193 4.3269540139496785 4.470098784261843 0 0 -1 +5 1 2 0.06 4.059021520856406 -4.816007407764785 -3.990885907539094 0 1 0 +6 1 2 0.06 -3.5752328984263166 -4.071671221696795 -4.5159098704661425 1 1 0 +7 1 2 0.06 -3.6980390300174055 4.172581688097945 -4.448408184535642 1 0 0 +8 1 2 0.06 -3.6233701851839633 4.991333514478468 3.9918638905405723 1 0 -1 Velocities -1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 0 0 0 Bonds diff --git a/tools/msi2lmp/test/runtests.sh b/tools/msi2lmp/test/runtests.sh index b81c8637cd..2cfbcb9f72 100755 --- a/tools/msi2lmp/test/runtests.sh +++ b/tools/msi2lmp/test/runtests.sh @@ -2,8 +2,8 @@ MSI2LMP_LIBRARY=../frc_files VALGRIND='valgrind -v --track-origins=yes --show-reachable=yes --leak-check=full' -MSI2LMP=../src/msi2lmp.exe -LAMMPS=../../../src/lmp_serial +MSI2LMP=../../../build-test/msi2lmp +LAMMPS=../../../build-test/lmp CHECKDATA=./data-compare.pl if [ ! -x $MSI2LMP ] From bafe7c91fa723665d2a3c0b07d4c32a56b1a8c51 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 08:29:55 -0500 Subject: [PATCH 260/326] 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 261/326] 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 262/326] 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 263/326] 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 78342e5b6f06bc3d76a5897aaa5790fbf7efdb45 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 12:28:46 -0400 Subject: [PATCH 264/326] fix typo --- src/KOKKOS/fft3d_kokkos.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index a4cc4eeb07..f4c5fa5028 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -157,7 +157,7 @@ public: KOKKOS_INLINE_FUNCTION void operator() (const int &i) const { -#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) || defined(FFT_KOKKOS_MKL_GPU || defined(FFT_KOKKOS_NVPL) +#if defined(FFT_KOKKOS_FFTW3) || defined(FFT_KOKKOS_CUFFT) || defined(FFT_KOKKOS_HIPFFT) || defined(FFT_KOKKOS_MKL_GPU) || defined(FFT_KOKKOS_NVPL) FFT_SCALAR* out_ptr = (FFT_SCALAR *)(d_out.data()+i); *(out_ptr++) *= norm; *(out_ptr++) *= norm; From 932f10e3b6f6c65034a1af974216fb1bbb187840 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 12:46:42 -0500 Subject: [PATCH 265/326] 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 42a7294bc1f2937af3e7b14d22d999d0be9e8e1f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 14:00:27 -0400 Subject: [PATCH 266/326] silence compiler warnings --- fortran/lammps.f90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fortran/lammps.f90 b/fortran/lammps.f90 index 6ced71be49..a2f28073e5 100644 --- a/fortran/lammps.f90 +++ b/fortran/lammps.f90 @@ -1443,7 +1443,7 @@ CONTAINS IF (SIZE_TAGINT == 8) THEN Cptr = C_LOC(id) ELSE - id32 = id + id32 = INT(id, c_int) Cptr = C_LOC(id32) END IF lmp_map_atom_big = lammps_map_atom(self%handle, Cptr) + 1 @@ -2604,6 +2604,8 @@ CONTAINS TYPE(c_ptr) :: Cid, Ctype, Cx, Cv, Cimage INTEGER(c_int) :: tagint_size, atoms_created + Ctype = c_null_ptr + Cx = c_null_ptr ! type is actually NOT optional, but we can't make id optional without it, ! so we check at run-time IF (.NOT. PRESENT(type)) THEN From 8fcdb5c2713b8c8632c0b1fcc02313ada718f756 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 14:58:42 -0400 Subject: [PATCH 267/326] silence compiler warnings --- src/EXTRA-COMMAND/ndx_group.cpp | 3 ++- src/angle_write.cpp | 4 +++- src/dihedral_write.cpp | 4 +++- tools/msi2lmp/src/ReadMdfFile.c | 7 +++---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/EXTRA-COMMAND/ndx_group.cpp b/src/EXTRA-COMMAND/ndx_group.cpp index c5b0d3cf8a..d006473bb8 100644 --- a/src/EXTRA-COMMAND/ndx_group.cpp +++ b/src/EXTRA-COMMAND/ndx_group.cpp @@ -33,7 +33,8 @@ static std::string find_section(FILE *fp, const std::string &name) { char linebuf[BUFLEN]; - fgets(linebuf, BUFLEN, fp); + if (!fgets(linebuf, BUFLEN, fp)) + throw TokenizerException("Read error", utils::getsyserror()); while (!feof(fp)) { if (utils::strmatch(linebuf, "^\\s*\\[.*\\]\\s*$")) { auto words = Tokenizer(linebuf).as_vector(); diff --git a/src/angle_write.cpp b/src/angle_write.cpp index 48420ae7be..1be5f1acac 100644 --- a/src/angle_write.cpp +++ b/src/angle_write.cpp @@ -148,8 +148,10 @@ void AngleWrite::command(int narg, char **arg) FILE *coeffs; char line[MAXLINE] = {'\0'}; coeffs = fopen(coeffs_file.c_str(), "r"); + if (!coeffs) + error->one(FLERR, "Unable to open temporary file {}: {}", coeffs_file, utils::getsyserror()); for (int i = 0; i < atom->nangletypes; ++i) { - fgets(line, MAXLINE, coeffs); + utils::sfgets(FLERR, line, MAXLINE, coeffs, coeffs_file.c_str(), error); writer->input->one(fmt::format("angle_coeff {}", line)); } fclose(coeffs); diff --git a/src/dihedral_write.cpp b/src/dihedral_write.cpp index dd1ca1de6a..1d0f908e2c 100644 --- a/src/dihedral_write.cpp +++ b/src/dihedral_write.cpp @@ -149,8 +149,10 @@ void DihedralWrite::command(int narg, char **arg) FILE *coeffs; char line[MAXLINE] = {'\0'}; coeffs = fopen(coeffs_file.c_str(), "r"); + if (!coeffs) + error->one(FLERR, "Unable to open temporary file {}: {}", utils::getsyserror()); for (int i = 0; i < atom->ndihedraltypes; ++i) { - fgets(line, MAXLINE, coeffs); + utils::sfgets(FLERR, line, MAXLINE, coeffs, coeffs_file.c_str(), error); writer->input->one(fmt::format("dihedral_coeff {}", line)); } fclose(coeffs); diff --git a/tools/msi2lmp/src/ReadMdfFile.c b/tools/msi2lmp/src/ReadMdfFile.c index 96a6a01ab2..253121d001 100644 --- a/tools/msi2lmp/src/ReadMdfFile.c +++ b/tools/msi2lmp/src/ReadMdfFile.c @@ -144,7 +144,7 @@ void ReadMdfFile(void) molecule[n].residue[j].end = i; molecule[n].residue[++j].start = i; - strncpy(molecule[n].residue[j].name,atoms[i].residue_string,MAX_NAME); + memcpy(molecule[n].residue[j].name,atoms[i].residue_string,MAX_NAME); } } molecule[n].residue[j].end = molecule[n].end; @@ -167,10 +167,9 @@ void ReadMdfFile(void) for (n=0; n < no_molecules; n++) { for (j=0; j < molecule[n].no_residues; j++) { - for (i=molecule[n].residue[j].start; i < molecule[n].residue[j].end; - i++) { + for (i=molecule[n].residue[j].start; i < molecule[n].residue[j].end; i++) { for (l=0; l < atoms[i].no_connect; l++) { - strncpy(temp_string,atoms[i].connections[l],MAX_STRING); + memcpy(temp_string,atoms[i].connections[l],MAX_STRING); temp_residue = strtok(temp_string,":"); temp_atom_name = strtok(NULL,"%"); From bca271a2867d0cda2d8b46ac7d7c46b2a1ad5db5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 6 Sep 2024 17:34:35 -0500 Subject: [PATCH 268/326] 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 269/326] 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 6214182fd0ddd5b5a406995fa85be00376fd304b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 21:06:01 -0400 Subject: [PATCH 270/326] remove unused imports, reformat --- python/lammps/numpy_wrapper.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/python/lammps/numpy_wrapper.py b/python/lammps/numpy_wrapper.py index 6e8c7ebcd2..5b90cf03de 100644 --- a/python/lammps/numpy_wrapper.py +++ b/python/lammps/numpy_wrapper.py @@ -18,12 +18,10 @@ from ctypes import POINTER, c_void_p, c_char_p, c_double, c_int, c_int32, c_int64, cast -from .constants import LAMMPS_AUTODETECT, LAMMPS_INT, LAMMPS_INT_2D, \ - LAMMPS_DOUBLE, LAMMPS_DOUBLE_2D, LAMMPS_INT64, LAMMPS_INT64_2D, \ - LMP_STYLE_GLOBAL, LMP_STYLE_ATOM, LMP_STYLE_LOCAL, \ - LMP_TYPE_SCALAR, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, \ - LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS, \ - LMP_VAR_EQUAL, LMP_VAR_ATOM, LMP_VAR_VECTOR, LMP_VAR_STRING +from .constants import LAMMPS_AUTODETECT, LAMMPS_INT, LAMMPS_INT_2D, LAMMPS_DOUBLE, \ + LAMMPS_DOUBLE_2D, LAMMPS_INT64, LAMMPS_INT64_2D, LMP_STYLE_GLOBAL, LMP_STYLE_ATOM, \ + LMP_STYLE_LOCAL, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, LMP_SIZE_VECTOR, LMP_SIZE_ROWS, \ + LMP_SIZE_COLS, LMP_VAR_EQUAL, LMP_VAR_ATOM from .data import NeighList From afc9f72887a693e24291375f15270910fdbc4003 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 21:18:31 -0400 Subject: [PATCH 271/326] 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 272/326] 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 273/326] 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 274/326] 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 275/326] 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 276/326] 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 277/326] 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 278/326] 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 279/326] 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 280/326] 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 281/326] 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 282/326] 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 283/326] 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 284/326] 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 c05390209e9008b8166a8a0d27b58fce076845b1 Mon Sep 17 00:00:00 2001 From: Evan Weinberg Date: Mon, 9 Sep 2024 12:10:13 -0700 Subject: [PATCH 285/326] Removed d_bo_first, d_hb_first, replacing it with the strided offsets to the bonds for atom i --- src/KOKKOS/pair_reaxff_kokkos.cpp | 70 ++++++++++++------------------- src/KOKKOS/pair_reaxff_kokkos.h | 2 +- 2 files changed, 28 insertions(+), 44 deletions(-) diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index 6ff955e6d8..a2844c2ff8 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1502,7 +1502,6 @@ void PairReaxFFKokkos::allocate_array() } if (cut_hbsq > 0.0) { - MemKK::realloc_kokkos(d_hb_first,"reaxff/kk:hb_first",nmax); MemKK::realloc_kokkos(d_hb_num,"reaxff/kk:hb_num",nmax); if (((bigint) nmax*maxhb) > MAXSMALLINT) @@ -1510,7 +1509,6 @@ void PairReaxFFKokkos::allocate_array() MemKK::realloc_kokkos(d_hb_list,"reaxff/kk:hb_list",nmax*maxhb); } - MemKK::realloc_kokkos(d_bo_first,"reaxff/kk:bo_first",nmax); MemKK::realloc_kokkos(d_bo_num,"reaxff/kk:bo_num",nmax); if (((bigint) nmax*maxbo) > MAXSMALLINT) @@ -1606,8 +1604,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< F_FLOAT dDeltap_self_i[3] = {0.0,0.0,0.0}; F_FLOAT total_bo_i = 0.0; - d_bo_first[i] = i*maxbo; - const int bo_first_i = d_bo_first[i]; + const int bo_first_i = i * maxbo; int ihb = -1; @@ -1615,8 +1612,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< if (cut_hbsq > 0.0) { ihb = paramssing(itype).p_hbond; if (ihb == 1) { - d_hb_first[i] = i*maxhb; - hb_first_i = d_hb_first[i]; + hb_first_i = i * maxhb; } } @@ -1632,9 +1628,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< int j = d_neighbors(i,jj); j &= NEIGHMASK; - d_bo_first[j] = j*maxbo; - d_hb_first[j] = j*maxhb; - delij[0] = x(j,0) - xtmp; delij[1] = x(j,1) - ytmp; delij[2] = x(j,2) - ztmp; @@ -1750,8 +1743,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP F_FLOAT C12, C34, C56, BO_s, BO_pi, BO_pi2, BO, delij[3]; - d_bo_first[i] = i*maxbo; - const int bo_first_i = d_bo_first[i]; + const int bo_first_i = i * maxbo; int ihb = -1; @@ -1759,8 +1751,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP if (cut_hbsq > 0.0) { ihb = paramssing(itype).p_hbond; if (ihb == 1) { - d_hb_first[i] = i*maxhb; - hb_first_i = d_hb_first[i]; + hb_first_i = i * maxhb; } } @@ -1780,9 +1771,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP int j = d_neighbors(i,jj); j &= NEIGHMASK; - d_bo_first[j] = j*maxbo; - d_hb_first[j] = j*maxhb; - delij[0] = x(j,0) - xtmp; delij[1] = x(j,1) - ytmp; delij[2] = x(j,2) - ztmp; @@ -1848,8 +1836,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview::operator()(TagPairReaxBuildListsHalfPreview 0.0) { ihb = paramssing(itype).p_hbond; if (ihb == 1) { - d_hb_first[i] = i*maxhb; - hb_first_i = d_hb_first[i]; + hb_first_i = i * maxhb; } } @@ -1866,8 +1852,6 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview::build_hb_list(F_FLOAT rsq, int i, int hb_firs d_hb_list[j_index] = j; } else if (j < nlocal && ihb == 2 && jhb == 1) { if (NEIGHFLAG == HALF) { - i_index = d_hb_first[j] + d_hb_num[j]; + i_index = j * maxhb + d_hb_num[j]; d_hb_num[j]++; } else - i_index = d_hb_first[j] + Kokkos::atomic_fetch_add(&d_hb_num[j],1); + i_index = j * maxhb + Kokkos::atomic_fetch_add(&d_hb_num[j],1); - const int ii_index = i_index - d_hb_first[j]; + const int ii_index = i_index - j * maxhb; if (ii_index >= maxhb) d_resize_hb() = MAX(d_resize_hb(),ii_index+1); @@ -1952,16 +1936,16 @@ bool PairReaxFFKokkos::build_bo_list(int bo_first_i, int i, int j, i if (NEIGHFLAG == HALF) { j_index = bo_first_i + d_bo_num[i]; - i_index = d_bo_first[j] + d_bo_num[j]; + i_index = j * maxbo + d_bo_num[j]; d_bo_num[i]++; d_bo_num[j]++; } else { j_index = bo_first_i + Kokkos::atomic_fetch_add(&d_bo_num[i],1); - i_index = d_bo_first[j] + Kokkos::atomic_fetch_add(&d_bo_num[j],1); + i_index = j * maxbo + Kokkos::atomic_fetch_add(&d_bo_num[j],1); } jj_index = j_index - bo_first_i; - ii_index = i_index - d_bo_first[j]; + ii_index = i_index - j * maxbo; bool set_dB_flag = true; @@ -1995,7 +1979,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsFull, const i F_FLOAT dDeltap_self_i[3] = {0.0,0.0,0.0}; F_FLOAT total_bo_i = 0.0; - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; for (int jj = j_start; jj < j_end; jj++) { int j = d_bo_list[jj]; @@ -2110,7 +2094,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBondOrder2, const int & const int i = d_ilist[ii]; const int itype = type(i); - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; const F_FLOAT val_i = paramssing(itype).valency; @@ -2279,7 +2263,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeMulti1, const in if (imass > 21.0) dfvl = 0.0; else dfvl = 1.0; - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; F_FLOAT sum_ovun1 = 0.0; @@ -2402,7 +2386,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeMulti2 0 || enobondsflag) a_CdDelta[i] += CEunder3; - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; F_FLOAT CdDelta_i = 0.0; @@ -2461,7 +2445,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxCountAngularTorsion::preprocess_torsion(int i, int /*itype*/, tagin const F_FLOAT bo_ij = d_BO(i,j_index); if (bo_ij < thb_cut) continue; - const int l_start = d_bo_first[j]; + const int l_start = j * maxbo; const int l_end = l_start + d_bo_num[j]; for (int kk = j_start; kk < j_end; kk++) { @@ -3340,9 +3324,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeHydrogen::operator()(TagPairReaxUpdateBond, const X_FLOAT ytmp = x(i,1); const X_FLOAT ztmp = x(i,2); const tagint itag = tag(i); - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; for (int jj = j_start; jj < j_end; jj++) { @@ -3506,7 +3490,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, const F_FLOAT Cdbopi_i = d_Cdbopi(i,j_index); const F_FLOAT Cdbopi2_i = d_Cdbopi2(i,j_index); - const int k_start = d_bo_first[j]; + const int k_start = j * maxbo; const int k_end = k_start + d_bo_num[j]; for (int kk = k_start; kk < k_end; kk++) { @@ -3541,7 +3525,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeBond1::operator()(TagPairReaxComputeBond2::operator()(TagPairReaxComputeBond2::calculate_find_bond_item(int ii, int &numbond int nj = 0; if (mask[i] & groupbit) { - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; for (int jj = j_start; jj < j_end; jj++) { int j = d_bo_list[jj]; @@ -4409,7 +4393,7 @@ KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::operator()(TagPairReaxFindBondSpecies, const int &i) const { int nj = 0; - const int j_start = d_bo_first[i]; + const int j_start = i * maxbo; const int j_end = j_start + d_bo_num[i]; for (int jj = j_start; jj < j_end; jj++) { int j = d_bo_list[jj]; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 5f228ebd19..3902260068 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -470,7 +470,7 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_int_1d_randomread d_ilist; typename AT::t_int_1d_randomread d_numneigh; - typename AT::t_int_1d d_bo_first, d_bo_num, d_bo_list, d_hb_first, d_hb_num, d_hb_list; + typename AT::t_int_1d d_bo_num, d_bo_list, d_hb_num, d_hb_list; DAT::tdual_int_scalar k_resize_bo, k_resize_hb; typename AT::t_int_scalar d_resize_bo, d_resize_hb; From 8e56f37d3da8109fc2c2412305d6ab943f31af40 Mon Sep 17 00:00:00 2001 From: Evan Weinberg Date: Mon, 9 Sep 2024 12:14:44 -0700 Subject: [PATCH 286/326] Removed the variables bo_first_i, hb_first_i from build_bo/hb_list, replacing them with the strided offset calculation --- src/KOKKOS/pair_reaxff_kokkos.cpp | 55 ++++++++++--------------------- src/KOKKOS/pair_reaxff_kokkos.h | 4 +-- 2 files changed, 19 insertions(+), 40 deletions(-) diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index a2844c2ff8..acfa858780 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1604,17 +1604,10 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< F_FLOAT dDeltap_self_i[3] = {0.0,0.0,0.0}; F_FLOAT total_bo_i = 0.0; - const int bo_first_i = i * maxbo; - int ihb = -1; - int hb_first_i; - if (cut_hbsq > 0.0) { + if (cut_hbsq > 0.0) ihb = paramssing(itype).p_hbond; - if (ihb == 1) { - hb_first_i = i * maxhb; - } - } int nnz; blocking_t selected_jj[blocksize]; @@ -1656,7 +1649,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< const F_FLOAT rsq = delij[0]*delij[0] + delij[1]*delij[1] + delij[2]*delij[2]; // hbond list - build_hb_list(rsq, i, hb_first_i, ihb, j, jtype); + build_hb_list(rsq, i, ihb, j, jtype); if (rsq > cut_bosq) continue; @@ -1675,7 +1668,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< int ii_index = -1; int jj_index = -1; - if (build_bo_list(bo_first_i, i, j, ii_index, jj_index)) { + if (build_bo_list(i, j, ii_index, jj_index)) { // from BondOrder1 @@ -1743,17 +1736,10 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP F_FLOAT C12, C34, C56, BO_s, BO_pi, BO_pi2, BO, delij[3]; - const int bo_first_i = i * maxbo; - int ihb = -1; - int hb_first_i; - if (cut_hbsq > 0.0) { + if (cut_hbsq > 0.0) ihb = paramssing(itype).p_hbond; - if (ihb == 1) { - hb_first_i = i * maxhb; - } - } int nnz; blocking_t selected_jj[blocksize]; @@ -1796,7 +1782,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP const F_FLOAT rsq = delij[0]*delij[0] + delij[1]*delij[1] + delij[2]*delij[2]; // hbond list - build_hb_list(rsq, i, hb_first_i, ihb, j, jtype); + build_hb_list(rsq, i, ihb, j, jtype); if (rsq > cut_bosq) continue; @@ -1815,7 +1801,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP int ii_index = -1; int jj_index = -1; - build_bo_list(bo_first_i, i, j, ii_index, jj_index); + build_bo_list(i, j, ii_index, jj_index); } } } @@ -1836,17 +1822,10 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview 0.0) { + if (cut_hbsq > 0.0) ihb = paramssing(itype).p_hbond; - if (ihb == 1) { - hb_first_i = i * maxhb; - } - } for (int jj = 0; jj < jnum; jj++) { int j = d_neighbors(i,jj); @@ -1860,7 +1839,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview(rsq, i, hb_first_i, ihb, j, jtype); + build_hb_list(rsq, i, ihb, j, jtype); if (rsq > cut_bosq) continue; @@ -1880,7 +1859,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview(bo_first_i, i, j, ii_index, jj_index); + build_bo_list(i, j, ii_index, jj_index); } } @@ -1889,7 +1868,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview template KOKKOS_INLINE_FUNCTION -void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int hb_first_i, int ihb, int j, int jtype) const { +void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int ihb, int j, int jtype) const { int i_index, j_index; int jhb = -1; @@ -1897,12 +1876,12 @@ void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int hb_firs jhb = paramssing(jtype).p_hbond; if (ihb == 1 && jhb == 2) { if (NEIGHFLAG == HALF) { - j_index = hb_first_i + d_hb_num[i]; + j_index = i * maxhb + d_hb_num[i]; d_hb_num[i]++; } else - j_index = hb_first_i + Kokkos::atomic_fetch_add(&d_hb_num[i],1); + j_index = i * maxhb + Kokkos::atomic_fetch_add(&d_hb_num[i],1); - const int jj_index = j_index - hb_first_i; + const int jj_index = j_index - i * maxhb; if (jj_index >= maxhb) d_resize_hb() = MAX(d_resize_hb(),jj_index+1); @@ -1931,20 +1910,20 @@ void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int hb_firs template template KOKKOS_INLINE_FUNCTION -bool PairReaxFFKokkos::build_bo_list(int bo_first_i, int i, int j, int& ii_index, int& jj_index) const { +bool PairReaxFFKokkos::build_bo_list(int i, int j, int& ii_index, int& jj_index) const { int i_index, j_index; if (NEIGHFLAG == HALF) { - j_index = bo_first_i + d_bo_num[i]; + j_index = i * maxbo + d_bo_num[i]; i_index = j * maxbo + d_bo_num[j]; d_bo_num[i]++; d_bo_num[j]++; } else { - j_index = bo_first_i + Kokkos::atomic_fetch_add(&d_bo_num[i],1); + j_index = i * maxbo + Kokkos::atomic_fetch_add(&d_bo_num[i],1); i_index = j * maxbo + Kokkos::atomic_fetch_add(&d_bo_num[j],1); } - jj_index = j_index - bo_first_i; + jj_index = j_index - i * maxbo; ii_index = i_index - j * maxbo; bool set_dB_flag = true; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 3902260068..450d9c57a0 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -178,14 +178,14 @@ class PairReaxFFKokkos : public PairReaxFF { // TagPairReaxBuildListsHalfBlocking, HalfBlockingPreview, HalfPreview template KOKKOS_INLINE_FUNCTION - void build_hb_list(F_FLOAT, int, int, int, int, int) const; + void build_hb_list(F_FLOAT, int, int, int, int) const; // Isolated function that builds the bond order list, reused across // TagPairReaxBuildListsHalfBlocking, HalfBlockingPreview, HalfPreview // Returns if we need to populate d_d* functions or not template KOKKOS_INLINE_FUNCTION - bool build_bo_list(int, int, int, int&, int&) const; + bool build_bo_list(int, int, int&, int&) const; KOKKOS_INLINE_FUNCTION void operator()(TagPairReaxBuildListsFull, const int&) const; From fced73ffd779c83f1e340aa14a49672fac123206 Mon Sep 17 00:00:00 2001 From: Evan Weinberg Date: Mon, 9 Sep 2024 12:18:10 -0700 Subject: [PATCH 287/326] Converted d_bo_list and d_hb_list to 2-d Views, removed integer overflow checks --- src/KOKKOS/pair_reaxff_kokkos.cpp | 297 ++++++++++++------------------ src/KOKKOS/pair_reaxff_kokkos.h | 9 +- 2 files changed, 127 insertions(+), 179 deletions(-) diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index acfa858780..44e72c53c1 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1503,18 +1503,10 @@ void PairReaxFFKokkos::allocate_array() if (cut_hbsq > 0.0) { MemKK::realloc_kokkos(d_hb_num,"reaxff/kk:hb_num",nmax); - - if (((bigint) nmax*maxhb) > MAXSMALLINT) - error->one(FLERR,"Too many hydrogen bonds in pair reaxff"); - - MemKK::realloc_kokkos(d_hb_list,"reaxff/kk:hb_list",nmax*maxhb); + MemKK::realloc_kokkos(d_hb_list,"reaxff/kk:hb_list", nmax, maxhb); } MemKK::realloc_kokkos(d_bo_num,"reaxff/kk:bo_num",nmax); - - if (((bigint) nmax*maxbo) > MAXSMALLINT) - error->one(FLERR,"Too many bonds in pair reaxff"); - - MemKK::realloc_kokkos(d_bo_list,"reaxff/kk:bo_list",nmax*maxbo); + MemKK::realloc_kokkos(d_bo_list,"reaxff/kk:bo_list", nmax, maxbo); MemKK::realloc_kokkos(d_BO,"reaxff/kk:BO",nmax,maxbo); MemKK::realloc_kokkos(d_BO_s,"reaxff/kk:BO",nmax,maxbo); @@ -1666,23 +1658,23 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< BO = BO_s + BO_pi + BO_pi2; if (BO < bo_cut) continue; - int ii_index = -1; - int jj_index = -1; - if (build_bo_list(i, j, ii_index, jj_index)) { + int i_index = -1; + int j_index = -1; + if (build_bo_list(i, j, i_index, j_index)) { // from BondOrder1 - d_BO(i,jj_index) = BO; - d_BO_s(i,jj_index) = BO_s; + d_BO(i,j_index) = BO; + d_BO_s(i,j_index) = BO_s; - d_BO(j,ii_index) = BO; - d_BO_s(j,ii_index) = BO_s; + d_BO(j,i_index) = BO; + d_BO_s(j,i_index) = BO_s; - d_BO_pi(j,ii_index) = BO_pi; - d_BO_pi2(j,ii_index) = BO_pi2; + d_BO_pi(j,i_index) = BO_pi; + d_BO_pi2(j,i_index) = BO_pi2; - d_BO_pi(i,jj_index) = BO_pi; - d_BO_pi2(i,jj_index) = BO_pi2; + d_BO_pi(i,j_index) = BO_pi; + d_BO_pi2(i,j_index) = BO_pi2; F_FLOAT Cln_BOp_s = p_bo2 * C12 / rij / rij; F_FLOAT Cln_BOp_pi = p_bo4 * C34 / rij / rij; @@ -1695,18 +1687,18 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlocking< for (int d = 0; d < 3; d++) dDeltap_self_i[d] += dBOp_i[d]; for (int d = 0; d < 3; d++) a_dDeltap_self(j,d) += -dBOp_i[d]; - d_dln_BOp_pi(i,jj_index) = -(BO_pi*Cln_BOp_pi); - d_dln_BOp_pi(j,ii_index) = -(BO_pi*Cln_BOp_pi); + d_dln_BOp_pi(i,j_index) = -(BO_pi*Cln_BOp_pi); + d_dln_BOp_pi(j,i_index) = -(BO_pi*Cln_BOp_pi); - d_dln_BOp_pi2(i,jj_index) = -(BO_pi2*Cln_BOp_pi2); - d_dln_BOp_pi2(j,ii_index) = -(BO_pi2*Cln_BOp_pi2); + d_dln_BOp_pi2(i,j_index) = -(BO_pi2*Cln_BOp_pi2); + d_dln_BOp_pi2(j,i_index) = -(BO_pi2*Cln_BOp_pi2); - d_dBOp(i,jj_index) = -(BO_s*Cln_BOp_s+BO_pi*Cln_BOp_pi+BO_pi2*Cln_BOp_pi2); - d_dBOp(j,ii_index) = -(BO_s*Cln_BOp_s+BO_pi*Cln_BOp_pi+BO_pi2*Cln_BOp_pi2); - d_BO(i,jj_index) = BO - bo_cut; - d_BO(j,ii_index) = BO - bo_cut; - d_BO_s(i,jj_index) = BO_s - bo_cut; - d_BO_s(j,ii_index) = BO_s - bo_cut; + d_dBOp(i,j_index) = -(BO_s*Cln_BOp_s+BO_pi*Cln_BOp_pi+BO_pi2*Cln_BOp_pi2); + d_dBOp(j,i_index) = -(BO_s*Cln_BOp_s+BO_pi*Cln_BOp_pi+BO_pi2*Cln_BOp_pi2); + d_BO(i,j_index) = BO - bo_cut; + d_BO(j,i_index) = BO - bo_cut; + d_BO_s(i,j_index) = BO_s - bo_cut; + d_BO_s(j,i_index) = BO_s - bo_cut; total_bo_i += (BO - bo_cut); a_total_bo[j] += (BO - bo_cut); } @@ -1799,9 +1791,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfBlockingP BO = BO_s + BO_pi + BO_pi2; if (BO < bo_cut) continue; - int ii_index = -1; - int jj_index = -1; - build_bo_list(i, j, ii_index, jj_index); + int i_index = -1; + int j_index = -1; + build_bo_list(i, j, i_index, j_index); } } } @@ -1856,10 +1848,10 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsHalfPreview(i, j, ii_index, jj_index); + build_bo_list(i, j, i_index, j_index); } } @@ -1876,30 +1868,26 @@ void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int ihb, in jhb = paramssing(jtype).p_hbond; if (ihb == 1 && jhb == 2) { if (NEIGHFLAG == HALF) { - j_index = i * maxhb + d_hb_num[i]; + j_index = d_hb_num[i]; d_hb_num[i]++; } else - j_index = i * maxhb + Kokkos::atomic_fetch_add(&d_hb_num[i],1); + j_index = Kokkos::atomic_fetch_add(&d_hb_num[i],1); - const int jj_index = j_index - i * maxhb; - - if (jj_index >= maxhb) - d_resize_hb() = MAX(d_resize_hb(),jj_index+1); + if (j_index >= maxhb) + d_resize_hb() = MAX(d_resize_hb(), j_index+1); else - d_hb_list[j_index] = j; + d_hb_list(i, j_index) = j; } else if (j < nlocal && ihb == 2 && jhb == 1) { if (NEIGHFLAG == HALF) { - i_index = j * maxhb + d_hb_num[j]; + i_index = d_hb_num[j]; d_hb_num[j]++; } else - i_index = j * maxhb + Kokkos::atomic_fetch_add(&d_hb_num[j],1); + i_index = Kokkos::atomic_fetch_add(&d_hb_num[j],1); - const int ii_index = i_index - j * maxhb; - - if (ii_index >= maxhb) - d_resize_hb() = MAX(d_resize_hb(),ii_index+1); + if (i_index >= maxhb) + d_resize_hb() = MAX(d_resize_hb(), i_index+1); else - d_hb_list[i_index] = i; + d_hb_list(j, i_index) = i; } } @@ -1910,31 +1898,27 @@ void PairReaxFFKokkos::build_hb_list(F_FLOAT rsq, int i, int ihb, in template template KOKKOS_INLINE_FUNCTION -bool PairReaxFFKokkos::build_bo_list(int i, int j, int& ii_index, int& jj_index) const { - int i_index, j_index; +bool PairReaxFFKokkos::build_bo_list(int i, int j, int& i_index, int& j_index) const { if (NEIGHFLAG == HALF) { - j_index = i * maxbo + d_bo_num[i]; - i_index = j * maxbo + d_bo_num[j]; + j_index = d_bo_num[i]; + i_index = d_bo_num[j]; d_bo_num[i]++; d_bo_num[j]++; } else { - j_index = i * maxbo + Kokkos::atomic_fetch_add(&d_bo_num[i],1); - i_index = j * maxbo + Kokkos::atomic_fetch_add(&d_bo_num[j],1); + j_index = Kokkos::atomic_fetch_add(&d_bo_num[i],1); + i_index = Kokkos::atomic_fetch_add(&d_bo_num[j],1); } - jj_index = j_index - i * maxbo; - ii_index = i_index - j * maxbo; - bool set_dB_flag = true; - if (jj_index >= maxbo || ii_index >= maxbo) { - const int max_val = MAX(ii_index+1,jj_index+1); + if (j_index >= maxbo || i_index >= maxbo) { + const int max_val = MAX(i_index + 1, j_index + 1); d_resize_bo() = MAX(d_resize_bo(),max_val); set_dB_flag = false; } else { - d_bo_list[j_index] = j; - d_bo_list[i_index] = i; + d_bo_list(i, j_index) = j; + d_bo_list(j, i_index) = i; set_dB_flag = true; } @@ -1958,13 +1942,11 @@ void PairReaxFFKokkos::operator()(TagPairReaxBuildListsFull, const i F_FLOAT dDeltap_self_i[3] = {0.0,0.0,0.0}; F_FLOAT total_bo_i = 0.0; - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + const int jnum = d_bo_num[i]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; const int jtype = type(j); - const int j_index = jj - j_start; delij[0] = x(j,0) - xtmp; delij[1] = x(j,1) - ytmp; delij[2] = x(j,2) - ztmp; @@ -2073,20 +2055,18 @@ void PairReaxFFKokkos::operator()(TagPairReaxBondOrder2, const int & const int i = d_ilist[ii]; const int itype = type(i); - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; + const int jnum = d_bo_num[i]; const F_FLOAT val_i = paramssing(itype).valency; d_total_bo[i] = 0.0; F_FLOAT total_bo = 0.0; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; const int jtype = type(j); - const int j_index = jj - j_start; - const int i_index = maxbo+j_index; + const int i_index = maxbo + j_index; // this line seems confusing... // calculate corrected BO and total bond order @@ -2242,20 +2222,18 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeMulti1, const in if (imass > 21.0) dfvl = 0.0; else dfvl = 1.0; - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; + const int jnum = d_bo_num[i]; F_FLOAT sum_ovun1 = 0.0; F_FLOAT sum_ovun2 = 0.0; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; const int jtype = type(j); - const int j_index = jj - j_start; sum_ovun1 += paramstwbp(itype,jtype).p_ovun1 * paramstwbp(itype,jtype).De_s * d_BO(i,j_index); - sum_ovun2 += (d_Delta[j] - dfvl * d_Delta_lp_temp[j]) * (d_BO_pi(i,j_index) + d_BO_pi2(i,j_index)); + sum_ovun2 += (d_Delta[j] - dfvl * d_Delta_lp_temp[j]) * (d_BO_pi(i, j_index) + d_BO_pi2(i,j_index)); } d_sum_ovun(i,1) += sum_ovun1; d_sum_ovun(i,2) += sum_ovun2; @@ -2365,16 +2343,14 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeMulti2 0 || enobondsflag) a_CdDelta[i] += CEunder3; - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; + const int jnum = d_bo_num[i]; F_FLOAT CdDelta_i = 0.0; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; const int jtype = type(j); const F_FLOAT jmass = paramssing(jtype).mass; - const int j_index = jj - j_start; const F_FLOAT De_s = paramstwbp(itype,jtype).De_s; // multibody lone pair: correction for C2 @@ -2424,24 +2400,23 @@ void PairReaxFFKokkos::operator()(TagPairReaxCountAngularTorsion(i, itype, j_start, j_end, location_angular); + int count_angular = preprocess_angular(i, itype, jnum, location_angular); location_angular = Kokkos::atomic_fetch_add(&d_count_angular_torsion(0), count_angular); if (POPULATE) { // Fill buffer for `i` - preprocess_angular(i, itype, j_start, j_end, location_angular); + preprocess_angular(i, itype, jnum, location_angular); } // Torsion @@ -2453,12 +2428,12 @@ void PairReaxFFKokkos::operator()(TagPairReaxCountAngularTorsion(i, itype, itag, xtmp, ytmp, ztmp, j_start, j_end, location_torsion); + int count_torsion = preprocess_torsion(i, itype, itag, xtmp, ytmp, ztmp, jnum, location_torsion); location_torsion = Kokkos::atomic_fetch_add(&d_count_angular_torsion(1), count_torsion); if (POPULATE) { // Fill buffer for `i` - preprocess_torsion(i, itype, itag, xtmp, ytmp, ztmp, j_start, j_end, location_torsion); + preprocess_torsion(i, itype, itag, xtmp, ytmp, ztmp, jnum, location_torsion); } } @@ -2467,7 +2442,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxCountAngularTorsion KOKKOS_INLINE_FUNCTION -void PairReaxFFKokkos::compute_angular_sbo(int i, int itype, int j_start, int j_end) const { +void PairReaxFFKokkos::compute_angular_sbo(int i, int itype, int jnum) const { F_FLOAT SBO2, CSBO2, dSBO1, dSBO2; @@ -2477,8 +2452,7 @@ void PairReaxFFKokkos::compute_angular_sbo(int i, int itype, int j_s F_FLOAT SBOp = 0.0; F_FLOAT prod_SBO = 1.0; - for (int jj = j_start; jj < j_end; jj++) { - const int j_index = jj - j_start; + for (int j_index = 0; j_index < jnum; j_index++) { const F_FLOAT bo_ij = d_BO(i,j_index); SBOp += (d_BO_pi(i,j_index) + d_BO_pi2(i,j_index)); @@ -2531,14 +2505,13 @@ void PairReaxFFKokkos::compute_angular_sbo(int i, int itype, int j_s template template KOKKOS_INLINE_FUNCTION -int PairReaxFFKokkos::preprocess_angular(int i, int itype, int j_start, int j_end, int location_angular) const { +int PairReaxFFKokkos::preprocess_angular(int i, int itype, int jnum, int location_angular) const { int count_angular = 0; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; - const int j_index = jj - j_start; const F_FLOAT bo_ij = d_BO(i,j_index); if (bo_ij <= thb_cut) continue; @@ -2547,13 +2520,12 @@ int PairReaxFFKokkos::preprocess_angular(int i, int itype, int j_sta const int i_index = maxbo + j_index; const int jtype = type(j); - for (int kk = jj+1; kk < j_end; kk++) { + for (int k_index = j_index + 1; k_index < jnum; k_index++) { //for (int kk = j_start; kk < j_end; kk++) { - int k = d_bo_list[kk]; + int k = d_bo_list(i, k_index); k &= NEIGHMASK; if (k == j) continue; - const int k_index = kk - j_start; const F_FLOAT bo_ik = d_BO(i,k_index); if (bo_ij <= thb_cut || bo_ik <= thb_cut || bo_ij * bo_ik <= thb_cutsq) continue; @@ -2571,14 +2543,14 @@ int PairReaxFFKokkos::preprocess_angular(int i, int itype, int j_sta pack.i0 = i; pack.i1 = j; pack.i2 = k; - pack.i3 = j_start; + pack.i3 = jnum; d_angular_pack(location_angular, 0) = pack; // Second pack stores i_index, j_index, k_index, and j_end pack.i0 = i_index; pack.i1 = j_index; pack.i2 = k_index; - pack.i3 = j_end; + // i3 is unused d_angular_pack(location_angular, 1) = pack; location_angular++; @@ -2597,17 +2569,16 @@ template template KOKKOS_INLINE_FUNCTION int PairReaxFFKokkos::preprocess_torsion(int i, int /*itype*/, tagint itag, - F_FLOAT xtmp, F_FLOAT ytmp, F_FLOAT ztmp, int j_start, int j_end, int location_torsion) const { + F_FLOAT xtmp, F_FLOAT ytmp, F_FLOAT ztmp, int jknum, int location_torsion) const { // in reaxff_torsion_angles: j = i, k = j, i = k; int count_torsion = 0; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + for (int j_index = 0; j_index < jknum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; const tagint jtag = tag(j); - const int j_index = jj - j_start; // skip half of the interactions if (itag > jtag) { @@ -2623,23 +2594,20 @@ int PairReaxFFKokkos::preprocess_torsion(int i, int /*itype*/, tagin const F_FLOAT bo_ij = d_BO(i,j_index); if (bo_ij < thb_cut) continue; - const int l_start = j * maxbo; - const int l_end = l_start + d_bo_num[j]; + const int lnum = d_bo_num[j]; - for (int kk = j_start; kk < j_end; kk++) { - int k = d_bo_list[kk]; + for (int k_index = 0; k_index < jknum; k_index++) { + int k = d_bo_list(i, k_index); k &= NEIGHMASK; if (k == j) continue; - const int k_index = kk - j_start; const F_FLOAT bo_ik = d_BO(i,k_index); if (bo_ik < thb_cut) continue; - for (int ll = l_start; ll < l_end; ll++) { - int l = d_bo_list[ll]; + for (int l_index = 0; l_index < lnum; l_index++) { + int l = d_bo_list(j, l_index); l &= NEIGHMASK; if (l == i) continue; - const int l_index = ll - l_start; const F_FLOAT bo_jl = d_BO(j,l_index); if (l == k || bo_jl < thb_cut || bo_ij*bo_ik*bo_jl < thb_cut) continue; @@ -2721,13 +2689,13 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces const int i = pack.i0; const int j = pack.i1; const int k = pack.i2; - const int j_start = pack.i3; + const int jnum = pack.i3; pack = d_angular_pack(apack, 1); const int i_index = pack.i0; const int j_index = pack.i1; const int k_index = pack.i2; - const int j_end = pack.i3; + // i3 is unused const int itype = type(i); const X_FLOAT xtmp = x(i,0); @@ -2885,9 +2853,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces CdDelta_j += CEcoa4; a_CdDelta[k] += CEcoa5; - for (int ll = j_start; ll < j_end; ll++) { - const int l_index = ll - j_start; - + for (int l_index = 0; l_index < jnum; l_index++) { temp_bo_jt = d_BO(i,l_index); temp = temp_bo_jt * temp_bo_jt * temp_bo_jt; pBOjt7 = temp * temp * temp_bo_jt; @@ -3303,21 +3269,18 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeHydrogen= HB_THRESHOLD) { - hblist[top] = jj; + hblist[top] = j_index; top ++; } } @@ -3325,8 +3288,8 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeHydrogen::operator()(TagPairReaxComputeHydrogen::operator()(TagPairReaxUpdateBond, const X_FLOAT ytmp = x(i,1); const X_FLOAT ztmp = x(i,2); const tagint itag = tag(i); - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; + const int jnum = d_bo_num[i]; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; const tagint jtag = tag(j); @@ -3464,19 +3425,16 @@ void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, if (!flag) continue; - const int j_index = jj - j_start; const F_FLOAT Cdbo_i = d_Cdbo(i,j_index); const F_FLOAT Cdbopi_i = d_Cdbopi(i,j_index); const F_FLOAT Cdbopi2_i = d_Cdbopi2(i,j_index); - const int k_start = j * maxbo; - const int k_end = k_start + d_bo_num[j]; + const int knum = d_bo_num[j]; - for (int kk = k_start; kk < k_end; kk++) { - int k = d_bo_list[kk]; + for (int k_index = 0; k_index < knum; k_index++) { + int k = d_bo_list(j, k_index); k &= NEIGHMASK; if (k != i) continue; - const int k_index = kk - k_start; a_Cdbo(j,k_index) += Cdbo_i; a_Cdbopi(j,k_index) += Cdbopi_i; @@ -3504,13 +3462,12 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeBond1::operator()(TagPairReaxComputeBond1::operator()(TagPairReaxComputeBond2::operator()(TagPairReaxComputeBond2::operator()(TagPairReaxComputeBond2::operator()(TagPairReaxComputeBond2::calculate_find_bond_item(int ii, int &numbond int nj = 0; if (mask[i] & groupbit) { - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + const int jnum = d_bo_num[i]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; if (mask[j] & groupbit) { const tagint jtag = tag[j]; - const int j_index = jj - j_start; - double bo_tmp = d_BO(i,j_index); + double bo_tmp = d_BO(i, j_index); if (bo_tmp > bo_cut_bond) { d_neighid(i,nj) = jtag; @@ -4372,15 +4321,13 @@ KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::operator()(TagPairReaxFindBondSpecies, const int &i) const { int nj = 0; - const int j_start = i * maxbo; - const int j_end = j_start + d_bo_num[i]; - for (int jj = j_start; jj < j_end; jj++) { - int j = d_bo_list[jj]; + const int jnum = d_bo_num[i]; + for (int j_index = 0; j_index < jnum; j_index++) { + int j = d_bo_list(i, j_index); j &= NEIGHMASK; if (j < i) continue; - const int j_index = jj - j_start; - double bo_tmp = d_BO(i,j_index); + double bo_tmp = d_BO(i, j_index); if (bo_tmp >= 0.10) { // Why is this a hardcoded value? k_tmpid.view()(i,nj) = j; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 450d9c57a0..8ffabefafc 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -245,17 +245,17 @@ class PairReaxFFKokkos : public PairReaxFF { // Abstraction for computing SBSO2, CSBO2, dSBO1, dsBO2 KOKKOS_INLINE_FUNCTION - void compute_angular_sbo(int, int, int, int) const; + void compute_angular_sbo(int, int, int) const; // Abstraction for counting and populating angular intermediates template KOKKOS_INLINE_FUNCTION - int preprocess_angular(int, int, int, int, int) const; + int preprocess_angular(int, int, int, int) const; // Abstraction for counting and populating torsion intermediated template KOKKOS_INLINE_FUNCTION - int preprocess_torsion(int, int, tagint, F_FLOAT, F_FLOAT, F_FLOAT, int, int, int) const; + int preprocess_torsion(int, int, tagint, F_FLOAT, F_FLOAT, F_FLOAT, int, int) const; template KOKKOS_INLINE_FUNCTION @@ -470,7 +470,8 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_int_1d_randomread d_ilist; typename AT::t_int_1d_randomread d_numneigh; - typename AT::t_int_1d d_bo_num, d_bo_list, d_hb_num, d_hb_list; + typename AT::t_int_1d d_bo_num, d_hb_num; + typename AT::t_int_2d d_bo_list, d_hb_list; DAT::tdual_int_scalar k_resize_bo, k_resize_hb; typename AT::t_int_scalar d_resize_bo, d_resize_hb; From 8b9e2544f03a9c05f7dc82228df7124c95c07bcc Mon Sep 17 00:00:00 2001 From: Evan Weinberg Date: Mon, 9 Sep 2024 12:23:33 -0700 Subject: [PATCH 288/326] Verified that some unused data gets written to extra space in Cdbo, Cdbopi, Cdbopi2 via moving them to 3-d Views --- src/KOKKOS/kokkos_type.h | 17 +++++ src/KOKKOS/pair_reaxff_kokkos.cpp | 101 ++++++++++++++++-------------- src/KOKKOS/pair_reaxff_kokkos.h | 3 +- 3 files changed, 72 insertions(+), 49 deletions(-) diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index e9061dd7a3..b510134a77 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -863,6 +863,15 @@ typedef tdual_ffloat_2d_dl::t_dev_um t_ffloat_2d_um_dl; typedef tdual_ffloat_2d_dl::t_dev_const_um t_ffloat_2d_const_um_dl; typedef tdual_ffloat_2d_dl::t_dev_const_randomread t_ffloat_2d_randomread_dl; +// 3d F_FLOAT array n*m + +typedef Kokkos::DualView tdual_ffloat_3d; +typedef tdual_ffloat_3d::t_dev t_ffloat_3d; +typedef tdual_ffloat_3d::t_dev_const t_ffloat_3d_const; +typedef tdual_ffloat_3d::t_dev_um t_ffloat_3d_um; +typedef tdual_ffloat_3d::t_dev_const_um t_ffloat_3d_const_um; +typedef tdual_ffloat_3d::t_dev_const_randomread t_ffloat_3d_randomread; + //2d F_FLOAT array n*3 typedef Kokkos::DualView tdual_f_array; @@ -1169,6 +1178,14 @@ typedef tdual_ffloat_2d_dl::t_host_um t_ffloat_2d_um_dl; typedef tdual_ffloat_2d_dl::t_host_const_um t_ffloat_2d_const_um_dl; typedef tdual_ffloat_2d_dl::t_host_const_randomread t_ffloat_2d_randomread_dl; +// 3d F_FLOAT array n*m +typedef Kokkos::DualView tdual_ffloat_3d; +typedef tdual_ffloat_3d::t_host t_ffloat_3d; +typedef tdual_ffloat_3d::t_host_const t_ffloat_3d_const; +typedef tdual_ffloat_3d::t_host_um t_ffloat_3d_um; +typedef tdual_ffloat_3d::t_host_const_um t_ffloat_3d_const_um; +typedef tdual_ffloat_3d::t_host_const_randomread t_ffloat_3d_randomread; + //2d F_FLOAT array n*3 typedef Kokkos::DualView tdual_f_array; //typedef Kokkos::DualView tdual_f_array; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index 44e72c53c1..a448505ef6 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1537,9 +1537,9 @@ void PairReaxFFKokkos::allocate_array() MemKK::realloc_kokkos(d_Deltap,"reaxff/kk:Deltap",nmax); MemKK::realloc_kokkos(d_total_bo,"reaxff/kk:total_bo",nmax); - MemKK::realloc_kokkos(d_Cdbo,"reaxff/kk:Cdbo",nmax,3*maxbo); - MemKK::realloc_kokkos(d_Cdbopi,"reaxff/kk:Cdbopi",nmax,3*maxbo); - MemKK::realloc_kokkos(d_Cdbopi2,"reaxff/kk:Cdbopi2",nmax,3*maxbo); + MemKK::realloc_kokkos(d_Cdbo,"reaxff/kk:Cdbo",nmax,maxbo,3); + MemKK::realloc_kokkos(d_Cdbopi,"reaxff/kk:Cdbopi",nmax,maxbo,3); + MemKK::realloc_kokkos(d_Cdbopi2,"reaxff/kk:Cdbopi2",nmax,maxbo,3); MemKK::realloc_kokkos(d_Delta,"reaxff/kk:Delta",nmax); MemKK::realloc_kokkos(d_Delta_boc,"reaxff/kk:Delta_boc",nmax); @@ -2066,7 +2066,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxBondOrder2, const int & int j = d_bo_list(i, j_index); j &= NEIGHMASK; const int jtype = type(j); - const int i_index = maxbo + j_index; // this line seems confusing... + //const int i_index = maxbo + j_index; // this line seems confusing... + const int i_index = j_index; // ?? + // calculate corrected BO and total bond order @@ -2161,12 +2163,13 @@ void PairReaxFFKokkos::operator()(TagPairReaxBondOrder2, const int & total_bo += d_BO(i,j_index); - d_Cdbo(i,j_index) = 0.0; - d_Cdbopi(i,j_index) = 0.0; - d_Cdbopi2(i,j_index) = 0.0; - d_Cdbo(j,i_index) = 0.0; - d_Cdbopi(j,i_index) = 0.0; - d_Cdbopi2(j,i_index) = 0.0; + // debugging whether or not the values that go into (*,*,1) are relevant + d_Cdbo(i,j_index,0) = 0.0; + d_Cdbopi(i,j_index,0) = 0.0; + d_Cdbopi2(i,j_index,0) = 0.0; + d_Cdbo(j,i_index,1) = 0.0; + d_Cdbopi(j,i_index,1) = 0.0; + d_Cdbopi2(j,i_index,1) = 0.0; d_CdDelta[j] = 0.0; } @@ -2361,7 +2364,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeMulti2::operator()(TagPairReaxComputeMulti2::preprocess_angular(int i, int itype, int jnum, if (bo_ij <= thb_cut) continue; if (i >= nlocal && j >= nlocal) continue; - const int i_index = maxbo + j_index; + // const int i_index = maxbo + j_index; ?? + const int i_index = j_index; // plus a shift? const int jtype = type(j); for (int k_index = j_index + 1; k_index < jnum; k_index++) { @@ -2647,9 +2651,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); - Kokkos::View::value,Kokkos::MemoryTraits::value>> a_Cdbo = d_Cdbo; - Kokkos::View::value,Kokkos::MemoryTraits::value>> a_Cdbopi = d_Cdbopi; - Kokkos::View::value,Kokkos::MemoryTraits::value>> a_Cdbopi2 = d_Cdbopi2; + Kokkos::View::value>> a_Cdbo = d_Cdbo; + Kokkos::View::value>> a_Cdbopi = d_Cdbopi; + Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; auto v_CdDelta = ScatterViewHelper,decltype(dup_CdDelta),decltype(ndup_CdDelta)>::get(dup_CdDelta,ndup_CdDelta); auto a_CdDelta = v_CdDelta.template access>(); @@ -2844,10 +2848,11 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces // Forces - a_Cdbo(i,j_index) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); - a_Cdbo(j,i_index) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); - a_Cdbo(i,k_index) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); - a_Cdbo(k,i_index) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); + // debugging whether or not the values at "1" are needed, they never seem to be read from? + a_Cdbo(i,j_index,0) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); + a_Cdbo(j,i_index,1) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); + a_Cdbo(i,k_index,0) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); + a_Cdbo(k,i_index,1) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); CdDelta_i += ((CEval3 + CEval7) + CEpen1 + CEcoa3); CdDelta_j += CEcoa4; @@ -2858,9 +2863,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces temp = temp_bo_jt * temp_bo_jt * temp_bo_jt; pBOjt7 = temp * temp * temp_bo_jt; - a_Cdbo(i,l_index) += (CEval6 * pBOjt7); - a_Cdbopi(i,l_index) += CEval5; - a_Cdbopi2(i,l_index) += CEval5; + a_Cdbo(i,l_index,0) += (CEval6 * pBOjt7); + a_Cdbopi(i,l_index,0) += CEval5; + a_Cdbopi2(i,l_index,0) += CEval5; } for (int d = 0; d < 3; d++) fi_tmp[d] = CEval8 * dcos_theta_di[d]; @@ -2907,8 +2912,8 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeTorsionPreproces auto v_CdDelta = ScatterViewHelper,decltype(dup_CdDelta),decltype(ndup_CdDelta)>::get(dup_CdDelta,ndup_CdDelta); auto a_CdDelta = v_CdDelta.template access>(); - Kokkos::View::value,Kokkos::MemoryTraits::value>> a_Cdbo = d_Cdbo; - Kokkos::View::value,Kokkos::MemoryTraits::value>> a_Cdbopi = d_Cdbopi; + Kokkos::View::value>> a_Cdbo = d_Cdbo; + Kokkos::View::value>> a_Cdbopi = d_Cdbopi; //auto a_Cdbo = dup_Cdbo.template access>(); // in reaxff_torsion_angles: j = i, k = j, i = k; @@ -3151,14 +3156,14 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeTorsionPreproces // contribution to bond order - a_Cdbopi(i,j_index) += CEtors2; + a_Cdbopi(i,j_index,0) += CEtors2; a_CdDelta[j] += CEtors3; a_CdDelta[i] += CEtors3; - a_Cdbo(i,k_index) += CEtors4 + CEconj1; - a_Cdbo(i,j_index) += CEtors5 + CEconj2; - a_Cdbo(j,l_index) += CEtors6 + CEconj3; + a_Cdbo(i,k_index,0) += CEtors4 + CEconj1; + a_Cdbo(i,j_index,0) += CEtors5 + CEconj2; + a_Cdbo(j,l_index,0) += CEtors6 + CEconj3; const F_FLOAT coeff74 = CEtors7 + CEconj4; const F_FLOAT coeff85 = CEtors8 + CEconj5; @@ -3352,7 +3357,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeHydrogen KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, const int &ii) const { - Kokkos::View::value>> a_Cdbo = d_Cdbo; - Kokkos::View::value>> a_Cdbopi = d_Cdbopi; - Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; + Kokkos::View::value>> a_Cdbo = d_Cdbo; + Kokkos::View::value>> a_Cdbopi = d_Cdbopi; + Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; const int i = d_ilist[ii]; const X_FLOAT xtmp = x(i,0); @@ -3425,9 +3430,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, if (!flag) continue; - const F_FLOAT Cdbo_i = d_Cdbo(i,j_index); - const F_FLOAT Cdbopi_i = d_Cdbopi(i,j_index); - const F_FLOAT Cdbopi2_i = d_Cdbopi2(i,j_index); + const F_FLOAT Cdbo_i = d_Cdbo(i,j_index,0); + const F_FLOAT Cdbopi_i = d_Cdbopi(i,j_index,0); + const F_FLOAT Cdbopi2_i = d_Cdbopi2(i,j_index,0); const int knum = d_bo_num[j]; @@ -3436,9 +3441,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, k &= NEIGHMASK; if (k != i) continue; - a_Cdbo(j,k_index) += Cdbo_i; - a_Cdbopi(j,k_index) += Cdbopi_i; - a_Cdbopi2(j,k_index) += Cdbopi2_i; + a_Cdbo(j,k_index,0) += Cdbo_i; + a_Cdbopi(j,k_index,0) += Cdbopi_i; + a_Cdbopi2(j,k_index,0) += Cdbopi2_i; } } } @@ -3509,9 +3514,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeBond1template e_tally(ev,i,j,ebond); // calculate derivatives of Bond Orders - d_Cdbo(i,j_index) += CEbo; - d_Cdbopi(i,j_index) -= (CEbo + De_p); - d_Cdbopi2(i,j_index) -= (CEbo + De_pp); + d_Cdbo(i,j_index,0) += CEbo; + d_Cdbopi(i,j_index,0) -= (CEbo + De_p); + d_Cdbopi2(i,j_index,0) -= (CEbo + De_pp); // Stabilisation terminal triple bond F_FLOAT estriph = 0.0; @@ -3537,7 +3542,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeBond1::operator()(TagPairReaxComputeBond2 Date: Mon, 9 Sep 2024 12:29:04 -0700 Subject: [PATCH 289/326] Cleaned up the spurious calculations in Cdbo, Cdbopi, Cdbopi2 and removed the overallocations --- src/KOKKOS/kokkos_type.h | 17 ----- src/KOKKOS/pair_reaxff_kokkos.cpp | 102 +++++++++++++----------------- src/KOKKOS/pair_reaxff_kokkos.h | 3 +- 3 files changed, 45 insertions(+), 77 deletions(-) diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index b510134a77..e9061dd7a3 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -863,15 +863,6 @@ typedef tdual_ffloat_2d_dl::t_dev_um t_ffloat_2d_um_dl; typedef tdual_ffloat_2d_dl::t_dev_const_um t_ffloat_2d_const_um_dl; typedef tdual_ffloat_2d_dl::t_dev_const_randomread t_ffloat_2d_randomread_dl; -// 3d F_FLOAT array n*m - -typedef Kokkos::DualView tdual_ffloat_3d; -typedef tdual_ffloat_3d::t_dev t_ffloat_3d; -typedef tdual_ffloat_3d::t_dev_const t_ffloat_3d_const; -typedef tdual_ffloat_3d::t_dev_um t_ffloat_3d_um; -typedef tdual_ffloat_3d::t_dev_const_um t_ffloat_3d_const_um; -typedef tdual_ffloat_3d::t_dev_const_randomread t_ffloat_3d_randomread; - //2d F_FLOAT array n*3 typedef Kokkos::DualView tdual_f_array; @@ -1178,14 +1169,6 @@ typedef tdual_ffloat_2d_dl::t_host_um t_ffloat_2d_um_dl; typedef tdual_ffloat_2d_dl::t_host_const_um t_ffloat_2d_const_um_dl; typedef tdual_ffloat_2d_dl::t_host_const_randomread t_ffloat_2d_randomread_dl; -// 3d F_FLOAT array n*m -typedef Kokkos::DualView tdual_ffloat_3d; -typedef tdual_ffloat_3d::t_host t_ffloat_3d; -typedef tdual_ffloat_3d::t_host_const t_ffloat_3d_const; -typedef tdual_ffloat_3d::t_host_um t_ffloat_3d_um; -typedef tdual_ffloat_3d::t_host_const_um t_ffloat_3d_const_um; -typedef tdual_ffloat_3d::t_host_const_randomread t_ffloat_3d_randomread; - //2d F_FLOAT array n*3 typedef Kokkos::DualView tdual_f_array; //typedef Kokkos::DualView tdual_f_array; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index a448505ef6..7af5889e62 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -1537,9 +1537,9 @@ void PairReaxFFKokkos::allocate_array() MemKK::realloc_kokkos(d_Deltap,"reaxff/kk:Deltap",nmax); MemKK::realloc_kokkos(d_total_bo,"reaxff/kk:total_bo",nmax); - MemKK::realloc_kokkos(d_Cdbo,"reaxff/kk:Cdbo",nmax,maxbo,3); - MemKK::realloc_kokkos(d_Cdbopi,"reaxff/kk:Cdbopi",nmax,maxbo,3); - MemKK::realloc_kokkos(d_Cdbopi2,"reaxff/kk:Cdbopi2",nmax,maxbo,3); + MemKK::realloc_kokkos(d_Cdbo,"reaxff/kk:Cdbo",nmax,maxbo); + MemKK::realloc_kokkos(d_Cdbopi,"reaxff/kk:Cdbopi",nmax,maxbo); + MemKK::realloc_kokkos(d_Cdbopi2,"reaxff/kk:Cdbopi2",nmax,maxbo); MemKK::realloc_kokkos(d_Delta,"reaxff/kk:Delta",nmax); MemKK::realloc_kokkos(d_Delta_boc,"reaxff/kk:Delta_boc",nmax); @@ -2066,12 +2066,8 @@ void PairReaxFFKokkos::operator()(TagPairReaxBondOrder2, const int & int j = d_bo_list(i, j_index); j &= NEIGHMASK; const int jtype = type(j); - //const int i_index = maxbo + j_index; // this line seems confusing... - const int i_index = j_index; // ?? - // calculate corrected BO and total bond order - const F_FLOAT val_j = paramssing(jtype).valency; const F_FLOAT ovc = paramstwbp(itype,jtype).ovc; const F_FLOAT v13cor = paramstwbp(itype,jtype).v13cor; @@ -2163,14 +2159,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxBondOrder2, const int & total_bo += d_BO(i,j_index); - // debugging whether or not the values that go into (*,*,1) are relevant - d_Cdbo(i,j_index,0) = 0.0; - d_Cdbopi(i,j_index,0) = 0.0; - d_Cdbopi2(i,j_index,0) = 0.0; - d_Cdbo(j,i_index,1) = 0.0; - d_Cdbopi(j,i_index,1) = 0.0; - d_Cdbopi2(j,i_index,1) = 0.0; - + d_Cdbo(i,j_index) = 0.0; + d_Cdbopi(i,j_index) = 0.0; + d_Cdbopi2(i,j_index) = 0.0; d_CdDelta[j] = 0.0; } d_CdDelta[i] = 0.0; @@ -2364,7 +2355,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeMulti2::operator()(TagPairReaxComputeMulti2::preprocess_angular(int i, int itype, int jnum, if (bo_ij <= thb_cut) continue; if (i >= nlocal && j >= nlocal) continue; - // const int i_index = maxbo + j_index; ?? - const int i_index = j_index; // plus a shift? const int jtype = type(j); for (int k_index = j_index + 1; k_index < jnum; k_index++) { @@ -2550,8 +2539,8 @@ int PairReaxFFKokkos::preprocess_angular(int i, int itype, int jnum, pack.i3 = jnum; d_angular_pack(location_angular, 0) = pack; - // Second pack stores i_index, j_index, k_index, and j_end - pack.i0 = i_index; + // Second pack stores j_index and k_index + // i0 is unused because there's no i_index pack.i1 = j_index; pack.i2 = k_index; // i3 is unused @@ -2651,9 +2640,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces auto v_f = ScatterViewHelper,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); auto a_f = v_f.template access>(); - Kokkos::View::value>> a_Cdbo = d_Cdbo; - Kokkos::View::value>> a_Cdbopi = d_Cdbopi; - Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; + Kokkos::View::value>> a_Cdbo = d_Cdbo; + Kokkos::View::value>> a_Cdbopi = d_Cdbopi; + Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; auto v_CdDelta = ScatterViewHelper,decltype(dup_CdDelta),decltype(ndup_CdDelta)>::get(dup_CdDelta,ndup_CdDelta); auto a_CdDelta = v_CdDelta.template access>(); @@ -2696,7 +2685,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces const int jnum = pack.i3; pack = d_angular_pack(apack, 1); - const int i_index = pack.i0; + // i0 is unused const int j_index = pack.i1; const int k_index = pack.i2; // i3 is unused @@ -2848,11 +2837,8 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces // Forces - // debugging whether or not the values at "1" are needed, they never seem to be read from? - a_Cdbo(i,j_index,0) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); - a_Cdbo(j,i_index,1) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); - a_Cdbo(i,k_index,0) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); - a_Cdbo(k,i_index,1) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); + a_Cdbo(i,j_index) += (CEval1 + CEpen2 + (CEcoa1 - CEcoa4)); + a_Cdbo(i,k_index) += (CEval2 + CEpen3 + (CEcoa2 - CEcoa5)); CdDelta_i += ((CEval3 + CEval7) + CEpen1 + CEcoa3); CdDelta_j += CEcoa4; @@ -2863,9 +2849,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeAngularPreproces temp = temp_bo_jt * temp_bo_jt * temp_bo_jt; pBOjt7 = temp * temp * temp_bo_jt; - a_Cdbo(i,l_index,0) += (CEval6 * pBOjt7); - a_Cdbopi(i,l_index,0) += CEval5; - a_Cdbopi2(i,l_index,0) += CEval5; + a_Cdbo(i,l_index) += (CEval6 * pBOjt7); + a_Cdbopi(i,l_index) += CEval5; + a_Cdbopi2(i,l_index) += CEval5; } for (int d = 0; d < 3; d++) fi_tmp[d] = CEval8 * dcos_theta_di[d]; @@ -2912,8 +2898,8 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeTorsionPreproces auto v_CdDelta = ScatterViewHelper,decltype(dup_CdDelta),decltype(ndup_CdDelta)>::get(dup_CdDelta,ndup_CdDelta); auto a_CdDelta = v_CdDelta.template access>(); - Kokkos::View::value>> a_Cdbo = d_Cdbo; - Kokkos::View::value>> a_Cdbopi = d_Cdbopi; + Kokkos::View::value>> a_Cdbo = d_Cdbo; + Kokkos::View::value>> a_Cdbopi = d_Cdbopi; //auto a_Cdbo = dup_Cdbo.template access>(); // in reaxff_torsion_angles: j = i, k = j, i = k; @@ -3156,14 +3142,14 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeTorsionPreproces // contribution to bond order - a_Cdbopi(i,j_index,0) += CEtors2; + a_Cdbopi(i,j_index) += CEtors2; a_CdDelta[j] += CEtors3; a_CdDelta[i] += CEtors3; - a_Cdbo(i,k_index,0) += CEtors4 + CEconj1; - a_Cdbo(i,j_index,0) += CEtors5 + CEconj2; - a_Cdbo(j,l_index,0) += CEtors6 + CEconj3; + a_Cdbo(i,k_index) += CEtors4 + CEconj1; + a_Cdbo(i,j_index) += CEtors5 + CEconj2; + a_Cdbo(j,l_index) += CEtors6 + CEconj3; const F_FLOAT coeff74 = CEtors7 + CEconj4; const F_FLOAT coeff85 = CEtors8 + CEconj5; @@ -3357,7 +3343,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeHydrogen KOKKOS_INLINE_FUNCTION void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, const int &ii) const { - Kokkos::View::value>> a_Cdbo = d_Cdbo; - Kokkos::View::value>> a_Cdbopi = d_Cdbopi; - Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; + Kokkos::View::value>> a_Cdbo = d_Cdbo; + Kokkos::View::value>> a_Cdbopi = d_Cdbopi; + Kokkos::View::value>> a_Cdbopi2 = d_Cdbopi2; const int i = d_ilist[ii]; const X_FLOAT xtmp = x(i,0); @@ -3430,9 +3416,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, if (!flag) continue; - const F_FLOAT Cdbo_i = d_Cdbo(i,j_index,0); - const F_FLOAT Cdbopi_i = d_Cdbopi(i,j_index,0); - const F_FLOAT Cdbopi2_i = d_Cdbopi2(i,j_index,0); + const F_FLOAT Cdbo_i = d_Cdbo(i,j_index); + const F_FLOAT Cdbopi_i = d_Cdbopi(i,j_index); + const F_FLOAT Cdbopi2_i = d_Cdbopi2(i,j_index); const int knum = d_bo_num[j]; @@ -3441,9 +3427,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxUpdateBond, k &= NEIGHMASK; if (k != i) continue; - a_Cdbo(j,k_index,0) += Cdbo_i; - a_Cdbopi(j,k_index,0) += Cdbopi_i; - a_Cdbopi2(j,k_index,0) += Cdbopi2_i; + a_Cdbo(j,k_index) += Cdbo_i; + a_Cdbopi(j,k_index) += Cdbopi_i; + a_Cdbopi2(j,k_index) += Cdbopi2_i; } } } @@ -3514,9 +3500,9 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeBond1template e_tally(ev,i,j,ebond); // calculate derivatives of Bond Orders - d_Cdbo(i,j_index,0) += CEbo; - d_Cdbopi(i,j_index,0) -= (CEbo + De_p); - d_Cdbopi2(i,j_index,0) -= (CEbo + De_pp); + d_Cdbo(i,j_index) += CEbo; + d_Cdbopi(i,j_index) -= (CEbo + De_p); + d_Cdbopi2(i,j_index) -= (CEbo + De_pp); // Stabilisation terminal triple bond F_FLOAT estriph = 0.0; @@ -3542,7 +3528,7 @@ void PairReaxFFKokkos::operator()(TagPairReaxComputeBond1::operator()(TagPairReaxComputeBond2 Date: Mon, 9 Sep 2024 17:51:19 -0600 Subject: [PATCH 290/326] Tweak error message to use correct style --- src/QEQ/fix_qeq.cpp | 2 +- src/REAXFF/fix_qeq_reaxff.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index 52ab20c9e1..e09921d11b 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -264,7 +264,7 @@ void FixQEq::allocate_matrix() } bigint m_cap_big = (bigint)MAX(m * safezone, mincap * MIN_NBRS); if (m_cap_big > MAXSMALLINT) - error->one(FLERR,"Too many neighbors in fix qeq"); + error->one(FLERR,"Too many neighbors in fix {}",style); m_cap = m_cap_big; H.n = n_cap; diff --git a/src/REAXFF/fix_qeq_reaxff.cpp b/src/REAXFF/fix_qeq_reaxff.cpp index adaf5be031..921f6e0261 100644 --- a/src/REAXFF/fix_qeq_reaxff.cpp +++ b/src/REAXFF/fix_qeq_reaxff.cpp @@ -363,7 +363,7 @@ void FixQEqReaxFF::allocate_matrix() } bigint m_cap_big = (bigint)MAX(m * safezone, mincap * REAX_MIN_NBRS); if (m_cap_big > MAXSMALLINT) - error->one(FLERR,"Too many neighbors in fix qeq/reaxff"); + error->one(FLERR,"Too many neighbors in fix {}",style); m_cap = m_cap_big; H.n = n_cap; From c3162b4488a4779764dd54e0cbae138c4ce2125a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 9 Sep 2024 20:29:23 -0400 Subject: [PATCH 291/326] 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 292/326] 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 293/326] 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 23bdc5ddc2b8d7116b3822a744d797900ebd43f7 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 00:18:50 -0500 Subject: [PATCH 294/326] Allowed number of blocks greater than 65,535 for k_transpose --- lib/gpu/lal_neighbor.cpp | 17 +++++++++++++++-- lib/gpu/lal_neighbor_gpu.cu | 10 +++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index 10816e2fa6..62ab2b31d0 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -586,8 +586,21 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const int b2y=_block_cell_2d; const int g2x=static_cast(ceil(static_cast(_maxspecial)/b2x)); const int g2y=static_cast(ceil(static_cast(nt)/b2y)); - _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); - _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt); + const int max_num_blocks = 65535; + int shift = 0; + if (g2y < max_num_blocks) { + _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); + _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); + } else { + const int num_rounds = ceil(static_cast(g2y) / max_num_blocks); + int g2y_m = 65534; + for (int i = 0; i < num_rounds; i++) { + _shared->k_transpose.set_size(g2x,g2y_m,b2x,b2y); + _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); + shift += g2y_m; + } + } + time_transpose.stop(); } diff --git a/lib/gpu/lal_neighbor_gpu.cu b/lib/gpu/lal_neighbor_gpu.cu index a7506fc5c3..7d0941ccd5 100644 --- a/lib/gpu/lal_neighbor_gpu.cu +++ b/lib/gpu/lal_neighbor_gpu.cu @@ -147,7 +147,7 @@ __kernel void kernel_calc_cell_counts(const unsigned *restrict cell_id, __kernel void transpose(__global tagint *restrict out, const __global tagint *restrict in, - int columns_in, int rows_in) + int columns_in, int rows_in, int shift) { __local tagint block[BLOCK_CELL_2D][BLOCK_CELL_2D+1]; @@ -158,15 +158,15 @@ __kernel void transpose(__global tagint *restrict out, unsigned i=bi*BLOCK_CELL_2D+ti; unsigned j=bj*BLOCK_CELL_2D+tj; - if ((i Date: Tue, 10 Sep 2024 00:36:13 -0500 Subject: [PATCH 295/326] fixed the value of shift being the number of rows processed in each chunk (g2y_m * b2y) --- lib/gpu/lal_neighbor.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index 62ab2b31d0..ba2a328130 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -586,21 +586,24 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const int b2y=_block_cell_2d; const int g2x=static_cast(ceil(static_cast(_maxspecial)/b2x)); const int g2y=static_cast(ceil(static_cast(nt)/b2y)); + // maximum number of blocks on the device const int max_num_blocks = 65535; int shift = 0; if (g2y < max_num_blocks) { _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); } else { - const int num_rounds = ceil(static_cast(g2y) / max_num_blocks); + // using a fixed number of blocks int g2y_m = 65534; - for (int i = 0; i < num_rounds; i++) { + // number of chunks needed for the whole transpose + const int num_chunks = ceil(static_cast(g2y) / g2y_m); + for (int i = 0; i < num_chunks; i++) { _shared->k_transpose.set_size(g2x,g2y_m,b2x,b2y); _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); - shift += g2y_m; + shift += g2y_m*b2y; } } - + time_transpose.stop(); } From c63c88f8b6804f58399429dd3fd52bcf634109ee Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 08:58:42 -0500 Subject: [PATCH 296/326] reduced the max number of blocks for each transpose --- lib/gpu/lal_neighbor.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index ba2a328130..101e92953c 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -586,19 +586,20 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const int b2y=_block_cell_2d; const int g2x=static_cast(ceil(static_cast(_maxspecial)/b2x)); const int g2y=static_cast(ceil(static_cast(nt)/b2y)); - // maximum number of blocks on the device - const int max_num_blocks = 65535; + // the maximum number of blocks on the device is typically 65535 + // we can use a lower number to have more resource per block + const int max_num_blocks = 32768; int shift = 0; if (g2y < max_num_blocks) { _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); } else { // using a fixed number of blocks - int g2y_m = 65534; + int g2y_m = max_num_blocks; + _shared->k_transpose.set_size(g2x,g2y_m,b2x,b2y); // number of chunks needed for the whole transpose const int num_chunks = ceil(static_cast(g2y) / g2y_m); - for (int i = 0; i < num_chunks; i++) { - _shared->k_transpose.set_size(g2x,g2y_m,b2x,b2y); + for (int i = 0; i < num_chunks; i++) { _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); shift += g2y_m*b2y; } From b16bb27184cb873ff9da8136d99f9043b6c19e91 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 09:47:07 -0500 Subject: [PATCH 297/326] revert to using the max number of blocks on device for each pass, as the number of blocks (32767 or 65535) already saturates the number of SMs anyway --- lib/gpu/lal_neighbor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index 101e92953c..051f55f0a3 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -587,8 +587,8 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const int g2x=static_cast(ceil(static_cast(_maxspecial)/b2x)); const int g2y=static_cast(ceil(static_cast(nt)/b2y)); // the maximum number of blocks on the device is typically 65535 - // we can use a lower number to have more resource per block - const int max_num_blocks = 32768; + // in principle we can use a lower number to have more resource per block 32768 + const int max_num_blocks = 65535; int shift = 0; if (g2y < max_num_blocks) { _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); From 847ce1e3632e1421d17042b1bbfc57ba89290f2a Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 10 Sep 2024 15:39:52 -0500 Subject: [PATCH 298/326] 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 299/326] 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 300/326] 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 301/326] 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 From 12abaf83cca8f6e57144b2624d25339865179282 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 10 Sep 2024 16:25:06 -0600 Subject: [PATCH 302/326] Changes from @sjplimp --- src/KSPACE/pppm.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index 06cbf119e3..9665d2392d 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -1384,11 +1384,19 @@ void PPPM::set_grid_local() // npey_fft,npez_fft = # of procs in y,z dims // if nprocs is small enough, proc can own 1 or more entire xy planes, // else proc owns 2d sub-blocks of yz plane + // NOTE: commented out lines support this + // need to ensure fft3d.cpp and remap.cpp support 2D planes // me_y,me_z = which proc (0-npe_fft-1) I am in y,z dimensions // nlo_fft,nhi_fft = lower/upper limit of the section // of the global FFT mesh that I own in x-pencil decomposition int npey_fft,npez_fft; + + //if (nz_pppm >= nprocs) { + // npey_fft = 1; + // npez_fft = nprocs; + //} else procs2grid2d(nprocs,ny_pppm,nz_pppm,&npey_fft,&npez_fft); + procs2grid2d(nprocs,ny_pppm,nz_pppm,&npey_fft,&npez_fft); int me_y = me % npey_fft; From 4a11b966352f35f151fc6e376ac991a64c61cf54 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 10 Sep 2024 23:31:37 -0400 Subject: [PATCH 303/326] update with upstream --- lib/gpu/lal_neighbor.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp index 10816e2fa6..288415e0e7 100644 --- a/lib/gpu/lal_neighbor.cpp +++ b/lib/gpu/lal_neighbor.cpp @@ -586,8 +586,25 @@ void Neighbor::build_nbor_list(double **x, const int inum, const int host_inum, const int b2y=_block_cell_2d; const int g2x=static_cast(ceil(static_cast(_maxspecial)/b2x)); const int g2y=static_cast(ceil(static_cast(nt)/b2y)); - _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); - _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt); + // the maximum number of blocks on the device is typically 65535 + // in principle we can use a lower number to have more resource per block 32768 + const int max_num_blocks = 65535; + int shift = 0; + if (g2y < max_num_blocks) { + _shared->k_transpose.set_size(g2x,g2y,b2x,b2y); + _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); + } else { + // using a fixed number of blocks + int g2y_m = max_num_blocks; + _shared->k_transpose.set_size(g2x,g2y_m,b2x,b2y); + // number of chunks needed for the whole transpose + const int num_chunks = ceil(static_cast(g2y) / g2y_m); + for (int i = 0; i < num_chunks; i++) { + _shared->k_transpose.run(&dev_special,&dev_special_t,&_maxspecial,&nt,&shift); + shift += g2y_m*b2y; + } + } + time_transpose.stop(); } From 6b2a47d9c6215a246d7ef5426f7ecc0e5efdf8ac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 11 Sep 2024 06:34:15 -0400 Subject: [PATCH 304/326] fix typo --- doc/src/group2ndx.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/group2ndx.rst b/doc/src/group2ndx.rst index 19c472e109..e1c4fd23f5 100644 --- a/doc/src/group2ndx.rst +++ b/doc/src/group2ndx.rst @@ -51,7 +51,7 @@ index file. When specifying group IDs, only those groups will be written to the index file. In order to follow the Gromacs conventions, the group *all* will be renamed to *System* in the index file. -The *ndx2group* command will create of update group definitions from +The *ndx2group* command will create or update group definitions from those stored in an index file. Without specifying any group IDs, all groups except *System* will be read from the index file and the corresponding groups recreated. If a group of the same name already From 9f2bc30ba6a4d4a30c5c3955e4ed59037b666a68 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 11 Sep 2024 06:46:51 -0400 Subject: [PATCH 305/326] rename source files to be consistent with naming conventions --- src/.gitignore | 8 ++++---- src/EXTRA-COMMAND/{group_ndx.cpp => group2ndx.cpp} | 6 ++---- src/EXTRA-COMMAND/{group_ndx.h => group2ndx.h} | 10 ++++------ src/EXTRA-COMMAND/{ndx_group.cpp => ndx2group.cpp} | 9 +++------ src/EXTRA-COMMAND/{ndx_group.h => ndx2group.h} | 10 ++++------ src/Purge.list | 5 +++++ 6 files changed, 22 insertions(+), 26 deletions(-) rename src/EXTRA-COMMAND/{group_ndx.cpp => group2ndx.cpp} (97%) rename src/EXTRA-COMMAND/{group_ndx.h => group2ndx.h} (83%) rename src/EXTRA-COMMAND/{ndx_group.cpp => ndx2group.cpp} (97%) rename src/EXTRA-COMMAND/{ndx_group.h => ndx2group.h} (84%) diff --git a/src/.gitignore b/src/.gitignore index c26eaaba30..5f47a58b73 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1078,12 +1078,12 @@ /geturl.cpp /geturl.h /gpu_extra.h -/group_ndx.cpp -/group_ndx.h +/group2ndx.cpp +/group2ndx.h /gz_file_writer.cpp /gz_file_writer.h -/ndx_group.cpp -/ndx_group.h +/ndx2group.cpp +/ndx2group.h /hyper.cpp /hyper.h /improper_class2.cpp diff --git a/src/EXTRA-COMMAND/group_ndx.cpp b/src/EXTRA-COMMAND/group2ndx.cpp similarity index 97% rename from src/EXTRA-COMMAND/group_ndx.cpp rename to src/EXTRA-COMMAND/group2ndx.cpp index 1dc0d3af97..56bf848923 100644 --- a/src/EXTRA-COMMAND/group_ndx.cpp +++ b/src/EXTRA-COMMAND/group2ndx.cpp @@ -1,6 +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 @@ -16,7 +14,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "group_ndx.h" +#include "group2ndx.h" #include "atom.h" #include "comm.h" diff --git a/src/EXTRA-COMMAND/group_ndx.h b/src/EXTRA-COMMAND/group2ndx.h similarity index 83% rename from src/EXTRA-COMMAND/group_ndx.h rename to src/EXTRA-COMMAND/group2ndx.h index 685ad82d91..e4926e2d92 100644 --- a/src/EXTRA-COMMAND/group_ndx.h +++ b/src/EXTRA-COMMAND/group2ndx.h @@ -1,6 +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 @@ -19,8 +17,8 @@ CommandStyle(group2ndx,Group2Ndx); // clang-format on #else -#ifndef LMP_GROUP_NDX_H -#define LMP_GROUP_NDX_H +#ifndef LMP_GROUP2NDX_H +#define LMP_GROUP2NDX_H #include "command.h" @@ -28,7 +26,7 @@ namespace LAMMPS_NS { class Group2Ndx : public Command { public: - Group2Ndx(class LAMMPS *lmp) : Command(lmp){}; + Group2Ndx(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **) override; private: diff --git a/src/EXTRA-COMMAND/ndx_group.cpp b/src/EXTRA-COMMAND/ndx2group.cpp similarity index 97% rename from src/EXTRA-COMMAND/ndx_group.cpp rename to src/EXTRA-COMMAND/ndx2group.cpp index d006473bb8..ffe159b3b8 100644 --- a/src/EXTRA-COMMAND/ndx_group.cpp +++ b/src/EXTRA-COMMAND/ndx2group.cpp @@ -1,6 +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 @@ -16,7 +14,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ -#include "ndx_group.h" +#include "ndx2group.h" #include "atom.h" #include "comm.h" @@ -33,8 +31,7 @@ static std::string find_section(FILE *fp, const std::string &name) { char linebuf[BUFLEN]; - if (!fgets(linebuf, BUFLEN, fp)) - throw TokenizerException("Read error", utils::getsyserror()); + if (!fgets(linebuf, BUFLEN, fp)) throw TokenizerException("Read error", utils::getsyserror()); while (!feof(fp)) { if (utils::strmatch(linebuf, "^\\s*\\[.*\\]\\s*$")) { auto words = Tokenizer(linebuf).as_vector(); diff --git a/src/EXTRA-COMMAND/ndx_group.h b/src/EXTRA-COMMAND/ndx2group.h similarity index 84% rename from src/EXTRA-COMMAND/ndx_group.h rename to src/EXTRA-COMMAND/ndx2group.h index 0b35fb62a0..9a2f3c04b5 100644 --- a/src/EXTRA-COMMAND/ndx_group.h +++ b/src/EXTRA-COMMAND/ndx2group.h @@ -1,6 +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 @@ -19,8 +17,8 @@ CommandStyle(ndx2group,Ndx2Group); // clang-format on #else -#ifndef LMP_NDX_GROUP_H -#define LMP_NDX_GROUP_H +#ifndef LMP_NDX2GROUP_H +#define LMP_NDX2GROUP_H #include "command.h" #include @@ -29,7 +27,7 @@ namespace LAMMPS_NS { class Ndx2Group : public Command { public: - Ndx2Group(class LAMMPS *lmp) : Command(lmp){}; + Ndx2Group(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **) override; private: diff --git a/src/Purge.list b/src/Purge.list index 14708a111e..7098d39e3a 100644 --- a/src/Purge.list +++ b/src/Purge.list @@ -53,6 +53,11 @@ lmpinstalledpkgs.h lmpgitversion.h mliap_model_python_couple.cpp mliap_model_python_couple.h +# renamed in September 2024 +group_ndx.cpp +group_ndx.h +ndx_group.cpp +ndx_group.h # removed in August 2023 dump_atom_mpiio.cpp dump_atom_mpiio.h From c3a62833c75680e38e36fe5b84eb6dacc0a303a1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 11 Sep 2024 06:54:06 -0400 Subject: [PATCH 306/326] update --- src/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 5f47a58b73..e557a8cbb2 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -192,6 +192,8 @@ /colvarproxy_lammps_version.h /fix_colvars.cpp /fix_colvars.h +/inthash.cpp +/inthash.h /fix_plumed.cpp /fix_plumed.h /dump_molfile.cpp From e8184e63a567d3ae9a87f6e5b4a6dd1846b794e1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 11 Sep 2024 09:15:05 -0400 Subject: [PATCH 307/326] create dummy output files to prevent test job failures --- tools/regression-tests/run_tests.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index d086f28b2c..63fa8c59c1 100755 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1236,6 +1236,22 @@ if __name__ == "__main__": os.remove(f"input-list-{idx}.txt") except: pass + filename = f"run-{idx}.log" + with open(filename, "w") as f: + f.write('\n') + f.close() + filename = f"progress-{idx}.yaml" + with open(filename, "w") as f: + f.write('\n') + f.close() + filename = f"output-{idx}.xml" + with open(filename, "w") as f: + f.write('\n') + f.close() + filename = f"failure-{idx}.yaml" + with open(filename, "w") as f: + f.write('\n') + f.close() quit() # if the example folders are not specified from the command-line argument --example-folders From 0ebd4f5ddb5f2efa909237df9e3b508d3ada1bc3 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 11 Sep 2024 21:33:07 -0600 Subject: [PATCH 308/326] Make CMake Doc build docenv optional --- cmake/Modules/Documentation.cmake | 48 +++++++++++++++++++------------ cmake/Modules/FindSphinx.cmake | 29 +++++++++++++++++++ 2 files changed, 59 insertions(+), 18 deletions(-) create mode 100644 cmake/Modules/FindSphinx.cmake diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index 400109067f..7b8f4a5ba0 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -4,6 +4,8 @@ option(BUILD_DOC "Build LAMMPS HTML documentation" OFF) if(BUILD_DOC) + option(BUILD_DOC_VENV "Build LAMMPS documentation virtual environment" ON) + mark_as_advanced(BUILD_DOC_VENV) # Current Sphinx versions require at least Python 3.8 # use default (or custom) Python executable, if version is sufficient if(Python_VERSION VERSION_GREATER_EQUAL 3.8) @@ -18,14 +20,6 @@ if(BUILD_DOC) find_package(Doxygen 1.8.10 REQUIRED) file(GLOB DOC_SOURCES CONFIGURE_DEPENDS ${LAMMPS_DOC_DIR}/src/[^.]*.rst) - add_custom_command( - OUTPUT docenv - COMMAND ${VIRTUALENV} docenv - ) - - set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin) - set(DOCENV_REQUIREMENTS_FILE ${LAMMPS_DOC_DIR}/utils/requirements.txt) - set(SPHINX_CONFIG_DIR ${LAMMPS_DOC_DIR}/utils/sphinx-config) set(SPHINX_CONFIG_FILE_TEMPLATE ${SPHINX_CONFIG_DIR}/conf.py.in) set(SPHINX_STATIC_DIR ${SPHINX_CONFIG_DIR}/_static) @@ -44,14 +38,32 @@ if(BUILD_DOC) # configure paths in conf.py, since relative paths change when file is copied configure_file(${SPHINX_CONFIG_FILE_TEMPLATE} ${DOC_BUILD_CONFIG_FILE}) - add_custom_command( - OUTPUT ${DOC_BUILD_DIR}/requirements.txt - DEPENDS docenv ${DOCENV_REQUIREMENTS_FILE} - COMMAND ${CMAKE_COMMAND} -E copy ${DOCENV_REQUIREMENTS_FILE} ${DOC_BUILD_DIR}/requirements.txt - COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade pip - COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade ${LAMMPS_DOC_DIR}/utils/converters - COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install -r ${DOC_BUILD_DIR}/requirements.txt --upgrade - ) + if(BUILD_DOC_VENV) + add_custom_command( + OUTPUT docenv + COMMAND ${VIRTUALENV} docenv + ) + + set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin) + set(DOCENV_REQUIREMENTS_FILE ${LAMMPS_DOC_DIR}/utils/requirements.txt) + + add_custom_command( + OUTPUT ${DOC_BUILD_DIR}/requirements.txt + DEPENDS docenv ${DOCENV_REQUIREMENTS_FILE} + COMMAND ${CMAKE_COMMAND} -E copy ${DOCENV_REQUIREMENTS_FILE} ${DOC_BUILD_DIR}/requirements.txt + COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade pip + COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade ${LAMMPS_DOC_DIR}/utils/converters + COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install -r ${DOC_BUILD_DIR}/requirements.txt --upgrade + ) + + set(DOCENV_DEPS docenv ${DOC_BUILD_DIR}/requirements.txt) + if(NOT TARGET Sphinx::sphinx-build) + add_executable(Sphinx::sphinx-build IMPORTED GLOBAL) + set_target_properties(Sphinx::sphinx-build PROPERTIES IMPORTED_LOCATION "${DOCENV_BINARY_DIR}/sphinx-build") + endif() + else() + find_package(Sphinx) + endif() set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.1.3.tar.gz" CACHE STRING "URL for MathJax tarball") set(MATHJAX_MD5 "b81661c6e6ba06278e6ae37b30b0c492" CACHE STRING "MD5 checksum of MathJax tarball") @@ -97,8 +109,8 @@ if(BUILD_DOC) endif() add_custom_command( OUTPUT html - DEPENDS ${DOC_SOURCES} docenv ${DOC_BUILD_DIR}/requirements.txt ${DOXYGEN_XML_DIR}/index.xml ${BUILD_DOC_CONFIG_FILE} - COMMAND ${DOCENV_BINARY_DIR}/sphinx-build ${SPHINX_EXTRA_OPTS} -b html -c ${DOC_BUILD_DIR} -d ${DOC_BUILD_DIR}/doctrees ${LAMMPS_DOC_DIR}/src ${DOC_BUILD_DIR}/html + DEPENDS ${DOC_SOURCES} ${DOCENV_DEPS} ${DOXYGEN_XML_DIR}/index.xml ${BUILD_DOC_CONFIG_FILE} + COMMAND Sphinx::sphinx-build ${SPHINX_EXTRA_OPTS} -b html -c ${DOC_BUILD_DIR} -d ${DOC_BUILD_DIR}/doctrees ${LAMMPS_DOC_DIR}/src ${DOC_BUILD_DIR}/html COMMAND ${CMAKE_COMMAND} -E create_symlink Manual.html ${DOC_BUILD_DIR}/html/index.html COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src/PDF ${DOC_BUILD_DIR}/html/PDF COMMAND ${CMAKE_COMMAND} -E remove -f ${DOXYGEN_XML_DIR}/run.stamp diff --git a/cmake/Modules/FindSphinx.cmake b/cmake/Modules/FindSphinx.cmake new file mode 100644 index 0000000000..3718ecc543 --- /dev/null +++ b/cmake/Modules/FindSphinx.cmake @@ -0,0 +1,29 @@ +# Find sphinx-build +find_program(Sphinx_EXECUTABLE NAMES sphinx-build + PATH_SUFFIXES bin + DOC "Sphinx documenation build executable") +mark_as_advanced(Sphinx_EXECUTABLE) + +if(Sphinx_EXECUTABLE) + execute_process(COMMAND ${Sphinx_EXECUTABLE} --version + OUTPUT_VARIABLE sphinx_version + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE _sphinx_version_result) + + if(_sphinx_version_result) + message(WARNING "Unable to determine sphinx-build verison: ${_sphinx_version_result}") + else() + string(REGEX REPLACE "sphinx-build ([0-9.]+).*" + "\\1" + Sphinx_VERSION + "${sphinx_version}") + endif() + + if(NOT TARGET Sphinx::sphinx-build) + add_executable(Sphinx::sphinx-build IMPORTED GLOBAL) + set_target_properties(Sphinx::sphinx-build PROPERTIES IMPORTED_LOCATION "${Sphinx_EXECUTABLE}") + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Sphinx REQUIRED_VARS Sphinx_EXECUTABLE VERSION_VAR Sphinx_VERSION) From 18f1d32f8e5f97c6f6e6694fcde021795a311d5f Mon Sep 17 00:00:00 2001 From: jmgoff <34103038+jmgoff@users.noreply.github.com> Date: Thu, 12 Sep 2024 09:00:55 -0600 Subject: [PATCH 309/326] Apply suggestions from code review Co-authored-by: Axel Kohlmeyer --- doc/src/region.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/region.rst b/doc/src/region.rst index 7ceef94b04..3a27c4b5ff 100644 --- a/doc/src/region.rst +++ b/doc/src/region.rst @@ -18,7 +18,7 @@ Syntax *delete* = no args *block* args = xlo xhi ylo yhi zlo zhi xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all dimensions (distance units) - xlo,xhi,ylo,yhi,zlo,zhi can be a variable + xlo,xhi,ylo,yhi,zlo,zhi can be a variable (see below) *cone* args = dim c1 c2 radlo radhi lo hi dim = *x* or *y* or *z* = axis of cone c1,c2 = coords of cone axis in other 2 dimensions (distance units) @@ -38,7 +38,7 @@ Syntax *plane* args = px py pz nx ny nz px,py,pz = point on the plane (distance units) nx,ny,nz = direction normal to plane (distance units) - px,py,pz can be a variable + px,py,pz can be a variable (see below) *prism* args = xlo xhi ylo yhi zlo zhi xy xz yz xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism (distance units) xy = distance to tilt y in x direction (distance units) From 1adaab80aae703bdee10704510caab5d00becee2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 13 Sep 2024 00:11:13 -0400 Subject: [PATCH 310/326] make certain values for LAMMPS variables are initialized --- src/region_plane.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/region_plane.cpp b/src/region_plane.cpp index 5917efc11b..6dc162eead 100644 --- a/src/region_plane.cpp +++ b/src/region_plane.cpp @@ -27,6 +27,8 @@ using namespace LAMMPS_NS; RegPlane::RegPlane(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg), xstr(nullptr), ystr(nullptr), zstr(nullptr) { + xvar = yvar = zvar = 0.0; + options(narg - 8, &arg[8]); if (utils::strmatch(arg[2], "^v_")) { From 92bd9fc16105d272c874edf69b9e4990b48cf0c4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 13 Sep 2024 02:18:48 -0400 Subject: [PATCH 311/326] fix linking a URL and fix spelling --- doc/src/Build_settings.rst | 3 +-- doc/utils/sphinx-config/false_positives.txt | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 2787560be5..e4a53ddee7 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -229,8 +229,7 @@ can be used with the Intel or GNU compiler (see the ``FFT_LIB`` setting above). The NVIDIA Performance Libraries (NVPL) FFT library is optimized for NVIDIA -Grace Armv9.0 architecture. You can download it from -`https://docs.nvidia.com/nvpl/`_. +Grace Armv9.0 architecture. You can download it from https://docs.nvidia.com/nvpl/ The cuFFT and hipFFT FFT libraries are packaged with NVIDIA's CUDA and AMD's HIP installations, respectively. These FFT libraries require the diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 3a714ffdd6..70d6b4e323 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -141,6 +141,7 @@ arg arge args argv +Armv arrhenius Arun arXiv From fe8611bfc85010e57b9466d8c39273be8f3f1831 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 13 Sep 2024 22:55:05 -0400 Subject: [PATCH 312/326] sync author info with LAMMPS home page --- doc/src/Intro_authors.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Intro_authors.rst b/doc/src/Intro_authors.rst index 78c8506421..84470ba3a0 100644 --- a/doc/src/Intro_authors.rst +++ b/doc/src/Intro_authors.rst @@ -56,7 +56,7 @@ lammps.org". General questions about LAMMPS should be posted in the - SNL - jmgoff at sandia.gov - machine learned potentials, QEq solvers, Python - * - Megan McCarthy + * - Meg McCarthy - SNL - megmcca at sandia.gov - alloys, micro-structure, machine learned potentials @@ -67,7 +67,7 @@ lammps.org". General questions about LAMMPS should be posted in the * - `Trung Nguyen `_ - U Chicago - ndactrung at gmail.com - - soft matter, GPU package + - soft matter, GPU package, DIELECTRIC package, regression testing .. _rb: https://rbberger.github.io/ .. _gc: https://enthalpiste.fr/ From bdca275f1032aa56ce8d2b63dc76dc943f59b0fc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 14 Sep 2024 02:25:03 -0400 Subject: [PATCH 313/326] correct indexing when filling lmp_firstneigh array --- src/ML-IAP/mliap_data.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ML-IAP/mliap_data.cpp b/src/ML-IAP/mliap_data.cpp index 5d847ee25e..1ca57e2745 100644 --- a/src/ML-IAP/mliap_data.cpp +++ b/src/ML-IAP/mliap_data.cpp @@ -185,7 +185,6 @@ void MLIAPData::generate_neighdata(NeighList *list_in, int eflag_in, int vflag_i int jtype = type[j]; const int jelem = map[jtype]; - lmp_firstneigh[ii][jj] = firstneigh[i][jj]; if (rsq < descriptor->cutsq[ielem][jelem]) { pair_i[ij] = i; jatoms[ij] = j; @@ -193,6 +192,7 @@ void MLIAPData::generate_neighdata(NeighList *list_in, int eflag_in, int vflag_i rij[ij][0] = delx; rij[ij][1] = dely; rij[ij][2] = delz; + lmp_firstneigh[ii][ninside] = firstneigh[i][jj]; ij++; ninside++; } @@ -228,6 +228,7 @@ void MLIAPData::grow_neigharrays() memory->grow(ielems, natomneigh, "MLIAPData:ielems"); memory->grow(itypes, natomneigh, "MLIAPData:itypes"); memory->grow(numneighs, natomneigh, "MLIAPData:numneighs"); + memory->grow(lmp_firstneigh, natomneigh, nneigh_max, "MLIAPData:lmp_firstneigh"); natomneigh_max = natomneigh; } From 1587473ab58559d895d2811d6dd8fe845e8d0015 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 14 Sep 2024 05:02:18 -0400 Subject: [PATCH 314/326] fix comparison for missing arguments when using wildcards --- src/EXTRA-FIX/fix_ave_correlate_long.cpp | 4 ++-- src/fix_ave_chunk.cpp | 22 +++++++++++----------- src/fix_ave_grid.cpp | 14 +++++++------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/EXTRA-FIX/fix_ave_correlate_long.cpp b/src/EXTRA-FIX/fix_ave_correlate_long.cpp index 738ae3ae4c..abb1ad87de 100644 --- a/src/EXTRA-FIX/fix_ave_correlate_long.cpp +++ b/src/EXTRA-FIX/fix_ave_correlate_long.cpp @@ -166,12 +166,12 @@ FixAveCorrelateLong::FixAveCorrelateLong(LAMMPS *lmp, int narg, char **arg) : overwrite = 1; iarg += 1; } else if (strcmp(arg[iarg], "title1") == 0) { - if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate/long title1", error); + if (iarg + 2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate/long title1", error); delete[] title1; title1 = utils::strdup(arg[iarg + 1]); iarg += 2; } else if (strcmp(arg[iarg], "title2") == 0) { - if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "fix ave/correlate/long title2", error); + if (iarg + 2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/correlate/long title2", error); delete[] title2; title2 = utils::strdup(arg[iarg + 1]); iarg += 2; diff --git a/src/fix_ave_chunk.cpp b/src/fix_ave_chunk.cpp index d9723cec9f..6a3c2e2032 100644 --- a/src/fix_ave_chunk.cpp +++ b/src/fix_ave_chunk.cpp @@ -153,7 +153,7 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : while (iarg < nargnew) { if (strcmp(arg[iarg],"norm") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk norm", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk norm", error); if (strcmp(arg[iarg+1],"all") == 0) { normflag = ALL; scaleflag = ATOM; @@ -166,13 +166,13 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : } else error->all(FLERR,"Unknown fix ave/chunk norm mode: {}", arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk ave", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk ave", error); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; else error->all(FLERR,"Unknown fix ave/chunk ave mode: {}", arg[iarg+1]); if (ave == WINDOW) { - if (iarg+3 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk ave window", error); + if (iarg+3 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk ave window", error); nwindow = utils::inumeric(FLERR,arg[iarg+2],false,lmp); if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/chunk number of windows: {}", nwindow); } @@ -180,21 +180,21 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk bias", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk bias", error); biasflag = 1; id_bias = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"adof") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk adof", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk adof", error); adof = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"cdof") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk cdof", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk cdof", error); cdof = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if ((strcmp(arg[iarg],"file") == 0) || (strcmp(arg[iarg],"append") == 0)) { - if (iarg+2 > narg) + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, std::string("fix ave/chunk ")+arg[iarg], error); if (comm->me == 0) { if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); @@ -208,23 +208,23 @@ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : overwrite = 1; iarg += 1; } else if (strcmp(arg[iarg],"format") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk format", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk format", error); delete[] format_user; format_user = utils::strdup(arg[iarg+1]); format = format_user; iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk title1", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk title1", error); delete[] title1; title1 = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title2") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk title2", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk title2", error); delete[] title2; title2 = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { - if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/chunk title3", error); + if (iarg+2 > nargnew) utils::missing_cmd_args(FLERR, "fix ave/chunk title3", error); delete[] title3; title3 = utils::strdup(arg[iarg+1]); iarg += 2; diff --git a/src/fix_ave_grid.cpp b/src/fix_ave_grid.cpp index ca89c918ba..1b69c5644c 100644 --- a/src/fix_ave_grid.cpp +++ b/src/fix_ave_grid.cpp @@ -199,14 +199,14 @@ FixAveGrid::FixAveGrid(LAMMPS *lmp, int narg, char **arg) : while (iarg < nargnew) { if (strcmp(arg[iarg],"discard") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/grid command"); + if (iarg+2 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); if (strcmp(arg[iarg+1],"yes") == 0) discardflag = DISCARD; else if (strcmp(arg[iarg+1],"no") == 0) discardflag = KEEP; else error->all(FLERR,"Illegal fix ave/grid command"); iarg += 2; } else if (strcmp(arg[iarg],"norm") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/grid command"); + if (iarg+2 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); if (strcmp(arg[iarg+1],"all") == 0) normflag = ALL; else if (strcmp(arg[iarg+1],"sample") == 0) normflag = SAMPLE; else if (strcmp(arg[iarg+1],"none") == 0) normflag = NONORM; @@ -214,13 +214,13 @@ FixAveGrid::FixAveGrid(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/grid command"); + if (iarg+2 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); if (strcmp(arg[iarg+1],"one") == 0) aveflag = ONE; else if (strcmp(arg[iarg+1],"running") == 0) aveflag = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) aveflag = WINDOW; else error->all(FLERR,"Illegal fix ave/grid command"); if (aveflag == WINDOW) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/grid command"); + if (iarg+3 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); nwindow = utils::inumeric(FLERR,arg[iarg+2],false,lmp); if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/grid command"); iarg++; @@ -228,19 +228,19 @@ FixAveGrid::FixAveGrid(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else if (strcmp(arg[iarg],"bias") == 0) { - if (iarg+2 > narg) + if (iarg+2 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); biasflag = 1; id_bias = utils::strdup(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"adof") == 0) { - if (iarg+2 > narg) + if (iarg+2 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); adof = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"cdof") == 0) { - if (iarg+2 > narg) + if (iarg+2 > nargnew) error->all(FLERR,"Illegal fix ave/grid command"); cdof = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; From 79fbd46bd9900d1e13fb6ab02a1f18dda7d91a01 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 14 Sep 2024 06:04:35 -0400 Subject: [PATCH 315/326] try out concurrency group feature on quick regression as suggested by @junghans --- .github/workflows/quick-regression.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/quick-regression.yml b/.github/workflows/quick-regression.yml index 985177b2c1..6174d57ec2 100644 --- a/.github/workflows/quick-regression.yml +++ b/.github/workflows/quick-regression.yml @@ -8,6 +8,10 @@ on: workflow_dispatch: +concurrency: + group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{github.event_name == 'pull_request'}} + jobs: build: name: Build LAMMPS From 8c4e67c10baab6f15af120befd6a5a412c6f444f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 14 Sep 2024 06:07:07 -0400 Subject: [PATCH 316/326] add concurrency group feature to unit test workflows, too. --- .github/workflows/compile-msvc.yml | 4 ++++ .github/workflows/unittest-linux.yml | 4 ++++ .github/workflows/unittest-macos.yml | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 03af27788b..7560bc0549 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -11,6 +11,10 @@ on: workflow_dispatch: +concurrency: + group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{github.event_name == 'pull_request'}} + jobs: build: name: Windows Compilation Test diff --git a/.github/workflows/unittest-linux.yml b/.github/workflows/unittest-linux.yml index 366db25a99..dcf495ccc0 100644 --- a/.github/workflows/unittest-linux.yml +++ b/.github/workflows/unittest-linux.yml @@ -11,6 +11,10 @@ on: workflow_dispatch: +concurrency: + group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{github.event_name == 'pull_request'}} + jobs: build: name: Linux Unit Test diff --git a/.github/workflows/unittest-macos.yml b/.github/workflows/unittest-macos.yml index b0bc4b2727..0d478a9d6b 100644 --- a/.github/workflows/unittest-macos.yml +++ b/.github/workflows/unittest-macos.yml @@ -11,6 +11,10 @@ on: workflow_dispatch: +concurrency: + group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{github.event_name == 'pull_request'}} + jobs: build: name: MacOS Unit Test From 44d86c378b8778ccef40ff30bb063ef29042034e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 00:34:28 -0400 Subject: [PATCH 317/326] relax epsilon or mark unstable based on test results on non-x86 architectures --- unittest/force-styles/tests/atomic-pair-meam_ms.yaml | 2 +- unittest/force-styles/tests/atomic-pair-pedone.yaml | 2 +- .../tests/dihedral-cosine_squared_restricted.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/unittest/force-styles/tests/atomic-pair-meam_ms.yaml b/unittest/force-styles/tests/atomic-pair-meam_ms.yaml index fff938d940..d8dcd7b1eb 100644 --- a/unittest/force-styles/tests/atomic-pair-meam_ms.yaml +++ b/unittest/force-styles/tests/atomic-pair-meam_ms.yaml @@ -2,7 +2,7 @@ lammps_version: 7 Feb 2024 tags: slow date_generated: Wed Feb 28 17:07:42 2024 -epsilon: 2.5e-12 +epsilon: 2.5e-11 skip_tests: prerequisites: ! | pair meam/ms diff --git a/unittest/force-styles/tests/atomic-pair-pedone.yaml b/unittest/force-styles/tests/atomic-pair-pedone.yaml index ea97d9ee8c..82c6405e65 100644 --- a/unittest/force-styles/tests/atomic-pair-pedone.yaml +++ b/unittest/force-styles/tests/atomic-pair-pedone.yaml @@ -1,6 +1,6 @@ --- lammps_version: 7 Feb 2024 -tags: +tags: unstable date_generated: Tue Apr 9 07:44:34 2024 epsilon: 7.5e-13 skip_tests: diff --git a/unittest/force-styles/tests/dihedral-cosine_squared_restricted.yaml b/unittest/force-styles/tests/dihedral-cosine_squared_restricted.yaml index f67a093017..3f4d217b9a 100644 --- a/unittest/force-styles/tests/dihedral-cosine_squared_restricted.yaml +++ b/unittest/force-styles/tests/dihedral-cosine_squared_restricted.yaml @@ -1,8 +1,8 @@ --- lammps_version: 7 Feb 2024 -tags: +tags: date_generated: Sat Apr 13 11:41:16 2024 -epsilon: 2.5e-13 +epsilon: 1.0e-11 skip_tests: prerequisites: ! | atom full From f8eac8772458943b31618e36200b59b0af86306e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 00:56:09 -0400 Subject: [PATCH 318/326] make programming style check and doc info check a github action --- .github/workflows/style-check.yml | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/style-check.yml diff --git a/.github/workflows/style-check.yml b/.github/workflows/style-check.yml new file mode 100644 index 0000000000..ce07215b11 --- /dev/null +++ b/.github/workflows/style-check.yml @@ -0,0 +1,38 @@ +# GitHub action to run checks from tools/coding_standard +name: "Check for Programming Style Conformance" + +on: + push: + branches: + - develop + pull_request: + branches: + - develop + + workflow_dispatch: + +concurrency: + group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{github.event_name == 'pull_request'}} + +jobs: + build: + name: Programming Style Conformance + if: ${{ github.repository == 'lammps/lammps' }} + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Run Tests + working-directory: src + shell: bash + run: | + make check-whitespace + make check-permissions + make check-homepage + make check-error-docs + make check-docs From 4a9b7b1ba71a5f90e07aaa813c333626d0ca110e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 00:59:43 -0400 Subject: [PATCH 319/326] fix typo --- .github/workflows/style-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/style-check.yml b/.github/workflows/style-check.yml index ce07215b11..7be468d230 100644 --- a/.github/workflows/style-check.yml +++ b/.github/workflows/style-check.yml @@ -34,5 +34,5 @@ jobs: make check-whitespace make check-permissions make check-homepage - make check-error-docs + make check-errordocs make check-docs From 80cd9ace577a906b6ce8b19943c91576648b819f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 01:07:38 -0400 Subject: [PATCH 320/326] remove documentation check (for now) --- .github/workflows/style-check.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/style-check.yml b/.github/workflows/style-check.yml index 7be468d230..7be2c4fc46 100644 --- a/.github/workflows/style-check.yml +++ b/.github/workflows/style-check.yml @@ -35,4 +35,3 @@ jobs: make check-permissions make check-homepage make check-errordocs - make check-docs From 804aa4ee85495aec62d39de755626703d6882d24 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 20:38:50 -0400 Subject: [PATCH 321/326] improve error message --- src/variable.cpp | 2 +- unittest/commands/test_variables.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/variable.cpp b/src/variable.cpp index b2f6c2882c..279c14d999 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -613,7 +613,7 @@ void Variable::set(int narg, char **arg) // unrecognized variable style - } else error->all(FLERR,"Unknown variable keyword: {}", arg[1]); + } else error->all(FLERR,"Unknown variable style: {}", arg[1]); // set name of variable, if not replacing one flagged with replaceflag // name must be all alphanumeric chars or underscores diff --git a/unittest/commands/test_variables.cpp b/unittest/commands/test_variables.cpp index 2390b1b675..c7686cbf12 100644 --- a/unittest/commands/test_variables.cpp +++ b/unittest/commands/test_variables.cpp @@ -206,7 +206,7 @@ TEST_F(VariableTest, CreateDelete) TEST_FAILURE(".*ERROR: Invalid variable loop argument: -1.*", command("variable dummy loop -1");); TEST_FAILURE(".*ERROR: Illegal variable loop command.*", command("variable dummy loop 10 1");); - TEST_FAILURE(".*ERROR: Unknown variable keyword: xxx.*", command("variable dummy xxxx");); + TEST_FAILURE(".*ERROR: Unknown variable style: xxx.*", command("variable dummy xxxx");); TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*", command("variable two string xxx");); TEST_FAILURE(".*ERROR: Cannot redefine variable as a different style.*", From 11365e7b2e0c6e3920275a8b338b1fcd9444752c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 20:48:41 -0400 Subject: [PATCH 322/326] add extract method to bond style harmonic/shift --- src/EXTRA-MOLECULE/bond_harmonic_shift.cpp | 13 +++++++++++++ src/EXTRA-MOLECULE/bond_harmonic_shift.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/EXTRA-MOLECULE/bond_harmonic_shift.cpp b/src/EXTRA-MOLECULE/bond_harmonic_shift.cpp index bd106c8567..6c87d47f5e 100644 --- a/src/EXTRA-MOLECULE/bond_harmonic_shift.cpp +++ b/src/EXTRA-MOLECULE/bond_harmonic_shift.cpp @@ -228,3 +228,16 @@ void BondHarmonicShift::born_matrix(int type, double rsq, int /*i*/, int /*j*/, du2 = 2 * k[type]; if (r > 0.0) du = du2 * dr; } + +/* ---------------------------------------------------------------------- + return ptr to internal members upon request +------------------------------------------------------------------------ */ + +void *BondHarmonicShift::extract(const char *str, int &dim) +{ + dim = 1; + if (strcmp(str, "k") == 0) return (void *) k; + if (strcmp(str, "r0") == 0) return (void *) r0; + if (strcmp(str, "r1") == 0) return (void *) r1; + return nullptr; +} diff --git a/src/EXTRA-MOLECULE/bond_harmonic_shift.h b/src/EXTRA-MOLECULE/bond_harmonic_shift.h index 922f1ba00d..68afc57bf7 100644 --- a/src/EXTRA-MOLECULE/bond_harmonic_shift.h +++ b/src/EXTRA-MOLECULE/bond_harmonic_shift.h @@ -36,6 +36,7 @@ class BondHarmonicShift : public Bond { void write_data(FILE *) override; double single(int, double, int, int, double &) override; void born_matrix(int, double, int, int, double &, double &) override; + void *extract(const char *, int &); protected: double *k, *r0, *r1; From 5d40a9640d47ed7ffb75a59988552d1eab3ef7df Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 20:49:44 -0400 Subject: [PATCH 323/326] add support for bond style hybrid to fix adapt --- src/bond_hybrid.cpp | 8 ++++++++ src/bond_hybrid.h | 2 ++ src/fix_adapt.cpp | 27 ++++++++++++++++++++------- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp index 307cbd72fd..bd5badb54c 100644 --- a/src/bond_hybrid.cpp +++ b/src/bond_hybrid.cpp @@ -385,6 +385,14 @@ void BondHybrid::init_style() else map[0] = -1; } +/* ---------------------------------------------------------------------- */ + +int BondHybrid::check_itype(int itype, char *substyle) +{ + if (strcmp(keywords[map[itype]], substyle) == 0) return 1; + return 0; +} + /* ---------------------------------------------------------------------- return an equilbrium bond length ------------------------------------------------------------------------- */ diff --git a/src/bond_hybrid.h b/src/bond_hybrid.h index ba520b81b4..d93b5c7558 100644 --- a/src/bond_hybrid.h +++ b/src/bond_hybrid.h @@ -44,6 +44,8 @@ class BondHybrid : public Bond { double single(int, double, int, int, double &) override; double memory_usage() override; + int check_itype(int, char *); + protected: int *map; // which style each bond type points to int has_quartic; // which style, if any is a quartic bond style diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index cad157f2be..6bab704c22 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -17,6 +17,7 @@ #include "angle.h" #include "atom.h" #include "bond.h" +#include "bond_hybrid.h" #include "domain.h" #include "error.h" #include "fix_store_atom.h" @@ -386,11 +387,15 @@ void FixAdapt::init() if (utils::strmatch(force->pair_style,"^hybrid")) { auto pair = dynamic_cast(force->pair); - for (i = ad->ilo; i <= ad->ihi; i++) - for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) - if (!pair->check_ijtype(i,j,pstyle)) - error->all(FLERR,"Fix adapt type pair range is not valid " - "for pair hybrid sub-style {}", pstyle); + if (pair) { + for (i = ad->ilo; i <= ad->ihi; i++) { + for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) { + if (!pair->check_ijtype(i,j,pstyle)) + error->all(FLERR,"Fix adapt type pair range is not valid " + "for pair hybrid sub-style {}", pstyle); + } + } + } } delete[] pstyle; @@ -416,8 +421,16 @@ void FixAdapt::init() if (ad->bdim == 1) ad->vector = (double *) ptr; - if (utils::strmatch(force->bond_style,"^hybrid")) - error->all(FLERR,"Fix adapt does not support bond_style hybrid"); + if (utils::strmatch(force->bond_style,"^hybrid")) { + auto bond = dynamic_cast(force->bond); + if (bond) { + for (i = ad->ilo; i <= ad->ihi; i++) { + if (!bond->check_itype(i,bstyle)) + error->all(FLERR,"Fix adapt type bond range is not valid " + "for pair hybrid sub-style {}", bstyle); + } + } + } delete[] bstyle; From 516d988debec1aed9aceb386756bc93f00ffedfe Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 20:59:04 -0400 Subject: [PATCH 324/326] update fix adapt docs --- doc/src/fix_adapt.rst | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index 03aef12a6c..0aa0323309 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -319,25 +319,28 @@ all types from 1 to :math:`N`. A leading asterisk means all types from :math:`N` (inclusive). A middle asterisk means all types from m to n (inclusive). -Currently *bond* does not support bond_style hybrid nor bond_style -hybrid/overlay as bond styles. The bond styles that currently work -with fix_adapt are +If :doc:`bond_style hybrid ` is used, *bstyle* should be a +sub-style name. The bond styles that currently work with fix adapt are: -+------------------------------------+------------+------------+ -| :doc:`class2 ` | r0 | type bonds | -+------------------------------------+------------+------------+ -| :doc:`fene ` | k,r0 | type bonds | -+------------------------------------+------------+------------+ -| :doc:`fene/nm ` | k,r0 | type bonds | -+------------------------------------+------------+------------+ -| :doc:`gromos ` | k,r0 | type bonds | -+------------------------------------+------------+------------+ -| :doc:`harmonic ` | k,r0 | type bonds | -+------------------------------------+------------+------------+ -| :doc:`morse ` | r0 | type bonds | -+------------------------------------+------------+------------+ -| :doc:`nonlinear ` | epsilon,r0 | type bonds | -+------------------------------------+------------+------------+ ++---------------------------------------------------+------------+------------+ +| :doc:`class2 ` | r0 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`fene ` | k,r0 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`fene/nm ` | k,r0 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`gromos ` | k,r0 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`harmonic ` | k,r0 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`harmonic/shift ` | k,r0,r1 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`harmonic/restrain ` | k | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`morse ` | r0 | type bonds | ++---------------------------------------------------+------------+------------+ +| :doc:`nonlinear ` | epsilon,r0 | type bonds | ++---------------------------------------------------+------------+------------+ ---------- @@ -359,7 +362,7 @@ all types from 1 to :math:`N`. A leading asterisk means all types from Currently *angle* does not support angle_style hybrid nor angle_style hybrid/overlay as angle styles. The angle styles that currently work -with fix_adapt are +with fix adapt are +------------------------------------+----------+-------------+ | :doc:`harmonic ` | k,theta0 | type angles | From 47bb1a8748ee5729f0c45a3ab7098d99d2507cf7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 21:04:22 -0400 Subject: [PATCH 325/326] update unit test --- unittest/force-styles/tests/bond-harmonic_shift.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/unittest/force-styles/tests/bond-harmonic_shift.yaml b/unittest/force-styles/tests/bond-harmonic_shift.yaml index 7a41c2c3cd..61212a468b 100644 --- a/unittest/force-styles/tests/bond-harmonic_shift.yaml +++ b/unittest/force-styles/tests/bond-harmonic_shift.yaml @@ -17,7 +17,10 @@ bond_coeff: ! | 4 650.0 1.2 0.2 5 450.0 1.0 0.0 equilibrium: 5 1.5 1.1 1.3 1.2 1 -extract: ! "" +extract: ! | + k 1 + r0 1 + r1 1 natoms: 29 init_energy: -9395.519982389222 init_stress: ! |- From 6503f297d47a2a6f2ecbd227364cf89456969d3b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 16 Sep 2024 21:21:20 -0400 Subject: [PATCH 326/326] support angle style hybrid with fix adapt --- doc/src/fix_adapt.rst | 5 ++--- src/angle_hybrid.cpp | 8 ++++++++ src/angle_hybrid.h | 4 +++- src/fix_adapt.cpp | 13 +++++++++++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index 0aa0323309..1943798160 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -360,9 +360,8 @@ all types from 1 to :math:`N`. A leading asterisk means all types from :math:`N` (inclusive). A middle asterisk means all types from m to n (inclusive). -Currently *angle* does not support angle_style hybrid nor angle_style -hybrid/overlay as angle styles. The angle styles that currently work -with fix adapt are +If :doc:`angle_style hybrid ` is used, *astyle* should be a +sub-style name. The angle styles that currently work with fix adapt are: +------------------------------------+----------+-------------+ | :doc:`harmonic ` | k,theta0 | type angles | diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp index a015882a15..1261a78176 100644 --- a/src/angle_hybrid.cpp +++ b/src/angle_hybrid.cpp @@ -320,6 +320,14 @@ void AngleHybrid::init_style() if (styles[m]) styles[m]->init_style(); } +/* ---------------------------------------------------------------------- */ + +int AngleHybrid::check_itype(int itype, char *substyle) +{ + if (strcmp(keywords[map[itype]], substyle) == 0) return 1; + return 0; +} + /* ---------------------------------------------------------------------- return an equilbrium angle length ------------------------------------------------------------------------- */ diff --git a/src/angle_hybrid.h b/src/angle_hybrid.h index a6da29245e..a84096b297 100644 --- a/src/angle_hybrid.h +++ b/src/angle_hybrid.h @@ -42,8 +42,10 @@ class AngleHybrid : public Angle { double single(int, int, int, int) override; double memory_usage() override; + int check_itype(int, char *); + protected: - int *map; // which style each angle type points to + int *map; // which style each angle type points to int *nanglelist; // # of angles in sub-style anglelists int *maxangle; // max # of angles sub-style lists can store int ***anglelist; // anglelist for each sub-style diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index 6bab704c22..c725707b29 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -15,6 +15,7 @@ #include "fix_adapt.h" #include "angle.h" +#include "angle_hybrid.h" #include "atom.h" #include "bond.h" #include "bond_hybrid.h" @@ -455,8 +456,16 @@ void FixAdapt::init() if (ad->adim == 1) ad->vector = (double *) ptr; - if (utils::strmatch(force->angle_style,"^hybrid")) - error->all(FLERR,"Fix adapt does not support angle_style hybrid"); + if (utils::strmatch(force->angle_style,"^hybrid")) { + auto angle = dynamic_cast(force->angle); + if (angle) { + for (i = ad->ilo; i <= ad->ihi; i++) { + if (!angle->check_itype(i,astyle)) + error->all(FLERR,"Fix adapt type angle range is not valid " + "for pair hybrid sub-style {}", astyle); + } + } + } delete[] astyle;

EN@gS6cb>HT=}#LT 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 fp`rStsw> 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 z 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 Date: Wed, 21 Aug 2024 12:46:45 -0600 Subject: [PATCH 034/326] better explanations of vector outputs for compute temp commands --- doc/src/compute_temp.rst | 33 ++++++++------- doc/src/compute_temp_asphere.rst | 25 ++++++++--- doc/src/compute_temp_body.rst | 29 +++++++------ doc/src/compute_temp_chunk.rst | 28 +++++++------ doc/src/compute_temp_com.rst | 31 ++++++++------ doc/src/compute_temp_cs.rst | 51 ++++++++++++----------- doc/src/compute_temp_deform.rst | 30 ++++++++------ doc/src/compute_temp_deform_eff.rst | 33 ++++++++------- doc/src/compute_temp_partial.rst | 28 +++++++------ doc/src/compute_temp_profile.rst | 64 +++++++++++++++++------------ doc/src/compute_temp_ramp.rst | 36 +++++++++------- doc/src/compute_temp_region.rst | 44 +++++++++++--------- doc/src/compute_temp_region_eff.rst | 29 ++++++------- doc/src/compute_temp_rotate.rst | 30 ++++++++------ doc/src/compute_temp_sphere.rst | 24 ++++++++--- doc/src/compute_viscosity_cos.rst | 37 +++++++++-------- 16 files changed, 322 insertions(+), 230 deletions(-) diff --git a/doc/src/compute_temp.rst b/doc/src/compute_temp.rst index e081280496..4c7a46b822 100644 --- a/doc/src/compute_temp.rst +++ b/doc/src/compute_temp.rst @@ -48,14 +48,18 @@ the group, :math:`N_\mathrm{fix DOFs}` is the number of degrees of freedom removed by fix commands (see below), :math:`k_B` is the Boltzmann constant, and :math:`T` is the resulting computed temperature. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the computation of a pressure -tensor. The formula for the components of the tensor is the same as the -above expression for :math:`E_\mathrm{kin}`, except that :math:`v_i^2` is -replaced by :math:`v_{i,x} v_{i,y}` for the :math:`xy` component, and so on. -The six components of the vector are ordered :math:`xx`, :math:`yy`, -:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. - +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. + The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the :doc:`compute_modify ` command if this is not the case. @@ -94,16 +98,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length six (KE tensor), which can be accessed by indices -1--6. These values can be used by any command that uses global scalar -or vector values from a compute as input. See the :doc:`Howto output -` page for an overview of LAMMPS output options. +vector of length six (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_asphere.rst b/doc/src/compute_temp_asphere.rst index 5741db76aa..c9b1e51532 100644 --- a/doc/src/compute_temp_asphere.rst +++ b/doc/src/compute_temp_asphere.rst @@ -90,6 +90,19 @@ for the :math:`xy` component, and the appropriate elements of the moment of inertia tensor are used. The six components of the vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` and :math:`\omega^2` are replaced by :math:`v_x v_y` +and :math:`\omega_x \omega_y` for the :math:`xy` component, and so on. +And the appropriate elements of the moment of inertia tensor are used. +Note that because it lacks the 1/2 factor, these tensor components are +twice those of the traditional kinetic energy tensor. The six +components of the vector are ordered :math:`xx`, :math:`yy`, +:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. + The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic/dof* option of the :doc:`compute_modify ` command if this is not the @@ -131,17 +144,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. -See the :doc:`Howto output ` page for an overview of LAMMPS +vector of length 6 (symmertic tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_body.rst b/doc/src/compute_temp_body.rst index f29ca5c39b..ef536c1af7 100644 --- a/doc/src/compute_temp_body.rst +++ b/doc/src/compute_temp_body.rst @@ -62,12 +62,17 @@ kinetic energy is computed as :math:`\frac12 I \omega^2`, where :math:`I` is the moment of inertia tensor for the aspherical particle and :math:`\omega` is its angular velocity, which is computed from its angular momentum. -A kinetic energy tensor, stored as a 6-element vector, is also calculated by -this compute. The formula for the components of the tensor is the same as the -above formula, except that :math:`v^2` and :math:`\omega^2` are -replaced by :math:`v_x v_y` and :math:`\omega_x \omega_y` for the -math:`xy` component, and the appropriate elements of the inertia tensor are -used. The six components of the vector are ordered :math:`xx`, :math:`yy`, +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` and :math:`\omega^2` are replaced by :math:`v_x v_y` +and :math:`\omega_x \omega_y` for the :math:`xy` component, and so on. +And the appropriate elements of the moment of inertia tensor are used. +Note that because it lacks the 1/2 factor, these tensor components are +twice those of the traditional kinetic energy tensor. The six +components of the vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. The number of atoms contributing to the temperature is assumed to be @@ -111,17 +116,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. -See the :doc:`Howto output ` page for an overview of LAMMPS +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. -The vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_chunk.rst b/doc/src/compute_temp_chunk.rst index c92b4e36e9..33eab04343 100644 --- a/doc/src/compute_temp_chunk.rst +++ b/doc/src/compute_temp_chunk.rst @@ -85,12 +85,14 @@ By default, *adof* = 2 or 3 = dimensionality of system, as set via the :doc:`dimension ` command, and *cdof* = 0.0. This gives the usual formula for temperature. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the computation of a pressure -tensor. The formula for the components of the tensor is the same as -the above formula, except that :math:`v^2` is replaced by -:math:`v_x v_y` for the :math:`xy` component, and so on. -The six components of the vector are ordered :math:`xx`, :math:`yy`, +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute. The formula for the components of the tensor is the +same as the above expression for :math:`E_\mathrm{kin}`, except that +the 1/2 factor is NOT included and the :math:`v_i^2` is replaced by +:math:`v_{i,x} v_{i,y}` for the :math:`xy` component, and so on. Note +that because it lacks the 1/2 factor, these tensor components are +twice those of the traditional kinetic energy tensor. The six +components of the vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. Note that the number of atoms contributing to the temperature is @@ -227,10 +229,10 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. -See the :doc:`Howto output ` page for an overview of LAMMPS +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS output options. This compute also optionally calculates a global array, if one or more @@ -245,9 +247,9 @@ page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". The array values are "intensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. The array values -will be in temperature :doc:`units ` for the *temp* value, and in +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. The array values will be +in temperature :doc:`units ` for the *temp* value, and in energy :doc:`units ` for the *kecom* and *internal* values. Restrictions diff --git a/doc/src/compute_temp_com.rst b/doc/src/compute_temp_com.rst index d54fa7dfa6..e94c911dfa 100644 --- a/doc/src/compute_temp_com.rst +++ b/doc/src/compute_temp_com.rst @@ -44,12 +44,17 @@ where KE is the total kinetic energy of the group of atoms (sum of simulation, :math:`N` is number of atoms in the group, :math:`k_B` is the Boltzmann constant, and :math:`T` is the absolute temperature. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the computation of a pressure -tensor. The formula for the components of the tensor is the same as -the above formula, except that :math:`v^2` is replaced by :math:`v_x v_y` -for the :math:`xy` component, and so on. The six components of the vector are -ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the @@ -81,17 +86,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. -The vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values is in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_cs.rst b/doc/src/compute_temp_cs.rst index a33fbf7ffb..0620fea9b7 100644 --- a/doc/src/compute_temp_cs.rst +++ b/doc/src/compute_temp_cs.rst @@ -67,26 +67,31 @@ the velocity of each core or shell atom used in the KE calculation is the velocity of the center-of-mass (COM) of the core/shell pair the atom is part of. -A kinetic energy tensor, stored as a six-element vector, is also calculated by -this compute for use in the computation of a pressure tensor. The formula for -the components of the tensor is the same as the above formula, except that -:math:`v^2` is replaced by :math:`v_x v_y` for the :math:`xy` component, and so -on. The six components of the vector are ordered :math:`xx`, :math:`yy`, -:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. In contrast to the temperature, -the velocity of each core or shell atom is taken individually. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. The change this fix makes to core/shell atom velocities is essentially -computing the temperature after a "bias" has been removed from the velocity of -the atoms. This "bias" is the velocity of the atom relative to the -center-of-mass velocity of the core/shell pair. If this compute is used with a -fix command that performs thermostatting then this bias will be subtracted from -each atom, thermostatting of the remaining center-of-mass velocity will be -performed, and the bias will be added back in. This means the thermostatting -will effectively be performed on the core/shell pairs, instead of on the -individual core and shell atoms. Thermostatting fixes that work in this way -include :doc:`fix nvt `, :doc:`fix temp/rescale `, -:doc:`fix temp/berendsen `, and -:doc:`fix langevin `. +computing the temperature after a "bias" has been removed from the +velocity of the atoms. This "bias" is the velocity of the atom +relative to the center-of-mass velocity of the core/shell pair. If +this compute is used with a fix command that performs thermostatting +then this bias will be subtracted from each atom, thermostatting of +the remaining center-of-mass velocity will be performed, and the bias +will be added back in. This means the thermostatting will effectively +be performed on the core/shell pairs, instead of on the individual +core and shell atoms. Thermostatting fixes that work in this way +include :doc:`fix nvt `, :doc:`fix temp/rescale +`, :doc:`fix temp/berendsen `, +and :doc:`fix langevin `. The internal energy of core/shell pairs can be calculated by the :doc:`compute temp/chunk ` command, if chunks are defined @@ -97,15 +102,15 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. +vector of length 6 (symmertric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_deform.rst b/doc/src/compute_temp_deform.rst index adf76564a8..1c8c2da096 100644 --- a/doc/src/compute_temp_deform.rst +++ b/doc/src/compute_temp_deform.rst @@ -73,12 +73,16 @@ simulation, :math:`N` is the number of atoms in the group, :math:`k_B` is the Boltzmann constant, and :math:`T` is the temperature. Note that :math:`v` in the kinetic energy formula is the atom's velocity. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the computation of a pressure -tensor. The formula for the components of the tensor is the same as -the above formula, except that :math:`v^2` is replaced by :math:`v_x v_y` for -the :math:`xy` component, and so on. The six components of the vector are -ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. The number of atoms contributing to the temperature is assumed to be @@ -128,17 +132,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. -The vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_deform_eff.rst b/doc/src/compute_temp_deform_eff.rst index 83535f4727..3c22ad8045 100644 --- a/doc/src/compute_temp_deform_eff.rst +++ b/doc/src/compute_temp_deform_eff.rst @@ -29,17 +29,20 @@ model, after subtracting out a streaming velocity induced by the simulation box changing size and/or shape, for example in a non-equilibrium MD (NEMD) simulation. The size/shape change is induced by use of the :doc:`fix deform ` command. A -compute of this style is created by the -:doc:`fix nvt/sllod/eff ` command to compute the thermal -temperature of atoms for thermostatting purposes. A compute of this -style can also be used by any command that computes a temperature -(e.g., :doc:`thermo_modify `, :doc:`fix npt/eff `). +compute of this style is created by the :doc:`fix nvt/sllod/eff +` command to compute the thermal temperature of +atoms for thermostatting purposes. A compute of this style can also +be used by any command that computes a temperature (e.g., +:doc:`thermo_modify `, :doc:`fix npt/eff +`). The calculation performed by this compute is exactly like that described by the :doc:`compute temp/deform ` -command, except that the formula for the temperature includes the -radial electron velocity contributions, as discussed by the :doc:`compute temp/eff ` command. Note that only the -translational degrees of freedom for each nuclei or electron are +command, except that the formulas for the temperature (scalar) and +diagonal components of the symmetric tensor (vector) include the +radial electron velocity contributions, as discussed by the +:doc:`compute temp/eff ` command. Note that only +the translational degrees of freedom for each nuclei or electron are affected by the streaming velocity adjustment. The radial velocity component of the electrons is not affected. @@ -47,17 +50,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_partial.rst b/doc/src/compute_temp_partial.rst index d5628e0d60..d98558c159 100644 --- a/doc/src/compute_temp_partial.rst +++ b/doc/src/compute_temp_partial.rst @@ -44,12 +44,16 @@ constant, and :math:`T` = temperature. The calculation of KE excludes the is 0. The dim parameter is adjusted to give the correct number of degrees of freedom. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the calculation of a pressure -tensor. The formula for the components of the tensor is the same as -the above formula, except that :math:`v^2` is replaced by :math:`v_x v_y` for -the :math:`xy` component, and so on. The six components of the vector are -ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. The number of atoms contributing to the temperature is assumed to be @@ -88,17 +92,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. -See the :doc:`Howto output ` page for an overview of LAMMPS +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_profile.rst b/doc/src/compute_temp_profile.rst index 566d8cf3fc..47725cdcbc 100644 --- a/doc/src/compute_temp_profile.rst +++ b/doc/src/compute_temp_profile.rst @@ -97,21 +97,27 @@ center-of-mass velocity across the group in directions where streaming velocity is *not* subtracted. This can be altered using the *extra* option of the :doc:`compute_modify ` command. -If the *out* keyword is used with a *tensor* value, which is the default, -a kinetic energy tensor, stored as a six-element vector, is also calculated by -this compute for use in the computation of a pressure tensor. The formula for -the components of the tensor is the same as the above formula, except that -:math:`v^2` is replaced by :math:`v_x v_y` for the :math:`xy` component, and -so on. The six components of the vector are ordered :math:`xx`, :math:`yy`, +If the *out* keyword is used with a *tensor* value, which is the +default, then a symmetric tensor, stored as a six-element vector, is +also calculated by this compute for use in the computation of a +pressure tensor by the :doc:`compute pressue ` +command. The formula for the components of the tensor is the same as +the above expression for :math:`E_\mathrm{kin}`, except that the 1/2 +factor is NOT included and the :math:`v_i^2` is replaced by +:math:`v_{i,x} v_{i,y}` for the :math:`xy` component, and so on. Note +that because it lacks the 1/2 factor, these tensor components are +twice those of the traditional kinetic energy tensor. The six +components of the vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. -If the *out* keyword is used with a *bin* value, the count of atoms and -computed temperature for each bin are stored for output, as an array of values, -as described below. The temperature of each bin is calculated as described -above, where the bias velocity is subtracted and only the remaining thermal -velocity of atoms in the bin contributes to the temperature. See the note -below for how the temperature is normalized by the degrees-of-freedom of atoms -in the bin. +If the *out* keyword is used with a *bin* value, the count of atoms +and computed temperature for each bin are stored for output, as an +array of values, as described below. The temperature of each bin is +calculated as described above, where the bias velocity is subtracted +and only the remaining thermal velocity of atoms in the bin +contributes to the temperature. See the note below for how the +temperature is normalized by the degrees-of-freedom of atoms in the +bin. The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the @@ -166,16 +172,17 @@ Output info This compute calculates a global scalar (the temperature). Depending on the setting of the *out* keyword, it also calculates a global vector or array. For *out* = *tensor*, it calculates a vector of -length 6 (KE tensor), which can be accessed by indices 1--6. For *out* -= *bin* it calculates a global array which has 2 columns and :math:`N` rows, -where :math:`N` is the number of bins. The first column contains the number -of atoms in that bin. The second contains the temperature of that -bin, calculated as described above. The ordering of rows in the array -is as follows. Bins in :math:`x` vary fastest, then :math:`y`, then -:math:`z`. Thus for a :math:`10\times 10\times 10` 3d array of bins, there -will be 1000 rows. The bin with indices :math:`(i_x,i_y,i_z) = (2,3,4)` would -map to row :math:`M = 10^2(i_z-1) + 10(i_y-1) + i_x = 322`, where the rows are -numbered from 1 to 1000 and the bin indices are numbered from 1 to 10 in each +length 6 (symmetric tensor), which can be accessed by indices 1--6. +For *out* = *bin* it calculates a global array which has 2 columns and +:math:`N` rows, where :math:`N` is the number of bins. The first +column contains the number of atoms in that bin. The second contains +the temperature of that bin, calculated as described above. The +ordering of rows in the array is as follows. Bins in :math:`x` vary +fastest, then :math:`y`, then :math:`z`. Thus for a :math:`10\times +10\times 10` 3d array of bins, there will be 1000 rows. The bin with +indices :math:`(i_x,i_y,i_z) = (2,3,4)` would map to row :math:`M = +10^2(i_z-1) + 10(i_y-1) + i_x = 322`, where the rows are numbered from +1 to 1000 and the bin indices are numbered from 1 to 10 in each dimension. These values can be used by any command that uses global scalar or @@ -186,9 +193,9 @@ options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". The array values are "intensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. The first column -of array values are counts; the values in the second column will be in +The scalar value us in temperature :doc:`units `. The vector +values are in energy :doc:`units `. The first column of array +values are counts; the values in the second column will be in temperature :doc:`units `. Restrictions @@ -203,7 +210,10 @@ will be for most thermostats. Related commands """""""""""""""" -:doc:`compute temp `, :doc:`compute temp/ramp `, :doc:`compute temp/deform `, :doc:`compute pressure ` +:doc:`compute temp `, :doc:`compute temp/ramp + `, :doc:`compute temp/deform + `, :doc:`compute pressure + ` Default """"""" diff --git a/doc/src/compute_temp_ramp.rst b/doc/src/compute_temp_ramp.rst index 2e170316fb..d89a98fbea 100644 --- a/doc/src/compute_temp_ramp.rst +++ b/doc/src/compute_temp_ramp.rst @@ -63,12 +63,17 @@ command (e.g., :math:`\AA` for units = real or metal). A velocity in lattice spacings per unit time). The :doc:`lattice ` command must have been previously used to define the lattice spacing. -A kinetic energy tensor, stored as a six-element vector, is also calculated by -this compute for use in the computation of a pressure tensor. The formula for -the components of the tensor is the same as the above formula, except that -:math:`v^2` is replaced by :math:`v_x v_y` for the :math:`xy` component, and -so on. The six components of the vector are ordered :math:`xx`, :math:`yy`, -:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the @@ -100,17 +105,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" @@ -119,7 +124,10 @@ Restrictions Related commands """""""""""""""" -:doc:`compute temp `, :doc:`compute temp/profie `, :doc:`compute temp/deform `, :doc:`compute pressure ` +:doc:`compute temp `, :doc:`compute temp/profie + `, :doc:`compute temp/deform + `, :doc:`compute pressure + ` Default """"""" diff --git a/doc/src/compute_temp_region.rst b/doc/src/compute_temp_region.rst index 77954e8898..d2fc8a1633 100644 --- a/doc/src/compute_temp_region.rst +++ b/doc/src/compute_temp_region.rst @@ -49,12 +49,17 @@ where KE = is the total kinetic energy of the group of atoms (sum of :math:`N` is the number of atoms in both the group and region, :math:`k_B` is the Boltzmann constant, and :math:`T` temperature. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the computation of a pressure -tensor. The formula for the components of the tensor is the same as -the above formula, except that :math:`v^2` is replaced by :math:`v_x v_y` -for the :math:`xy` component, and so on. The six components of the vector are -ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. The number of atoms contributing to the temperature is calculated each time the temperature is evaluated since it is assumed atoms can @@ -78,12 +83,13 @@ will operate only on atoms that are currently in the geometric region. Unlike other compute styles that calculate temperature, this compute does not subtract out degrees-of-freedom due to fixes that constrain -motion, such as :doc:`fix shake ` and :doc:`fix rigid `. This is because those degrees of freedom -(e.g., a constrained bond) could apply to sets of atoms that straddle -the region boundary, and hence the concept is somewhat ill-defined. -If needed the number of subtracted degrees of freedom can be set -explicitly using the *extra* option of the -:doc:`compute_modify ` command. +motion, such as :doc:`fix shake ` and :doc:`fix rigid +`. This is because those degrees of freedom (e.g., a +constrained bond) could apply to sets of atoms that straddle the +region boundary, and hence the concept is somewhat ill-defined. If +needed the number of subtracted degrees of freedom can be set +explicitly using the *extra* option of the :doc:`compute_modify +` command. See the :doc:`Howto thermostat ` page for a discussion of different ways to compute temperature and perform @@ -93,17 +99,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. -The vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_region_eff.rst b/doc/src/compute_temp_region_eff.rst index b8cd73f4fd..12bc3f01a1 100644 --- a/doc/src/compute_temp_region_eff.rst +++ b/doc/src/compute_temp_region_eff.rst @@ -32,32 +32,33 @@ temperature (e.g., :doc:`thermo_modify `). The operation of this compute is exactly like that described by the :doc:`compute temp/region ` command, except that -the formula for the temperature itself includes the radial electron -velocity contributions, as discussed by the -:doc:`compute temp/eff ` command. +the formulas for the temperature (scalar) and diagonal components of +the symmetric tensor (vector) include the radial electron velocity +contributions, as discussed by the :doc:`compute temp/eff +` command. Output info -""""""""""" +"""""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS +output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" -This compute is part of the EFF package. It is only enabled if -LAMMPS was built with that package. -See the :doc:`Build package ` page for more info. +This compute is part of the EFF package. It is only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` page for more info. Related commands """""""""""""""" diff --git a/doc/src/compute_temp_rotate.rst b/doc/src/compute_temp_rotate.rst index 7c445109a1..7fab9a1325 100644 --- a/doc/src/compute_temp_rotate.rst +++ b/doc/src/compute_temp_rotate.rst @@ -43,12 +43,17 @@ where KE is the total kinetic energy of the group of atoms (sum of :math:`N` is the number of atoms in the group, :math:`k_B` is the Boltzmann constant, and :math:`T` is the absolute temperature. -A kinetic energy tensor, stored as a six-element vector, is also calculated by -this compute for use in the computation of a pressure tensor. The formula for -the components of the tensor is the same as the above formula, except that -:math:`v^2` is replaced by :math:`v_x v_y` for the :math:`xy` component, and -so on. The six components of the vector are ordered :math:`xx`, :math:`yy`, -:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the @@ -80,17 +85,16 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1-6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS output -options. +vector of length 6 (symmetric tensor), which can be accessed by +indices 1-6. These values can be used by any command that uses global +scalar or vector values from a compute as input. See the :doc:`Howto +output ` page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_sphere.rst b/doc/src/compute_temp_sphere.rst index d1891f64bf..5499b3aae9 100644 --- a/doc/src/compute_temp_sphere.rst +++ b/doc/src/compute_temp_sphere.rst @@ -77,6 +77,18 @@ tensor is the same as the above formulas, except that :math:`v^2` and vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` and :math:`\omega^2` are replaced by :math:`v_x v_y` +and :math:`\omega_x \omega_y` for the :math:`xy` component, and so on. +Note that because it lacks the 1/2 factor, these tensor components are +twice those of the traditional kinetic energy tensor. The six +components of the vector are ordered :math:`xx`, :math:`yy`, +:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. + The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the :doc:`compute_modify ` command if this is not the case. @@ -117,17 +129,17 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (KE tensor), which can be accessed by indices 1--6. -These values can be used by any command that uses global scalar or -vector values from a compute as input. -See the :doc:`Howto output ` page for an overview of LAMMPS +vector of length 6 (symmetric tensor), which can be accessed by +indices 1--6. These values can be used by any command that uses +global scalar or vector values from a compute as input. See the +:doc:`Howto output ` page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The vector values are "extensive". -The scalar value will be in temperature :doc:`units `. The -vector values will be in energy :doc:`units `. +The scalar value is in temperature :doc:`units `. The vector +values are in energy :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_viscosity_cos.rst b/doc/src/compute_viscosity_cos.rst index 87cfec56cf..bfc0c03d79 100644 --- a/doc/src/compute_viscosity_cos.rst +++ b/doc/src/compute_viscosity_cos.rst @@ -86,12 +86,17 @@ where KE is the total kinetic energy of the group of atoms (sum of :math:`N` is the number of atoms in the group, :math:`k_B` is the Boltzmann constant, and :math:`T` is the absolute temperature. -A kinetic energy tensor, stored as a six-element vector, is also -calculated by this compute for use in the computation of a pressure -tensor. The formula for the components of the tensor is the same as -the above formula, except that :math:`v^2` is replaced by :math:`v_x v_y` for -the :math:`xy` component, and so on. The six components of the vector are -ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +A symmetric tensor, stored as a six-element vector, is also calculated +by this compute for use in the computation of a pressure tensor by the +:doc:`compute pressue ` command. The formula for +the components of the tensor is the same as the above expression for +:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and +the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the +:math:`xy` component, and so on. Note that because it lacks the 1/2 +factor, these tensor components are twice those of the traditional +kinetic energy tensor. The six components of the vector are ordered +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic* option of the @@ -126,21 +131,21 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 7, which can be accessed by indices 1--7. -The first six elements of the vector are the KE tensor, -and the seventh is the cosine-shaped velocity amplitude :math:`V`, -which can be used to calculate the reciprocal viscosity, as shown in the example. -These values can be used by any command that uses global scalar or -vector values from a compute as input. -See the :doc:`Howto output ` page for an overview of LAMMPS output options. +vector of length 7, which can be accessed by indices 1--7. The first +six elements of the vector are those of the symmetric tensor discussed +above. The seventh is the cosine-shaped velocity amplitude :math:`V`, +which can be used to calculate the reciprocal viscosity, as shown in +the example. These values can be used by any command that uses global +scalar or vector values from a compute as input. See the :doc:`Howto +output ` page for an overview of LAMMPS output options. The scalar value calculated by this compute is "intensive". The first six elements of vector values are "extensive", and the seventh element of vector values is "intensive". -The scalar value will be in temperature :doc:`units `. -The first six elements of vector values will be in energy :doc:`units `. -The seventh element of vector value will be in velocity :doc:`units `. +The scalar value is in temperature :doc:`units `. The first +six elements of vector values are in energy :doc:`units `. The +seventh element of vector value us in velocity :doc:`units `. Restrictions """""""""""" From 32a6db151f29d4f439313fba20dfa24712a83294 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 21 Aug 2024 13:07:51 -0600 Subject: [PATCH 035/326] clarify compute pressure doc page as well --- doc/src/compute_pressure.rst | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/doc/src/compute_pressure.rst b/doc/src/compute_pressure.rst index 03dfbb841b..2b75721890 100644 --- a/doc/src/compute_pressure.rst +++ b/doc/src/compute_pressure.rst @@ -59,11 +59,12 @@ may also contribute to the virial term. A symmetric pressure tensor, stored as a 6-element vector, is also calculated by this compute. The six components of the vector are -ordered :math:`xx,` :math:`yy,` :math:`zz,` :math:`xy,` :math:`xz,` :math:`yz.` -The equation for the :math:`(I,J)` components (where :math:`I` and :math:`J` -are :math:`x`, :math:`y`, or :math:`z`) is similar to the above formula, -except that the first term uses components of the kinetic energy tensor and the -second term uses components of the virial tensor: +ordered :math:`xx,` :math:`yy,` :math:`zz,` :math:`xy,` :math:`xz,` +:math:`yz.` The equation for the :math:`(I,J)` components (where +:math:`I` and :math:`J` are :math:`x`, :math:`y`, or :math:`z`) is +similar to the above formula, except that the first term uses +components derived from the kinetic energy tensor and the second term +uses components of the virial tensor: .. math:: @@ -86,9 +87,15 @@ system, including for many-body potentials and accounting for the effects of periodic boundary conditions are discussed in :ref:`(Thompson) `. -The temperature and kinetic energy tensor is not calculated by this +The temperature and kinetic energy tensor are not calculated by this compute, but rather by the temperature compute specified with the -command. If the kinetic energy is not included in the pressure, than +command. See the doc pages for individual compute temp variants for +an explation of how they calculate temperature and a symmetric tensor +(6-element vector) whose components are twice that of the traditional +KE tensor. That tensor is what appears in the pressure tensor formula +above. + +If the kinetic energy is not included in the pressure, than the temperature compute is not used and can be specified as NULL. Normally the temperature compute used by compute pressure should calculate the temperature of all atoms for consistency with the virial @@ -98,14 +105,13 @@ term, but any compute style that calculates temperature can be used Note that if desired the specified temperature compute can be one that subtracts off a bias to calculate a temperature using only the thermal velocity of the atoms (e.g., by subtracting a background streaming -velocity). -See the doc pages for individual :doc:`compute commands ` to determine -which ones include a bias. +velocity). See the doc pages for individual :doc:`compute commands +` to determine which ones include a bias. Also note that the :math:`N` in the first formula above is really -degrees-of-freedom divided by :math:`d` = dimensionality, where the DOF value -is calculated by the temperature compute. -See the various :doc:`compute temperature ` styles for details. +degrees-of-freedom divided by :math:`d` = dimensionality, where the +DOF value is calculated by the temperature compute. See the various +:doc:`compute temperature ` styles for details. A compute of this style with the ID of thermo_press is created when LAMMPS starts up, as if this command were in the input script: From 7eb105adbe4f43a214e4b260d5fa8ff35a70564f Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 21 Aug 2024 13:09:00 -0600 Subject: [PATCH 036/326] tweak --- doc/src/compute_pressure.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/compute_pressure.rst b/doc/src/compute_pressure.rst index 2b75721890..980a8f6481 100644 --- a/doc/src/compute_pressure.rst +++ b/doc/src/compute_pressure.rst @@ -63,7 +63,7 @@ ordered :math:`xx,` :math:`yy,` :math:`zz,` :math:`xy,` :math:`xz,` :math:`yz.` The equation for the :math:`(I,J)` components (where :math:`I` and :math:`J` are :math:`x`, :math:`y`, or :math:`z`) is similar to the above formula, except that the first term uses -components derived from the kinetic energy tensor and the second term +components related to the kinetic energy tensor and the second term uses components of the virial tensor: .. math:: From 466927b0dfce8b06b5c97d7b02c7824376d6056a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 21 Aug 2024 16:45:28 -0400 Subject: [PATCH 037/326] update code owners list --- .github/CODEOWNERS | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d1617cbb25..1a7a35e61f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -66,6 +66,9 @@ src/MANYBODY/pair_vashishta_table.* @andeplane src/MANYBODY/pair_atm.* @sergeylishchuk src/MANYBODY/pair_nb3b_screened.* @flodesani src/REPLICA/*_grem.* @dstelter92 +src/EXTRA-COMMAND/geturl.* @akohlmey +src/EXTRA-COMMAND/group_ndx.* @akohlmey +src/EXTRA-COMMAND/ndx_group.* @akohlmey src/EXTRA-COMPUTE/compute_stress_mop*.* @RomainVermorel src/EXTRA-COMPUTE/compute_born_matrix.* @Bibobu @athomps src/EXTRA-FIX/fix_deform_pressure.* @jtclemm @@ -96,9 +99,10 @@ src/fix.* @sjplimp src/force.* @sjplimp src/group.* @sjplimp src/improper.* @sjplimp +src/info.* @akohlmey src/kspace.* @sjplimp src/lmptyp.h @sjplimp -src/library.* @sjplimp +src/library.* @sjplimp @akohlmey src/main.cpp @sjplimp src/min_*.* @sjplimp src/memory.* @sjplimp @@ -106,12 +110,12 @@ src/modify.* @sjplimp @stanmoore1 src/molecule.* @sjplimp src/my_page.h @sjplimp src/my_pool_chunk.h @sjplimp -src/npair*.* @sjplimp -src/ntopo*.* @sjplimp -src/nstencil*.* @sjplimp -src/neighbor.* @sjplimp -src/nbin*.* @sjplimp -src/neigh_*.* @sjplimp +src/npair*.* @sjplimp @jtclemm +src/ntopo*.* @sjplimp @jtclemm +src/nstencil*.* @sjplimp @jtclemm +src/neighbor.* @sjplimp @jtclemm +src/nbin*.* @sjplimp @jtclemm +src/neigh_*.* @sjplimp @jtclemm src/output.* @sjplimp src/pair.* @sjplimp src/rcb.* @sjplimp From 827bc6361b3e71b155d32da703bf01f708220552 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 21 Aug 2024 20:18:28 -0400 Subject: [PATCH 038/326] fix spelling and formatting issues --- doc/src/compute_pressure.rst | 29 +++++---- doc/src/compute_temp_asphere.rst | 54 ++++++++--------- doc/src/compute_temp_cs.rst | 93 ++++++++++++++--------------- doc/src/compute_temp_profile.rst | 8 +-- doc/src/compute_temp_ramp.rst | 8 +-- doc/src/compute_temp_region_eff.rst | 2 +- 6 files changed, 96 insertions(+), 98 deletions(-) diff --git a/doc/src/compute_pressure.rst b/doc/src/compute_pressure.rst index 980a8f6481..439f701bd4 100644 --- a/doc/src/compute_pressure.rst +++ b/doc/src/compute_pressure.rst @@ -76,8 +76,8 @@ calculated. This includes a kinetic energy (temperature) term and the virial as the sum of pair, bond, angle, dihedral, improper, kspace (long-range), and fix contributions to the force on each atom. If any extra keywords are listed, then only those components are summed to -compute temperature or ke and/or the virial. The *virial* keyword -means include all terms except the kinetic energy *ke*\ . +compute temperature or ke and/or the virial. The *virial* keyword means +include all terms except the kinetic energy *ke*\ . The *pair/hybrid* keyword means to only include contribution from a sub-style in a *hybrid* or *hybrid/overlay* pair style. @@ -89,18 +89,18 @@ effects of periodic boundary conditions are discussed in The temperature and kinetic energy tensor are not calculated by this compute, but rather by the temperature compute specified with the -command. See the doc pages for individual compute temp variants for -an explation of how they calculate temperature and a symmetric tensor -(6-element vector) whose components are twice that of the traditional -KE tensor. That tensor is what appears in the pressure tensor formula +command. See the doc pages for individual compute temp variants for an +explanation of how they calculate temperature and a symmetric tensor +(6-element vector) whose components are twice that of the traditional KE +tensor. That tensor is what appears in the pressure tensor formula above. -If the kinetic energy is not included in the pressure, than -the temperature compute is not used and can be specified as NULL. -Normally the temperature compute used by compute pressure should -calculate the temperature of all atoms for consistency with the virial -term, but any compute style that calculates temperature can be used -(e.g., one that excludes frozen atoms or other degrees of freedom). +If the kinetic energy is not included in the pressure, than the +temperature compute is not used and can be specified as NULL. Normally +the temperature compute used by compute pressure should calculate the +temperature of all atoms for consistency with the virial term, but any +compute style that calculates temperature can be used (e.g., one that +excludes frozen atoms or other degrees of freedom). Note that if desired the specified temperature compute can be one that subtracts off a bias to calculate a temperature using only the thermal @@ -142,9 +142,8 @@ The ordering of values in the symmetric pressure tensor is as follows: :math:`p_{xx},` :math:`p_{yy},` :math:`p_{zz},` :math:`p_{xy},` :math:`p_{xz},` :math:`p_{yz}.` -The scalar and vector values calculated by this compute are -"intensive". The scalar and vector values will be in pressure -:doc:`units `. +The scalar and vector values calculated by this compute are "intensive". +The scalar and vector values will be in pressure :doc:`units `. Restrictions """""""""""" diff --git a/doc/src/compute_temp_asphere.rst b/doc/src/compute_temp_asphere.rst index c9b1e51532..d2af4278ad 100644 --- a/doc/src/compute_temp_asphere.rst +++ b/doc/src/compute_temp_asphere.rst @@ -41,8 +41,8 @@ translational and rotational kinetic energy. This differs from the usual :doc:`compute temp ` command, which assumes point particles with only translational kinetic energy. -Only finite-size particles (aspherical or spherical) can be included -in the group. For 3d finite-size particles, each has six degrees of +Only finite-size particles (aspherical or spherical) can be included in +the group. For 3d finite-size particles, each has six degrees of freedom (three translational, three rotational). For 2d finite-size particles, each has three degrees of freedom (two translational, one rotational). @@ -70,38 +70,39 @@ axis. It will also be the case for biaxial ellipsoids when exactly two of the semiaxes have the same length and the corresponding relative well depths are equal. -The translational kinetic energy is computed the same as is described -by the :doc:`compute temp ` command. The rotational -kinetic energy is computed as :math:`\frac12 I \omega^2`, where :math:`I` is -the inertia tensor for the aspherical particle and :math:`\omega` is its +The translational kinetic energy is computed the same as is described by +the :doc:`compute temp ` command. The rotational kinetic +energy is computed as :math:`\frac12 I \omega^2`, where :math:`I` is the +inertia tensor for the aspherical particle and :math:`\omega` is its angular velocity, which is computed from its angular momentum. .. note:: For :doc:`2d models `, particles are treated as - ellipsoids, not ellipses, meaning their moments of inertia will be the - same as in 3d. + ellipsoids, not ellipses, meaning their moments of inertia will be + the same as in 3d. A kinetic energy tensor, stored as a six-element vector, is also calculated by this compute. The formula for the components of the tensor is the same as the above formula, except that :math:`v^2` and -:math:`\omega^2` are replaced by :math:`v_x v_y` and :math:`\omega_x \omega_y` -for the :math:`xy` component, and the appropriate elements of the moment of -inertia tensor are used. The six components of the vector are ordered -:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +:math:`\omega^2` are replaced by :math:`v_x v_y` and :math:`\omega_x +\omega_y` for the :math:`xy` component, and the appropriate elements of +the moment of inertia tensor are used. The six components of the vector +are ordered :math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`. A symmetric tensor, stored as a six-element vector, is also calculated by this compute for use in the computation of a pressure tensor by the -:doc:`compute pressue ` command. The formula for -the components of the tensor is the same as the above expression for +:doc:`compute pressue ` command. The formula for the +components of the tensor is the same as the above expression for :math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and the :math:`v_i^2` and :math:`\omega^2` are replaced by :math:`v_x v_y` and :math:`\omega_x \omega_y` for the :math:`xy` component, and so on. And the appropriate elements of the moment of inertia tensor are used. Note that because it lacks the 1/2 factor, these tensor components are twice those of the traditional kinetic energy tensor. The six -components of the vector are ordered :math:`xx`, :math:`yy`, -:math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. +components of the vector are ordered :math:`xx`, :math:`yy`, :math:`zz`, +:math:`xy`, :math:`xz`, :math:`yz`. The number of atoms contributing to the temperature is assumed to be constant for the duration of the run; use the *dynamic/dof* option of @@ -144,14 +145,13 @@ Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (symmertic tensor), which can be accessed by -indices 1--6. These values can be used by any command that uses -global scalar or vector values from a compute as input. See the -:doc:`Howto output ` page for an overview of LAMMPS -output options. +vector of length 6 (symmetric tensor), which can be accessed by indices +1--6. These values can be used by any command that uses global scalar +or vector values from a compute as input. See the :doc:`Howto output +` page for an overview of LAMMPS output options. -The scalar value calculated by this compute is "intensive". The -vector values are "extensive". +The scalar value calculated by this compute is "intensive". The vector +values are "extensive". The scalar value is in temperature :doc:`units `. The vector values are in energy :doc:`units `. @@ -160,11 +160,11 @@ Restrictions """""""""""" This compute is part of the ASPHERE package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` page for more info. +LAMMPS was built with that package. See the :doc:`Build package +` page for more info. -This compute requires that atoms store angular momentum and a -quaternion as defined by the :doc:`atom_style ellipsoid ` -command. +This compute requires that atoms store angular momentum and a quaternion +as defined by the :doc:`atom_style ellipsoid ` command. All particles in the group must be finite-size. They cannot be point particles, but they can be aspherical or spherical as defined by their diff --git a/doc/src/compute_temp_cs.rst b/doc/src/compute_temp_cs.rst index 0620fea9b7..4908b12797 100644 --- a/doc/src/compute_temp_cs.rst +++ b/doc/src/compute_temp_cs.rst @@ -31,27 +31,27 @@ on the center-of-mass velocity of atom pairs that are bonded to each other. This compute is designed to be used with the adiabatic core/shell model of :ref:`(Mitchell and Fincham) `. See the :doc:`Howto coreshell ` page for an overview of -the model as implemented in LAMMPS. Specifically, this compute -enables correct temperature calculation and thermostatting of -core/shell pairs where it is desirable for the internal degrees of -freedom of the core/shell pairs to not be influenced by a thermostat. -A compute of this style can be used by any command that computes a -temperature via :doc:`fix_modify ` -(e.g., :doc:`fix temp/rescale `, :doc:`fix npt `). +the model as implemented in LAMMPS. Specifically, this compute enables +correct temperature calculation and thermostatting of core/shell pairs +where it is desirable for the internal degrees of freedom of the +core/shell pairs to not be influenced by a thermostat. A compute of +this style can be used by any command that computes a temperature via +:doc:`fix_modify ` (e.g., :doc:`fix temp/rescale +`, :doc:`fix npt `). -Note that this compute does not require all ions to be polarized, -hence defined as core/shell pairs. One can mix core/shell pairs and -ions without a satellite particle if desired. The compute will -consider the non-polarized ions according to the physical system. +Note that this compute does not require all ions to be polarized, hence +defined as core/shell pairs. One can mix core/shell pairs and ions +without a satellite particle if desired. The compute will consider the +non-polarized ions according to the physical system. For this compute, core and shell particles are specified by two -respective group IDs, which can be defined using the -:doc:`group ` command. The number of atoms in the two groups -must be the same and there should be one bond defined between a pair -of atoms in the two groups. Non-polarized ions which might also be -included in the treated system should not be included into either of -these groups, they are taken into account by the *group-ID* (second -argument) of the compute. +respective group IDs, which can be defined using the :doc:`group +` command. The number of atoms in the two groups must be the +same and there should be one bond defined between a pair of atoms in the +two groups. Non-polarized ions which might also be included in the +treated system should not be included into either of these groups, they +are taken into account by the *group-ID* (second argument) of the +compute. The temperature is calculated by the formula @@ -60,54 +60,53 @@ The temperature is calculated by the formula \text{KE} = \frac{\text{dim}}{2} N k_B T, where KE is the total kinetic energy of the group of atoms (sum of -:math:`\frac12 m v^2`), dim = 2 or 3 is the dimensionality of the simulation, -:math:`N` is the number of atoms in the group, :math:`k_B` is the Boltzmann -constant, and :math:`T` is the absolute temperature. Note that -the velocity of each core or shell atom used in the KE calculation is -the velocity of the center-of-mass (COM) of the core/shell pair the -atom is part of. +:math:`\frac12 m v^2`), dim = 2 or 3 is the dimensionality of the +simulation, :math:`N` is the number of atoms in the group, :math:`k_B` +is the Boltzmann constant, and :math:`T` is the absolute temperature. +Note that the velocity of each core or shell atom used in the KE +calculation is the velocity of the center-of-mass (COM) of the +core/shell pair the atom is part of. A symmetric tensor, stored as a six-element vector, is also calculated by this compute for use in the computation of a pressure tensor by the -:doc:`compute pressue ` command. The formula for -the components of the tensor is the same as the above expression for +:doc:`compute pressue ` command. The formula for the +components of the tensor is the same as the above expression for :math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the :math:`xy` component, and so on. Note that because it lacks the 1/2 factor, these tensor components are twice those of the traditional kinetic energy tensor. The six components of the vector are ordered -:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, -:math:`yz`. +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. The change this fix makes to core/shell atom velocities is essentially computing the temperature after a "bias" has been removed from the -velocity of the atoms. This "bias" is the velocity of the atom -relative to the center-of-mass velocity of the core/shell pair. If -this compute is used with a fix command that performs thermostatting -then this bias will be subtracted from each atom, thermostatting of -the remaining center-of-mass velocity will be performed, and the bias -will be added back in. This means the thermostatting will effectively -be performed on the core/shell pairs, instead of on the individual -core and shell atoms. Thermostatting fixes that work in this way -include :doc:`fix nvt `, :doc:`fix temp/rescale -`, :doc:`fix temp/berendsen `, -and :doc:`fix langevin `. +velocity of the atoms. This "bias" is the velocity of the atom relative +to the center-of-mass velocity of the core/shell pair. If this compute +is used with a fix command that performs thermostatting then this bias +will be subtracted from each atom, thermostatting of the remaining +center-of-mass velocity will be performed, and the bias will be added +back in. This means the thermostatting will effectively be performed on +the core/shell pairs, instead of on the individual core and shell atoms. +Thermostatting fixes that work in this way include :doc:`fix nvt +`, :doc:`fix temp/rescale `, :doc:`fix +temp/berendsen `, and :doc:`fix langevin +`. The internal energy of core/shell pairs can be calculated by the -:doc:`compute temp/chunk ` command, if chunks are defined -as core/shell pairs. See the :doc:`Howto coreshell ` doc -page for more discussion on how to do this. +:doc:`compute temp/chunk ` command, if chunks are +defined as core/shell pairs. See the :doc:`Howto coreshell +` doc page for more discussion on how to do this. Output info """"""""""" This compute calculates a global scalar (the temperature) and a global -vector of length 6 (symmertric tensor), which can be accessed by -indices 1--6. These values can be used by any command that uses -global scalar or vector values from a compute as input. +vector of length 6 (symmetric tensor), which can be accessed by indices +1--6. These values can be used by any command that uses global scalar +or vector values from a compute as input. -The scalar value calculated by this compute is "intensive". The -vector values are "extensive". +The scalar value calculated by this compute is "intensive". The vector +values are "extensive". The scalar value is in temperature :doc:`units `. The vector values are in energy :doc:`units `. diff --git a/doc/src/compute_temp_profile.rst b/doc/src/compute_temp_profile.rst index 47725cdcbc..9f6bbfc89c 100644 --- a/doc/src/compute_temp_profile.rst +++ b/doc/src/compute_temp_profile.rst @@ -210,10 +210,10 @@ will be for most thermostats. Related commands """""""""""""""" -:doc:`compute temp `, :doc:`compute temp/ramp - `, :doc:`compute temp/deform - `, :doc:`compute pressure - ` +:doc:`compute temp `, +:doc:`compute temp/ramp `, +:doc:`compute temp/deform `, +:doc:`compute pressure ` Default """"""" diff --git a/doc/src/compute_temp_ramp.rst b/doc/src/compute_temp_ramp.rst index d89a98fbea..643ca9d1dd 100644 --- a/doc/src/compute_temp_ramp.rst +++ b/doc/src/compute_temp_ramp.rst @@ -124,10 +124,10 @@ Restrictions Related commands """""""""""""""" -:doc:`compute temp `, :doc:`compute temp/profie - `, :doc:`compute temp/deform - `, :doc:`compute pressure - ` +:doc:`compute temp `, +:doc:`compute temp/profile `, +:doc:`compute temp/deform `, +:doc:`compute pressure ` Default """"""" diff --git a/doc/src/compute_temp_region_eff.rst b/doc/src/compute_temp_region_eff.rst index 12bc3f01a1..4193a0a7ec 100644 --- a/doc/src/compute_temp_region_eff.rst +++ b/doc/src/compute_temp_region_eff.rst @@ -38,7 +38,7 @@ contributions, as discussed by the :doc:`compute temp/eff ` command. Output info -"""""""""" +""""""""""" This compute calculates a global scalar (the temperature) and a global vector of length 6 (symmetric tensor), which can be accessed by From 79fd3852398c3f6d6c5eb737dd0125fa736f248b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 21 Aug 2024 20:22:01 -0400 Subject: [PATCH 039/326] whitespace --- src/REPLICA/verlet_split.cpp | 2 +- src/REPLICA/verlet_split.h | 2 +- 2 files changed, 2 insertions(+), 2 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 From 9cd83a951370283555aabdf8c4c913c2ad0509d3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 21 Aug 2024 22:29:54 -0400 Subject: [PATCH 040/326] remove dead code --- src/LATBOLTZ/fix_lb_fluid.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/LATBOLTZ/fix_lb_fluid.cpp b/src/LATBOLTZ/fix_lb_fluid.cpp index 7b6e8cf22b..773f60cf0e 100644 --- a/src/LATBOLTZ/fix_lb_fluid.cpp +++ b/src/LATBOLTZ/fix_lb_fluid.cpp @@ -2416,7 +2416,6 @@ void FixLbFluid::dump(const bigint step) // Transpose local arrays to fortran-order for paraview output std::vector density_2_fort(size2); std::vector velocity_2_fort(size2 * 3); - int indexc = 0; for (int i = 0; i < subNbx + 3; i++) for (int j = 0; j < subNby + 3; j++) for (int k = 0; k < subNbz + 3; k++) { @@ -2424,7 +2423,6 @@ void FixLbFluid::dump(const bigint step) velocity_2_fort[0 + 3 * (i + (subNbx + 3) * (j + (subNby + 3) * k))] = u_lb[i][j][k][0]; velocity_2_fort[1 + 3 * (i + (subNbx + 3) * (j + (subNby + 3) * k))] = u_lb[i][j][k][1]; velocity_2_fort[2 + 3 * (i + (subNbx + 3) * (j + (subNby + 3) * k))] = u_lb[i][j][k][2]; - indexc++; } MPI_File_write_all(dump_file_handle_raw, &density_2_fort[0], 1, fluid_density_2_mpitype, From 446b9ed7b370408c8cf5ca9639d18f4a4dccd539 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 21 Aug 2024 22:32:29 -0400 Subject: [PATCH 041/326] make compatible with -DLAMMPS_BIGBIG --- src/MDI/fix_mdi_qm.cpp | 2 +- src/MDI/fix_mdi_qmmm.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MDI/fix_mdi_qm.cpp b/src/MDI/fix_mdi_qm.cpp index 46071c5c90..e508315161 100644 --- a/src/MDI/fix_mdi_qm.cpp +++ b/src/MDI/fix_mdi_qm.cpp @@ -1114,7 +1114,7 @@ void FixMDIQM::unit_conversions() int compare_IDs(const int i, const int j, void *ptr) { - tagint *ids = (int *) ptr; + tagint *ids = (tagint *) ptr; if (ids[i] < ids[j]) return -1; if (ids[i] > ids[j]) return 1; return 0; diff --git a/src/MDI/fix_mdi_qmmm.cpp b/src/MDI/fix_mdi_qmmm.cpp index d45290811f..dc5653bfce 100644 --- a/src/MDI/fix_mdi_qmmm.cpp +++ b/src/MDI/fix_mdi_qmmm.cpp @@ -1962,7 +1962,7 @@ void FixMDIQMMM::unit_conversions() int compare_IDs(const int i, const int j, void *ptr) { - tagint *ids = (int *) ptr; + tagint *ids = (tagint *) ptr; if (ids[i] < ids[j]) return -1; if (ids[i] > ids[j]) return 1; return 0; From 4d6b998a7593fd2b5c4282cdeb130ad6dac485ba Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 00:00:27 -0400 Subject: [PATCH 042/326] flang may be called flang-new --- cmake/presets/clang.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/presets/clang.cmake b/cmake/presets/clang.cmake index fce451d803..f55c5be44a 100644 --- a/cmake/presets/clang.cmake +++ b/cmake/presets/clang.cmake @@ -1,10 +1,10 @@ # preset that will enable clang/clang++ with support for MPI and OpenMP (on Linux boxes) # prefer flang over gfortran, if available -find_program(CLANG_FORTRAN NAMES flang gfortran f95) +find_program(CLANG_FORTRAN NAMES flang-new flang gfortran f95) set(ENV{OMPI_FC} ${CLANG_FORTRAN}) get_filename_component(_tmp_fc ${CLANG_FORTRAN} NAME) -if (_tmp_fc STREQUAL "flang") +if ((_tmp_fc STREQUAL "flang") OR (_tmp_fc STREQUAL "flang-new")) set(FC_STD_VERSION "-std=f2018") set(BUILD_MPI OFF) else() From 4a291f8bedd79cb8e4f1c6e93f1313cbd542fcc7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 00:59:06 -0400 Subject: [PATCH 043/326] spelling --- doc/src/Intro_authors.rst | 4 ++-- doc/utils/sphinx-config/false_positives.txt | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/src/Intro_authors.rst b/doc/src/Intro_authors.rst index cc8bbb7ca7..78c8506421 100644 --- a/doc/src/Intro_authors.rst +++ b/doc/src/Intro_authors.rst @@ -51,7 +51,7 @@ lammps.org". General questions about LAMMPS should be posted in the * - `Jacob R. Gissinger `_ - Stevens Institute of Technology - jgissing at stevens.edu - - reactive molecular dynamics, macromolecular systems, type labels + - reactive molecular dynamics, macro-molecular systems, type labels * - James Goff - SNL - jmgoff at sandia.gov @@ -59,7 +59,7 @@ lammps.org". General questions about LAMMPS should be posted in the * - Megan McCarthy - SNL - megmcca at sandia.gov - - alloys, microstucture, machine learned potentials + - alloys, micro-structure, machine learned potentials * - Stan Moore - SNL - stamoor at sandia.gov diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index f1d9c0b748..ae4b52efee 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -407,6 +407,7 @@ Bybee bz Cadarache cadetblue +Caen Cagin calc calibrationfunctions @@ -1705,6 +1706,7 @@ jec Jeffers jewett Jewett +jgissing ji Jiang Jiao @@ -3550,6 +3552,7 @@ Steinhauser Stepaniants stepwise Stesmans +stevens stiffnesses Stillinger stk From f24b7c02edb0a6f51a7a9c97b018897d72388136 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 01:23:09 -0400 Subject: [PATCH 044/326] add label for plots selection --- tools/lammps-gui/chartviewer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 8d5c3f3d56..71ba07de4c 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -82,6 +82,7 @@ ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : top->addWidget(menu); top->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum)); top->addWidget(dummy); + top->addWidget(new QLabel("Plot:")); top->addWidget(smooth); top->addWidget(new QLabel(" Smooth:")); top->addWidget(window); From 5f58650d2c3129f2f35ac1a68f9c6304aab5b2c4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 22 Aug 2024 01:23:34 -0400 Subject: [PATCH 045/326] update LAMMPS-GUI documentation for recent changes --- doc/src/Howto_lammps_gui.rst | 162 +++++++++++++---------- doc/src/JPG/lammps-gui-chart.png | Bin 89581 -> 108113 bytes doc/src/JPG/lammps-gui-prefs-accel.png | Bin 33733 -> 32436 bytes doc/src/JPG/lammps-gui-prefs-editor.png | Bin 41615 -> 39899 bytes doc/src/JPG/lammps-gui-prefs-general.png | Bin 61270 -> 60580 bytes doc/src/JPG/lammps-gui-prefs-image.png | Bin 47477 -> 44816 bytes 6 files changed, 91 insertions(+), 71 deletions(-) diff --git a/doc/src/Howto_lammps_gui.rst b/doc/src/Howto_lammps_gui.rst index dc7d02425e..09ec0470a0 100644 --- a/doc/src/Howto_lammps_gui.rst +++ b/doc/src/Howto_lammps_gui.rst @@ -156,7 +156,7 @@ and then starts with an empty buffer in the *Editor* window. If arguments are given LAMMPS will use first command line argument as the file name for the *Editor* buffer and reads its contents into the buffer, if the file exists. All further arguments are ignored. Files can also be opened via -the ``File`` menu, the `Ctrl-O` (`Command-O` on macOS) keyboard shortcut +the *File* menu, the `Ctrl-O` (`Command-O` on macOS) keyboard shortcut or by drag-and-drop of a file from a graphical file manager into the editor window. If a file extension (e.g. ``.lmp``) has been registered with the graphical environment to launch LAMMPS-GUI, an existing input file can @@ -174,7 +174,7 @@ Running LAMMPS ^^^^^^^^^^^^^^ From within the LAMMPS-GUI main window LAMMPS can be started either from -the ``Run`` menu using the ``Run LAMMPS from Editor Buffer`` entry, by +the *Run* menu using the *Run LAMMPS from Editor Buffer* entry, by the keyboard shortcut `Ctrl-Enter` (`Command-Enter` on macOS), or by clicking on the green "Run" button in the status bar. All of these operations causes LAMMPS to process the entire input script in the @@ -189,7 +189,7 @@ using the contents of the input buffer for the run (via the interface), and **not** the original file it was read from. Thus, if there are unsaved changes in the buffer, they *will* be used. As an alternative, it is also possible to run LAMMPS by reading the contents -of a file from the ``Run LAMMPS from File`` menu entry or with +of a file from the *Run LAMMPS from File* menu entry or with `Ctrl-Shift-Enter`. This option may be required in some rare cases where the input uses some functionality that is not compatible with running LAMMPS from a string buffer. For consistency, any unsaved @@ -203,7 +203,7 @@ before LAMMPS can be run from a file. While LAMMPS is running, the contents of the status bar change. On the left side there is a text indicating that LAMMPS is running, which also indicates the number of active threads, when thread-parallel -acceleration was selected in the ``Preferences`` dialog. On the right +acceleration was selected in the *Preferences* dialog. On the right side, a progress bar is shown that displays the estimated progress for the current :doc:`run ` or :doc:`minimize ` command. @@ -230,8 +230,8 @@ Up to three additional windows may open during a run: More information on those windows and how to adjust their behavior and contents is given below. -An active LAMMPS run can be stopped cleanly by using either the ``Stop -LAMMPS`` entry in the ``Run`` menu, the keyboard shortcut `Ctrl-/` +An active LAMMPS run can be stopped cleanly by using either the *Stop +LAMMPS* entry in the *Run* menu, the keyboard shortcut `Ctrl-/` (`Command-/` on macOS), or by clicking on the red button in the status bar. This will cause the running LAMMPS process to complete the current timestep (or iteration for energy minimization) and then complete the @@ -261,7 +261,7 @@ The runs are counted and the run number for the current run is displayed in the window title. It is possible to change the behavior of LAMMPS-GUI in the preferences dialog to create a *new* *Output* window for every run or to not show the current *Output* window. It is also -possible to show or hide the *current* *Output* window from the ``View`` +possible to show or hide the *current* *Output* window from the *View* menu. The text in the *Output* window is read-only and cannot be modified, but @@ -298,18 +298,36 @@ plot of thermodynamic output of the LAMMPS calculation as shown below. The drop down menu on the top right allows selection of different properties that are computed and written to thermo output. Only one -property can be shown at a time. The plots are updated with new data as -the run progresses, so they can be used to visually monitor the -evolution of available properties. The window title shows the current -run number that this chart window corresponds to. Same as for the -*Output* window, the chart window is replaced on each new run, but the -behavior can be changed in the preferences dialog. +property can be shown at a time. The plots are updated regularly with +new data as the run progresses, so they can be used to visually monitor +the evolution of available properties. The update interval can be set +in the *Preferences* dialog. By default, the raw data for the selected +property is plotted as a blue graph. As soon as there are a sufficient +number of data points, there will be a second graph shown in red with a +smoothed version of the data. From the drop down menu on the top left, +you can select whether to plot only the raw data, only the smoothed +data or both. The smoothing uses a `Savitzky-Golay convolution filter +`_ The +window width (left) and order (right) parameters can be set in the boxes +next to the drop down menu. Default settings are 10 and 4 which means +that the smoothing window includes 10 points each to the left and the +right of the current data point and a fourth order polynomial is fit to +the data in the window. + +You can use the mouse to zoom into the graph (hold the left button and +drag to mark an area) or zoom out (right click) and you can reset the +view with a click to the "lens" button next to the data drop down menu. + +The window title shows the current run number that this chart window +corresponds to. Same as for the *Output* window, the chart window is +replaced on each new run, but the behavior can be changed in the +*Preferences* dialog. .. versionadded:: 1.6 Support for YAML export added -From the ``File`` menu on the top left, it is possible to save an image +From the *File* menu on the top left, it is possible to save an image of the currently displayed plot or export the data in either plain text columns (for use by plotting tools like `gnuplot `_ or `grace @@ -362,7 +380,7 @@ Variable Info During a run, it may be of interest to monitor the value of input script variables, for example to monitor the progress of loops. This can be -done by enabling the "Variables Window" in the ``View`` menu or by using +done by enabling the "Variables Window" in the *View* menu or by using the `Ctrl-Shift-W` keyboard shortcut. This shows info similar to the :doc:`info variables ` command in a separate window as shown below. @@ -375,7 +393,7 @@ Like for the *Output* and *Charts* windows, its content is continuously updated during a run. It will show "(none)" if there are no variables defined. Note that it is also possible to *set* :doc:`index style variables `, that would normally be set via command line -flags, via the "Set Variables..." dialog from the ``Run`` menu. +flags, via the "Set Variables..." dialog from the *Run* menu. LAMMPS-GUI automatically defines the variable "gui_run" to the current value of the run counter. That way it is possible to automatically record a separate log for each run attempt by using the command @@ -392,7 +410,7 @@ at the beginning of an input file. That would record logs to files Snapshot Image Viewer --------------------- -By selecting the ``Create Image`` entry in the ``Run`` menu, or by +By selecting the *Create Image* entry in the *Run* menu, or by hitting the `Ctrl-I` (`Command-I` on macOS) keyboard shortcut, or by clicking on the "palette" button in the status bar of the *Editor* window, LAMMPS-GUI sends a custom :doc:`write_dump image ` @@ -429,7 +447,7 @@ diameters are all the same. Buttons for toggling shininess and re-centering were added. The default image size, some default image quality settings, the view -style and some colors can be changed in the ``Preferences`` dialog +style and some colors can be changed in the *Preferences* dialog window. From the image viewer window further adjustments can be made: actual image size, high-quality (SSAO) rendering, anti-aliasing, view style, display of box or axes, zoom factor. The view of the system can @@ -441,14 +459,14 @@ display updated. The small palette icon on the top left is colored while LAMMPS is running to render the new image; it is grayed out when LAMMPS is finished. When there are many atoms to render and high quality images with anti-aliasing are requested, re-rendering may take -several seconds. From the ``File`` menu of the image window, the +several seconds. From the *File* menu of the image window, the current image can be saved to a file (keyboard shortcut `Ctrl-S`) or copied to the clipboard (keyboard shortcut `Ctrl-C`) for pasting the image into another application. .. versionadded:: 1.6 -From the ``File`` menu it is also possible to copy the current +From the *File* menu it is also possible to copy the current :doc:`dump image ` and :doc:`dump_modify ` commands to the clipboard so they can be pasted into a LAMMPS input file so that the visualization settings of the snapshot image can be repeated @@ -469,7 +487,7 @@ save or not save the buffer contents to a file. .. versionadded:: 1.6 The editor has an auto-save mode that can be enabled or disabled in the -``Preferences`` dialog. In auto-save mode, the editor buffer is +*Preferences* dialog. In auto-save mode, the editor buffer is automatically saved before running LAMMPS or before exiting LAMMPS-GUI. Context Specific Word Completion @@ -486,7 +504,7 @@ a word have been typed. The word can then be completed through selecting an entry by scrolling up and down with the cursor keys and selecting with the 'Enter' key or by clicking on the entry with the mouse. The automatic completion -pop-up can be disabled in the ``Preferences`` dialog, but the completion +pop-up can be disabled in the *Preferences* dialog, but the completion can still be requested manually by either hitting the 'Shift-TAB' key or by right-clicking with the mouse and selecting the option from the context menu. Most of the completion information is retrieved from the @@ -504,7 +522,7 @@ whitespace padding to commands, type specifiers, IDs and names. This reformatting is performed manually by hitting the 'Tab' key. It is also possible to have this done automatically when hitting the 'Enter' key to start a new line. This feature can be turned on or off in the -``Preferences`` dialog for ``Editor Settings`` with the +*Preferences* dialog for *Editor Settings* with the "Reformat with 'Enter'" checkbox. The amount of padding for multiple categories can be adjusted in the same dialog. @@ -566,56 +584,55 @@ for confirmation before continuing, since large restart files may require large amounts of RAM since the entire system must be read into RAM. Thus restart file for large simulations that have been run on an HPC cluster may overload a laptop or local -workstation. The ``Show Details...`` button will display a rough +workstation. The *Show Details...* button will display a rough estimate of the additional memory required. Menu ---- -The menu bar has entries ``File``, ``Edit``, ``Run``, ``View``, and -``About``. Instead of using the mouse to click on them, the individual +The menu bar has entries *File*, *Edit*, *Run*, *View*, and +*About*. Instead of using the mouse to click on them, the individual menus can also be activated by hitting the `Alt` key together with the corresponding underlined letter, that is `Alt-F` activates the -``File`` menu. For the corresponding activated sub-menus, the key +*File* menu. For the corresponding activated sub-menus, the key corresponding the underlined letters can be used to select entries instead of using the mouse. File ^^^^ -The ``File`` menu offers the usual options: +The *File* menu offers the usual options: -- ``New`` clears the current buffer and resets the file name to ``*unknown*`` -- ``Open`` opens a dialog to select a new file for editing in the *Editor* -- ``View`` opens a dialog to select a file for viewing in a *separate* window (read-only) with support for on-the-fly decompression as explained above. -- ``Inspect restart`` opens a dialog to select a file. If that file is a :doc:`LAMMPS restart ` three windows with :ref:`information about the file are opened `. -- ``Save`` saves the current file; if the file name is ``*unknown*`` +- *New* clears the current buffer and resets the file name to ``*unknown*`` +- *Open* opens a dialog to select a new file for editing in the *Editor* +- *View* opens a dialog to select a file for viewing in a *separate* window (read-only) with support for on-the-fly decompression as explained above. +- *Inspect restart* opens a dialog to select a file. If that file is a :doc:`LAMMPS restart ` three windows with :ref:`information about the file are opened `. +- *Save* saves the current file; if the file name is ``*unknown*`` a dialog will open to select a new file name -- ``Save As`` opens a dialog to select and new file name (and folder, if +- *Save As* opens a dialog to select and new file name (and folder, if desired) and saves the buffer to it. Writing the buffer to a different folder will also switch the current working directory to that folder. -- ``Quit`` exits LAMMPS-GUI. If there are unsaved changes, a dialog will +- *Quit* exits LAMMPS-GUI. If there are unsaved changes, a dialog will appear to either cancel the operation, or to save, or to not save the modified buffer. -In addition, up to 5 recent file names will be listed after the ``Open`` +In addition, up to 5 recent file names will be listed after the *Open* entry that allows re-opening recently opened files. This list is stored when quitting and recovered when starting again. Edit ^^^^ -The ``Edit`` menu offers the usual editor functions like ``Undo``, -``Redo``, ``Cut``, ``Copy``, ``Paste``. It can also open a -``Preferences`` dialog (keyboard shortcut `Ctrl-P`) and allows deletion -of all stored preferences and settings, so they are reset to their -default values. +The *Edit* menu offers the usual editor functions like *Undo*, *Redo*, +*Cut*, *Copy*, *Paste*. It can also open a *Preferences* dialog +(keyboard shortcut `Ctrl-P`) and allows deleting all stored preferences +and settings, so they are reset to their default values. Run ^^^ -The ``Run`` menu has options to start and stop a LAMMPS process. Rather +The *Run* menu has options to start and stop a LAMMPS process. Rather than calling the LAMMPS executable as a separate executable, the LAMMPS-GUI is linked to the LAMMPS library and thus can run LAMMPS internally through the :ref:`LAMMPS C-library interface ` @@ -635,11 +652,11 @@ from a string buffer. The LAMMPS calculations are run in a concurrent thread so that the GUI can stay responsive and be updated during the run. The GUI can retrieve data from the running LAMMPS instance and tell it to stop at the next -timestep. The ``Stop LAMMPS`` entry will do this by calling the +timestep. The *Stop LAMMPS* entry will do this by calling the :cpp:func:`lammps_force_timeout` library function, which is equivalent to a :doc:`timer timeout 0 ` command. -The ``Set Variables...`` entry opens a dialog box where +The *Set Variables...* entry opens a dialog box where :doc:`index style variables ` can be set. Those variables are passed to the LAMMPS instance when it is created and are thus set *before* a run is started. @@ -648,23 +665,23 @@ set *before* a run is started. :align: center :scale: 75% -The ``Set Variables`` dialog will be pre-populated with entries that +The *Set Variables* dialog will be pre-populated with entries that are set as index variables in the input and any variables that are used but not defined, if the built-in parser can detect them. New -rows for additional variables can be added through the ``Add Row`` -button and existing rows can be deleted by clicking on the ``X`` icons +rows for additional variables can be added through the *Add Row* +button and existing rows can be deleted by clicking on the *X* icons on the right. -The ``Create Image`` entry will send a :doc:`dump image ` +The *Create Image* entry will send a :doc:`dump image ` command to the LAMMPS instance, read the resulting file, and show it -in an ``Image Viewer`` window. +in an *Image Viewer* window. -The ``View in OVITO`` entry will launch `OVITO `_ +The *View in OVITO* entry will launch `OVITO `_ with a :doc:`data file ` containing the current state of the system. This option is only available if LAMMPS-GUI can find the OVITO executable in the system path. -The ``View in VMD`` entry will launch VMD with a :doc:`data file +The *View in VMD* entry will launch VMD with a :doc:`data file ` containing the current state of the system. This option is only available if LAMMPS-GUI can find the VMD executable in the system path. @@ -672,24 +689,24 @@ system path. View ^^^^ -The ``View`` menu offers to show or hide additional windows with log +The *View* menu offers to show or hide additional windows with log output, charts, slide show, variables, or snapshot images. The default settings for their visibility can be changed in the -``Preferences dialog``. +*Preferences* dialog. About ^^^^^ -The ``About`` menu finally offers a couple of dialog windows and an +The *About* menu finally offers a couple of dialog windows and an option to launch the LAMMPS online documentation in a web browser. The -``About LAMMPS-GUI`` entry displays a dialog with a summary of the +*About LAMMPS-GUI* entry displays a dialog with a summary of the configuration settings of the LAMMPS library in use and the version -number of LAMMPS-GUI itself. The ``Quick Help`` displays a dialog with -a minimal description of LAMMPS-GUI. The ``LAMMPS-GUI Howto`` entry +number of LAMMPS-GUI itself. The *Quick Help* displays a dialog with +a minimal description of LAMMPS-GUI. The *LAMMPS-GUI Howto* entry will open this documentation page from the online documentation in a web -browser window. The ``LAMMPS Manual`` entry will open the main page of +browser window. The *LAMMPS Manual* entry will open the main page of the LAMMPS online documentation in a web browser window. -The ``LAMMPS Tutorial`` entry will open the main page of the set of +The *LAMMPS Tutorial* entry will open the main page of the set of LAMMPS tutorials authored and maintained by Simon Gravelle at https://lammpstutorials.github.io/ in a web browser window. @@ -698,7 +715,7 @@ https://lammpstutorials.github.io/ in a web browser window. Preferences ----------- -The ``Preferences`` dialog allows customization of the behavior and +The *Preferences* dialog allows customization of the behavior and look of LAMMPS-GUI. The settings are grouped and each group is displayed within a tab. @@ -745,7 +762,7 @@ General Settings: otherwise each command will create a new image window. - *Path to LAMMPS Shared Library File:* this option is only visible when LAMMPS-GUI was compiled to load the LAMMPS library at run time - instead of being linked to it directly. With the ``Browse..`` button + instead of being linked to it directly. With the *Browse..* button or by changing the text, a different shared library file with a different compilation of LAMMPS with different settings or from a different version can be loaded. After this setting was changed, @@ -755,16 +772,19 @@ General Settings: log) of the application can be set. - *Select Text Font:* Opens a font selection dialog where the type and size for the text editor and log font of the application can be set. -- *GUI update interval:* Allows to set the time interval between GUI and - data updates during a LAMMPS run in milliseconds. The default is to - update the GUI every 10 milliseconds. This is good for many cases. - Set this to 100 milliseconds or more if LAMMPS-GUI consumes too many - resources during a run. For LAMMPS runs that run *very* fast (for - example in tutorial examples), however, data may be missed and through - lowering this interval, this can be corrected. However, this will - make the GUI use more resources, which may be a problem on some - computers with slower CPUs and a small number of CPU cores. This +- *Data update interval:* Allows to set the time interval between data + updates during a LAMMPS run in milliseconds. The default is to update + the data (for charts and output window) every 10 milliseconds. This + is good for many cases. Set this to 100 milliseconds or more if + LAMMPS-GUI consumes too many resources during a run. For LAMMPS runs + that run *very* fast (for example in tutorial examples), however, data + may be missed and through lowering this interval, this can be + corrected. However, this will make the GUI use more resources. This setting may be changed to a value between 1 and 1000 milliseconds. +- *Charts update interval:* Allows to set the time interval between redrawing + the plots in the *Charts* window in milliseconds. The default is to + redraw the plots every 500 milliseconds. This is just for the drawing, + data collection is managed with the previous setting. Accelerators: ^^^^^^^^^^^^^ @@ -780,7 +800,7 @@ Snapshot Image: ^^^^^^^^^^^^^^^ This tab allows setting defaults for the snapshot images displayed in -the ``Image Viewer`` window, such as its dimensions and the zoom factor +the *Image Viewer* window, such as its dimensions and the zoom factor applied. The *Antialias* switch will render images with twice the number of pixels for width and height and then smoothly scale the image back to the requested size. This produces higher quality images with diff --git a/doc/src/JPG/lammps-gui-chart.png b/doc/src/JPG/lammps-gui-chart.png index 6395e4815acb178b60b0f66a0fa5a06fae725253..5a926a721b6c465417f3fe386fa284a1bf382ce1 100644 GIT binary patch literal 108113 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≤G4H6kEP`OMhez@9V7y^TYk!$&HEmlc?EKAHxQef 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 N0m%e?`2D4jKLLDD;1&P? literal 89581 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%0Dxor^)!fDQ9NadU~j&A$J@9 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 diff --git a/doc/src/JPG/lammps-gui-prefs-accel.png b/doc/src/JPG/lammps-gui-prefs-accel.png index 25820c8d44c44f202624a1150f123d26f844b69a..392861e40b4cd7d5b04ee02bf821df77dda88cb2 100644 GIT binary patch literal 32436 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 literal 33733 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 W6cAv#dknutP*XXhoPGSV|Nj6y9q_vV diff --git a/doc/src/JPG/lammps-gui-prefs-editor.png b/doc/src/JPG/lammps-gui-prefs-editor.png index 5b5cffe209c8bba3623bf2d69dff4263a9c30319..b3cf05958333ac1624f34baeabee03d73630ca2c 100644 GIT binary patch literal 39899 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

RgWP-bSzEXT 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