From 6683976ce041a07824b7c7b1eb660057543921a1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 17 Apr 2024 04:45:16 -0400 Subject: [PATCH 01/85] 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 02/85] 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 03/85] 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 04/85] 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 bae822fea776335181d2e61eb0d0871f04c3c278 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Fri, 19 Jul 2024 15:23:49 +0000 Subject: [PATCH 05/85] 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 06/85] 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 ba51b59add6ddd4ccaeaefd13887e85d317f62b8 Mon Sep 17 00:00:00 2001 From: cjknight Date: Thu, 29 Aug 2024 12:28:54 -0500 Subject: [PATCH 07/85] 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 08/85] 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 09/85] 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 02f16251d41720a6477d211511aa6afc5da81715 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 29 Aug 2024 22:09:11 -0400 Subject: [PATCH 10/85] 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 11/85] 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 12/85] 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 13/85] 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 14/85] 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 15/85] 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 16/85] 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 17/85] 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 18/85] 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 19/85] 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 20/85] 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 21/85] 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 22/85] 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 23/85] 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 abc621ddbd0f8f5449f7595c494d3d2d35ba038a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 31 Aug 2024 04:33:31 -0400 Subject: [PATCH 24/85] 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 25/85] 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 26/85] 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 27/85] 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 28/85] 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 29/85] 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 30/85] 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 31/85] 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 32/85] 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 33/85] 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 34/85] 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 35/85] 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 36/85] 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 37/85] 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 38/85] 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 39/85] 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 40/85] 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 41/85] 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 42/85] 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 43/85] 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 44/85] 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 45/85] 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 46/85] 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 47/85] 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 48/85] 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 49/85] 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 50/85] 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 51/85] 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 52/85] 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 93d11c376d0eccde167e304b0aa1971bd28b518d Mon Sep 17 00:00:00 2001 From: EiPi Fun Date: Sun, 1 Sep 2024 15:47:46 +0800 Subject: [PATCH 53/85] 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 54/85] 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 55/85] 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 7c80b00f2389350686ab699fdadff3161f741f52 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 2 Sep 2024 06:26:27 -0400 Subject: [PATCH 56/85] 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 57/85] 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 58/85] 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 59/85] 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 60/85] 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 61/85] 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 62/85] 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 63/85] 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 64/85] 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 65/85] 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 66/85] 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 67/85] 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 68/85] 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 69/85] 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 29cd430da6b8da20ae9b10685866f17bbcb9931c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 4 Sep 2024 23:09:10 -0400 Subject: [PATCH 70/85] 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 71/85] 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 72/85] 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 5881a60f50991b3eba5105a96917a5892a85e641 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 5 Sep 2024 14:42:51 -0600 Subject: [PATCH 73/85] 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 03631aab00a2d43ef9d07d29dda4f32082788194 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 5 Sep 2024 21:46:32 -0400 Subject: [PATCH 74/85] 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 75/85] 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 76/85] 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 77/85] 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 78/85] 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 79/85] 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 80/85] 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 81/85] 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 82/85] 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 78342e5b6f06bc3d76a5897aaa5790fbf7efdb45 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 12:28:46 -0400 Subject: [PATCH 83/85] 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 42a7294bc1f2937af3e7b14d22d999d0be9e8e1f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 6 Sep 2024 14:00:27 -0400 Subject: [PATCH 84/85] 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 85/85] 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,"%");