From ef0f9c0451c2ffd425d035c50513f1e92f61504f Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 29 Jun 2018 12:26:19 +0100 Subject: [PATCH 01/72] First attempt at permanent PLUMED interface --- doc/src/fix_plumed.html | 118 +++++++ src/.gitignore | 5 + src/USER-PLUMED/Install.sh | 39 +++ src/USER-PLUMED/Plumed.cpp | 471 +++++++++++++++++++++++++++ src/USER-PLUMED/Plumed.h | 577 +++++++++++++++++++++++++++++++++ src/USER-PLUMED/Plumed.inc | 3 + src/USER-PLUMED/README | 55 ++++ src/USER-PLUMED/fix_plumed.cpp | 291 +++++++++++++++++ src/USER-PLUMED/fix_plumed.h | 53 +++ 9 files changed, 1612 insertions(+) create mode 100644 doc/src/fix_plumed.html create mode 100755 src/USER-PLUMED/Install.sh create mode 100644 src/USER-PLUMED/Plumed.cpp create mode 100644 src/USER-PLUMED/Plumed.h create mode 100644 src/USER-PLUMED/Plumed.inc create mode 100644 src/USER-PLUMED/README create mode 100644 src/USER-PLUMED/fix_plumed.cpp create mode 100644 src/USER-PLUMED/fix_plumed.h diff --git a/doc/src/fix_plumed.html b/doc/src/fix_plumed.html new file mode 100644 index 0000000000..4342403e84 --- /dev/null +++ b/doc/src/fix_plumed.html @@ -0,0 +1,118 @@ + +
LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
+ + + + + + +
+ +

fix plumed command +

+

Syntax: +

+
fix ID group-ID plumed keyword value ...
+
+ +

Examples: +

+
+  fix pl all plumed all plumed plumedfile plumed.dat outfile p.log 
+
+

Description: +

+

+This fix instructs LAMMPS to call the PLUMED library, which allows one +to perform various forms of trajectory analysis on the fly and to also use +methods such as umbrella sampling and metadynamics to enhance the sampling of +phase space. +

+

The documentation included here only describes the fix plumed command. This command +is LAMMPS specific whereas most of the functionality implemented in PLUMED will work with a +range of MD codes and also when PLUMED is used as a stand alone code. The full documentation +for PLUMED is available at this website +

+

The PLUMED library is developed at https://github.com/plumed/plumed2 +A detailed discussion of the code can be found in (PLUMED). +

+

There are some example scripts for using this package with LAMMPS in the +examples/USER/plumed directory. +

+
+ +

The command to call PLUMED above is reasonably self explanatory. Within the input file +for lammps the user is required to specify the input file for PLUMED and a file on which +to output the PLUMED log. The user must specify both of these arguments every time +PLUMED is to be used. Furthermore, the fix plumed command should appear in the LAMMPS input +file after the relevant input paramters (e.g. the timestep) have been set. +

+

The group-ID entry is ignored. LAMMPS will always pass all the atoms to PLUMED +and there can only be one instance of the plumed fix at a time. The plumed fix communicates +the minimum amount of information required and the PLUMED supports multiple, completely +independent collective variables, multiple independent biases and multiple independent forms of analysis. +There is thus really no restriction in functionality by only allowing only one plumed fix in the LAMMPS input. +

+

The plumedfile keyword allows the user to specify the name of the PLUMED input file. +Instructions as to what should be included in a plumed input file can be found in the +documentation for PLUMED. +

+

The outfile keyword allows the user to specify the name of a file on which to output +the PLUMED log. This log file normally just parots the information that is contained in the input +file. The names of the files on which the results from the various analyses that have been performed +using PLUMED will be specified by the user in the PLUMED input file. +

+

Restart, fix_modify, output, run start/stop, minimize info: +

+

+When performing a restart of a calculation that involves PLUMED you must include a RESTART command +in the PLUMED input file as detailed in the PLUMED documentation. When the restart +command is found in the PLUMED input PLUMED will append to the files that were generated in the run +that was performed previously. Furthermore, any history dependent bias potentials that were accumulated in +previous calculations will be read in when the restart command is included in the PLUMED input. +

+

The fix_modify energy option is not supported by this fix. +

+

Nothing is computed by this fix that can be accessed by any of the +output commands within LAMMPS. All the quantities +of interest can be output by commands that are native to PLUMED, however. +

+

Restrictions: +

+

This fix is part of the USER-PLUMED package. It is only enabled if +LAMMPS was built with that package. See the Making +LAMMPS section for more info. +

+

There can only be one plumed fix active at a time. Since the interface +communicates only the minimum amount of information and since the PLUMED module +itself can handle an arbitrary number of analysis and biasing methods, this is +not a limitation of functionality. +

+

Related commands: +

+

fix smd +

fix colvars +

+

Default: +

+

The default options are plumedfile = NULL and outfile = NULL +

+
+ + + +

(PLUMED) G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) DOI:https://doi.org/10.1016/j.cpc.2013.09.018 +

+ + diff --git a/src/.gitignore b/src/.gitignore index 92933ce5ee..b84ab65787 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -53,6 +53,11 @@ /colvarproxy_lammps_version.h /fix_colvars.cpp /fix_colvars.h +/fix_plumed.cpp +/fix_plumed.h +/Plumed.cpp +/Plumed.h +/Plumed.inc /dump_molfile.cpp /dump_molfile.h /molfile_interface.cpp diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh new file mode 100755 index 0000000000..3e0bef56ca --- /dev/null +++ b/src/USER-PLUMED/Install.sh @@ -0,0 +1,39 @@ +# Install/unInstall package files in LAMMPS +# edit 2 Makefile.package files to include/exclude ATC info + +if (test $1 = 1) then + + if (test -e ../Makefile.package) then + sed -i -e 's|^PKG_LIB =[ \t]*|& $(PLUMED_LOAD) |' ../Makefile.package + fi + + if (test -e ../Makefile.package.settings) then + # multiline form needed for BSD sed on Macs + sed -i -e '4 i \ +include ..\/Plumed.inc +' ../Makefile.package.settings + fi + + cp fix_plumed.cpp .. + cp fix_plumed.h .. + cp Plumed.h .. + cp Plumed.cpp .. + cp Plumed.inc .. + +elif (test $1 = 0) then + + if (test -e ../Makefile.package) then + sed -i -e 's/[^ \t]* \$(PLUMED_LOAD)[^ \t]* //' ../Makefile.package + fi + + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*Plumed\.inc.*$/d' ../Makefile.package.settings + fi + + rm -f ../fix_plumed.cpp + rm -f ../fix_plumed.h + rm -f ../Plumed.h + rm -f ../Plumed.cpp + rm -f ../Plumed.inc + +fi diff --git a/src/USER-PLUMED/Plumed.cpp b/src/USER-PLUMED/Plumed.cpp new file mode 100644 index 0000000000..f279c4a0eb --- /dev/null +++ b/src/USER-PLUMED/Plumed.cpp @@ -0,0 +1,471 @@ +/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Copyright (c) 2011-2018 The plumed team + (see the PEOPLE file at the root of the distribution for a list of names) + + See http://www.plumed.org for more information. + + This file is part of plumed, version 2. + + plumed is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + plumed is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with plumed. If not, see . ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ +#include "Plumed.h" + +#ifdef __PLUMED_HAS_DLOPEN +#include +#endif +#include +#include +#include +#include +#include + +/* DECLARATION USED ONLY IN THIS FILE */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Function pointer to plumed_create +*/ + +typedef void*(*plumed_create_pointer)(void); +/** + Function pointer to plumed_cmd +*/ +typedef void(*plumed_cmd_pointer)(void*,const char*,const void*); + +/** + Function pointer to plumed_finalize +*/ +typedef void(*plumed_finalize_pointer)(void*); + +/** + Holder for plumedmain function pointers. +*/ +typedef struct { + plumed_create_pointer create; + plumed_cmd_pointer cmd; + plumed_finalize_pointer finalize; +} plumed_plumedmain_function_holder; + +/** + Holder for plumed symbol table. +*/ +typedef struct { + int version; + plumed_plumedmain_function_holder functions; +} plumed_symbol_table_type; + +/** + Register for plumedmain function pointers +*/ +plumed_plumedmain_function_holder* plumed_kernel_register(const plumed_plumedmain_function_holder*); + +#ifdef __PLUMED_STATIC_KERNEL +/* Real interface */ +void*plumed_plumedmain_create(void); +void plumed_plumedmain_cmd(void*,const char*,const void*); +void plumed_plumedmain_finalize(void*); +#else +/* dummy interface */ +void*plumed_dummy_create(void); +void plumed_dummy_cmd(void*,const char*,const void*); +void plumed_dummy_finalize(void*); +#endif + +#ifdef __cplusplus +} +#endif + +/* END OF DECLARATION USED ONLY IN THIS FILE */ + +/* These are the dummy routines which are used when plumed is not available */ + +#ifdef __PLUMED_STATIC_KERNEL + +static int installed=1; + +#else + +static int installed=0; + +static int dummy; + +void*plumed_dummy_create(void) { + return (void*)&dummy; +} + +void plumed_dummy_cmd(void*p,const char*key,const void*val) { + (void) p; /* avoid warning on unused parameter */ + (void) key; /* avoid warning on unused parameter */ + (void) val; /* avoid warning on unused parameter */ + fprintf(stderr,"+++ ERROR: you are trying to use plumed, but it is not available +++\n"); + fprintf(stderr,"+++ Check your PLUMED_KERNEL environment variable +++\n"); + exit(1); +} + +void plumed_dummy_finalize(void*p) { + (void) p; /* avoid warning on unused parameter */ +} + +#endif + +plumed_plumedmain_function_holder* plumed_kernel_register(const plumed_plumedmain_function_holder* f) { + /* + Argument f is present for historical reasons but ignored in PLUMED>=2.5. + */ + if(f) { + if(getenv("PLUMED_LOAD_DEBUG")) { + fprintf(stderr,"+++ Ignoring registration at %p (%p,%p,%p) +++\n",(void*)f,(void*)f->create,(void*)f->cmd,(void*)f->finalize); + } + } +#ifdef __PLUMED_STATIC_KERNEL + /* + When __PLUMED_STATIC_KERNEL is defined, the function holder is initialized + to statically bound plumed_plumedmain_create, plumed_plumedmain_cmd, plumed_plumedmain_finalize and + cannot be changed. This saves from mis-set values for PLUMED_KERNEL. + */ + static plumed_plumedmain_function_holder g= {plumed_plumedmain_create,plumed_plumedmain_cmd,plumed_plumedmain_finalize}; +#else + /* + On the other hand, for runtime binding, we use dlsym to find the relevant functions. + Notice that as of PLUMED 2.5 self registration of the kernel is ignored, so argument f + is not used anymore. + Also notice that we should put some guard here for safe multithread calculations. + */ + static plumed_plumedmain_function_holder g= {plumed_dummy_create,plumed_dummy_cmd,plumed_dummy_finalize}; + static int first=1; +#ifdef __PLUMED_HAS_DLOPEN + const char* path; + char* pathcopy; + void* p; + char* pc; + plumed_symbol_table_type* plumed_symbol_table_ptr; + plumed_plumedmain_function_holder functions; + char* debug; + size_t strlenpath; + int dlopenmode; + /* + f==NULL is required here otherwise we would enter this block a second time + when plumed_kernel_register is called by the just loaded shared library. + */ + if(first && f==NULL) { + path=getenv("PLUMED_KERNEL"); + debug=getenv("PLUMED_LOAD_DEBUG"); +#ifdef __PLUMED_DEFAULT_KERNEL + /* + This variable allows a default path for the kernel to be hardcoded. + Can be useful for hardcoding the predefined plumed location + still allowing the user to override this choice setting PLUMED_KERNEL. + The path should be chosen at compile time adding e.g. + -D__PLUMED_DEFAULT_KERNEL=/opt/local/lib/libplumed.dylib + */ + /* This is required to add quotes */ +#define PLUMED_QUOTE_DIRECT(name) #name +#define PLUMED_QUOTE(macro) PLUMED_QUOTE_DIRECT(macro) + if(! (path && (*path) )) path=PLUMED_QUOTE(__PLUMED_DEFAULT_KERNEL); +#endif + if(path && (*path)) { + fprintf(stderr,"+++ Loading the PLUMED kernel runtime +++\n"); + fprintf(stderr,"+++ PLUMED_KERNEL=\"%s\" +++\n",path); + if(getenv("PLUMED_LOAD_NAMESPACE") && !strcmp(getenv("PLUMED_LOAD_NAMESPACE"),"LOCAL")) { + dlopenmode=RTLD_NOW|RTLD_LOCAL; + if(debug) fprintf(stderr,"+++ Loading with mode RTLD_NOW|RTLD_LOCAL +++\n"); + } else { + dlopenmode=RTLD_NOW|RTLD_GLOBAL; + if(debug) fprintf(stderr,"+++ Loading with mode RTLD_NOW|RTLD_GLOBAL +++\n"); + } + p=dlopen(path,dlopenmode); + if(!p) { + /* + Something went wrong. We try to remove "Kernel" string from the PLUMED_KERNEL variable + and load directly the shared library. Notice that this particular path is only expected + to be necessary when using PLUMED<=2.4 and the symbols in the main executable are + not visible. All the other cases (either PLUMED>=2.5 or symbols in the main executable visible) + should work correctly without entering here. + */ + fprintf(stderr,"+++ An error occurred. Message from dlopen(): %s +++\n",dlerror()); + strlenpath=strlen(path); + pathcopy=(char*) malloc(strlenpath+1); + strncpy(pathcopy,path,strlenpath+1); + pc=pathcopy+strlenpath-6; + while(pc>=pathcopy && memcmp(pc,"Kernel",6)) pc--; + if(pc>=pathcopy) { + memmove(pc, pc+6, strlen(pc)-5); + fprintf(stderr,"+++ Trying %s +++\n",pathcopy); + p=dlopen(pathcopy,dlopenmode); + if(!p) fprintf(stderr,"+++ An error occurred. Message from dlopen(): %s +++\n",dlerror()); + } + free(pathcopy); + } + if(p) { + functions.create=NULL; + functions.cmd=NULL; + functions.finalize=NULL; + /* + If the library was loaded, use dlsym to initialize pointers. + Notice that as of PLUMED 2.5 we ignore self registrations. + Pointers are searched in the form of a single pointer to a structure, which + is the standard way in PLUMED 2.5, as well as using alternative names used in + PLUMED 2.0 to 2.4 (e.g. plumedmain_create) and in some intermediate versions between + PLUMED 2.4 and 2.5 (e.g. plumed_plumedmain_create). The last chance is probably + unnecessary and might be removed at some point. + */ + plumed_symbol_table_ptr=(plumed_symbol_table_type*) dlsym(p,"plumed_symbol_table"); + if(plumed_symbol_table_ptr) functions=plumed_symbol_table_ptr->functions; + if(debug && plumed_symbol_table_ptr) { + fprintf(stderr,"+++ plumed_symbol_table version %i found at %p +++\n",plumed_symbol_table_ptr->version,(void*)plumed_symbol_table_ptr); + fprintf(stderr,"+++ plumed_function_pointers found at %p (%p,%p,%p) +++\n",(void*)&plumed_symbol_table_ptr->functions,(void*)functions.create,(void*)functions.cmd,(void*)functions.finalize); + } + + if(!functions.create) { + functions.create=(plumed_create_pointer) dlsym(p,"plumedmain_create"); + if(debug && functions.create) fprintf(stderr,"+++ %s found at %p +++\n","plumedmain_create",(void*)functions.create); + } + if(!functions.create) { + functions.create=(plumed_create_pointer) dlsym(p,"plumed_plumedmain_create"); + if(debug && functions.create) fprintf(stderr,"+++ %s found at %p +++\n","plumed_plumedmain_create",(void*)functions.create); + } + + if(!functions.cmd) { + functions.cmd=(plumed_cmd_pointer) dlsym(p,"plumedmain_cmd"); + if(debug && functions.cmd) fprintf(stderr,"+++ %s found at %p +++\n","plumedmain_cmd",(void*)functions.cmd); + } + if(!functions.cmd) { + functions.cmd=(plumed_cmd_pointer) dlsym(p,"plumed_plumedmain_cmd"); + if(debug && functions.cmd) fprintf(stderr,"+++ %s found at %p +++\n","plumed_plumedmain_cmd",(void*)functions.cmd); + } + + if(!functions.finalize) { + functions.finalize=(plumed_finalize_pointer) dlsym(p,"plumedmain_finalize"); + if(debug && functions.finalize) fprintf(stderr,"+++ %s found at %p +++\n","plumedmain_finalize",(void*)functions.finalize); + } + if(!functions.finalize) { + functions.finalize=(plumed_finalize_pointer) dlsym(p,"plumed_plumedmain_finalize"); + if(debug && functions.finalize) fprintf(stderr,"+++ %s found at %p +++\n","plumed_plumedmain_finalize",(void*)functions.finalize); + } + + if(functions.create && functions.cmd && functions.finalize) { + g=functions; + installed=1; + } else { + if(!functions.create) fprintf(stderr,"+++ pointer to (plumed_)plumedmain_create not found +++\n"); + if(!functions.cmd) fprintf(stderr,"+++ pointer to (plumed_)plumedmain_cmd not found +++\n"); + if(!functions.finalize) fprintf(stderr,"+++ pointer to (plumed_)plumedmain_finalize not found +++\n"); + } + } + } + first=0; + } +#endif +#endif + return &g; +} + +/* C wrappers: */ + +plumed plumed_create(void) { + plumed p; + plumed_plumedmain_function_holder*h=plumed_kernel_register(NULL); + assert(h); + assert(h->create); + p.p=(*(h->create))(); + assert(p.p); + return p; +} + +void plumed_cmd(plumed p,const char*key,const void*val) { + plumed_plumedmain_function_holder*h=plumed_kernel_register(NULL); + assert(p.p); + assert(h); + assert(h->cmd); + (*(h->cmd))(p.p,key,val); +} + +void plumed_finalize(plumed p) { + plumed_plumedmain_function_holder*h=plumed_kernel_register(NULL); + assert(p.p); + assert(h); + assert(h->finalize); + (*(h->finalize))(p.p); + p.p=NULL; +} + +int plumed_installed(void) { + plumed_kernel_register(NULL); + return installed; +} + +/* we declare a Plumed_g_main object here, in such a way that it is always available */ + +static plumed gmain= {NULL}; + +plumed plumed_global(void) { + return gmain; +} + +void plumed_gcreate(void) { + assert(gmain.p==NULL); + gmain=plumed_create(); +} + +void plumed_gcmd(const char*key,const void*val) { + assert(gmain.p); + plumed_cmd(gmain,key,val); +} + +void plumed_gfinalize(void) { + assert(gmain.p); + plumed_finalize(gmain); + gmain.p=NULL; +} + +int plumed_ginitialized(void) { + if(gmain.p) return 1; + else return 0; +} + +void plumed_c2f(plumed p,char*c) { + unsigned i; + unsigned char* cc; + /* + Convert the address stored in p.p into a proper FORTRAN string + made of only ASCII characters. For this to work, the two following + assertions should be satisfied: + */ + assert(CHAR_BIT<=12); + assert(sizeof(p.p)<=16); + + assert(c); + cc=(unsigned char*)&p.p; + for(i=0; i. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ +#ifndef __PLUMED_wrapper_Plumed_h +#define __PLUMED_wrapper_Plumed_h + +/** +\page ReferencePlumedH Reference for interfacing MD codes with PLUMED + + Plumed.h and Plumed.c contain the external plumed interface, which is used to + integrate it with MD engines. This interface is very general, and is expected + not to change across plumed versions. Plumed.c also implements a dummy version + of the interface, so as to allow a code to be fully linked even if the plumed + library is not available yet. These files could be directly included in the official + host MD distribution. In this manner, it will be sufficient to link the plumed + library at link time (on all systems) or directly at runtime (on system where + dynamic loading is enabled) to include plumed features. + + Why is Plumed.c written in C and not C++? The reason is that the resulting Plumed.o + needs to be linked with the host MD code immediately (whereas the rest of plumed + could be linked a posteriori). Imagine the MD code is written in FORTRAN: when we + link the Plumed.o file we would like not to need any C++ library linked. In this + manner, we do not need to know which C++ compiler will be used to compile plumed. + The C++ library is only linked to the "rest" of plumed, which actually use it. + Anyway, Plumed.c is written in such a manner to allow its compilation also in C++ + (C++ is a bit stricter than C; compatibility is checked when PlumedStatic.cpp, + which basically includes Plumed.c, is compiled with the C++ compiler). This will + allow e.g. MD codes written in C++ to just incorporate Plumed.c (maybe renamed into + Plumed.cpp), without the need of configuring a plain C compiler. + + Plumed interface can be used from C, C++ and FORTRAN. Everything concerning plumed + is hidden inside a single object type, which is described in C by a structure + (struct \ref plumed), in C++ by a class (PLMD::Plumed) and in FORTRAN by a + fixed-length string (CHARACTER(LEN=32)). Obviously C++ can use both struct + and class interfaces, but the first should be preferred. The reference interface + is the C one, whereas FORTRAN and C++ interfaces are implemented as wrappers + around it. + + In the C++ interface, all the routines are implemented as methods of PLMD::Plumed. + In the C and FORTRAN interfaces, all the routines are named plumed_*, to + avoid potential name clashes. Notice that the entire plumed library + is implemented in C++, and it is hidden inside the PLMD namespace. + If the used C++ compiler supports C++11, PLMD::Plumed object defines move semantics + so as to be usable in STL containers. That is, you can declare a std::vector. + + Handlers to the plumed object can be converted among different representations, + to allow inter-operability among languages. In C, there are tools to convert + to/from FORTRAN, whereas in C++ there are tools to convert to/from FORTRAN and C. + + These handlers only contain a pointer to the real structure, so that + when a plumed object is brought from one language to another, + it brings a reference to the same environment. + + Moreover, to simplify life in all cases where a single Plumed object is + required for the entire simulation (which covers most of the practical + applications with conventional MD codes) it is possible to take advantage + of a global interface, which is implicitly referring to a unique global instance. + The global object should still be initialized and finalized properly. + + The basic method to send a message to plumed is +\verbatim + (C) plumed_cmd + (C++) PLMD::Plumed::cmd + (FORTRAN) PLUMED_F_CMD +\endverbatim + + To initialize a plumed object, use: +\verbatim + (C) plumed_create + (C++) (constructor of PLMD::Plumed) + (FORTRAN) PLUMED_F_CREATE +\endverbatim + + To finalize it, use +\verbatim + (C) plumed_finalize + (C++) (destructor of PLMD::Plumed) + (FORTRAN) PLUMED_F_FINALIZE +\endverbatim + + To access to the global-object, use +\verbatim + (C) plumed_gcreate, plumed_gfinalize, plumed_gcmd + (C++) PLMD::Plumed::gcreate, PLMD::Plumed::gfinalize, PLMD::Plumed::gcmd + (FORTRAN) PLUMED_F_GCREATE, PLUMED_F_GFINALIZE, PLUMED_F_GCMD +\endverbatim + + To check if the global object has been initialized, use +\verbatim + (C) plumed_ginitialized + (C++) PLMD::Plumed::ginitialized + (FORTRAN) PLUMED_F_GINITIALIZED +\endverbatim + + To check if plumed library is available (this is useful for runtime linking), use +\verbatim + (C) plumed_installed + (C++) PLMD::Plumed::installed + (FORTRAN) PLUMED_F_INSTALLED +\endverbatim + + To convert handlers use +\verbatim + (C) plumed_c2f (C to FORTRAN) + (C) plumed_f2c (FORTRAN to C) + (C++) Plumed(plumed) constructor (C to C++) + (C++) operator plumed() cast (C++ to C) + (C++) Plumed(char*) constructor (FORTRAN to C++) + (C++) toFortran(char*) (C++ to FORTRAN) +\endverbatim + +\verbatim + FORTRAN interface + SUBROUTINE PLUMED_F_INSTALLED(i) + INTEGER, INTENT(OUT) :: i + SUBROUTINE PLUMED_F_GINITIALIZED(i) + INTEGER, INTENT(OUT) :: i + SUBROUTINE PLUMED_F_GCREATE() + SUBROUTINE PLUMED_F_GCMD(key,val) + CHARACTER(LEN=*), INTENT(IN) :: key + UNSPECIFIED_TYPE, INTENT(INOUT) :: val(*) + SUBROUTINE PLUMED_F_GFINALIZE() + SUBROUTINE PLUMED_F_GLOBAL(p) + CHARACTER(LEN=32), INTENT(OUT) :: p + SUBROUTINE PLUMED_F_CREATE(p) + CHARACTER(LEN=32), INTENT(OUT) :: p + SUBROUTINE PLUMED_F_CMD(p,key,val) + CHARACTER(LEN=32), INTENT(IN) :: p + CHARACTER(LEN=*), INTENT(IN) :: key + UNSPECIFIED_TYPE, INTENT(INOUT) :: val(*) + SUBROUTINE PLUMED_F_FINALIZE(p) + CHARACTER(LEN=32), INTENT(IN) :: p +\endverbatim + + The main routine is "cmd", which accepts two arguments: + key is a string containing the name of the command + val is the argument. it is declared const so as to use allow passing const objects, but in practice plumed + is going to modify val in several cases (using a const_cast). + In some cases val can be omitted: just pass a NULL pointer (in C++, val is optional and can be omitted). + The set of possible keys is the real API of the plumed library, and will be expanded with time. + New commands will be added, but backward compatibility will be retained as long as possible. + + To pass plumed a callback function use the following syntax (not available in FORTRAN yet) +\verbatim + plumed_function_holder ff; + ff.p=your_function; + plumed_cmd(plumed,"xxxx",&ff); +\endverbatim + (this is passing the your_function() function to the "xxxx" command) +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generic function pointer */ +typedef void (*plumed_function_pointer)(void); + +/** + \brief Holder for function pointer. + + To pass plumed a callback function use the following syntax: +\verbatim + plumed_function_holder ff; + ff.p=your_function; + plumed_cmd(plumed,"xxxx",&ff); +\endverbatim + (this is going to pass the your_function() function to the "xxxx" command) +*/ + +typedef struct { + plumed_function_pointer p; +} plumed_function_holder; + +/** + \brief Main plumed object + + This is an object containing a Plumed instance, which should be used in + the MD engine. It should first be initialized with plumed_create(), + then it communicates with the MD engine using plumed_cmd(). Finally, + before the termination, it should be deallocated with plumed_finalize(). + Its interface is very simple and general, and is expected + not to change across plumed versions. See \ref ReferencePlumedH. +*/ +typedef struct { + /** + \private + \brief Void pointer holding the real PlumedMain structure + */ + void*p; +} plumed; + +/** \relates plumed + \brief Constructor + + \return The constructed plumed object +*/ +plumed plumed_create(void); + +/** \relates plumed + \brief Tells p to execute a command + + \param p The plumed object on which command is acting + \param key The name of the command to be executed + \param val The argument. It is declared as const to allow calls like plumed_cmd(p,"A","B"), + but for some choice of key it can change the content +*/ +void plumed_cmd(plumed p,const char*key,const void*val); + +/** \relates plumed + \brief Destructor + + \param p The plumed object to be deallocated +*/ +void plumed_finalize(plumed p); + +/** \relates plumed + \brief Check if plumed is installed (for runtime binding) + + \return 1 if plumed is installed, 0 otherwise +*/ +int plumed_installed(void); + +/** \relates plumed + \brief Retrieves an handler to the global structure. +*/ +plumed plumed_global(void); + +/** \relates plumed + \brief Check if the global interface has been initialized + + \return 1 if plumed has been initialized, 0 otherwise +*/ +int plumed_ginitialized(void); + +/* global C interface, working on a global object */ + +/** \relates plumed + \brief Constructor for the global interface. + + \note Equivalent to plumed_create(), but initialize the static global plumed object +*/ +void plumed_gcreate(void); + +/** \relates plumed + \brief Tells to the global interface to execute a command. + + \param key The name of the command to be executed + \param val The argument. It is declared as const to allow calls like plumed_gcmd("A","B"), + but for some choice of key it can change the content + + \note Equivalent to plumed_cmd(), but acting on the global plumed object. + It thus does not require the plumed object to be specified. +*/ +void plumed_gcmd(const char* key,const void* val); + +/** \relates plumed + \brief Destructor for the global interface. + + \note Equivalent to plumed_finalize(), but acting on the global plumed object. + It thus does not require the plumed object to be specified. +*/ +void plumed_gfinalize(void); + +/* routines to convert char handler from/to plumed objects */ + +/** \related plumed + \brief Converts a C handler to a FORTRAN handler + + \param p The C handler + \param c The FORTRAN handler (a char[32]) + + This function can be used to convert a plumed object created in C to + a plumed handler that can be used in FORTRAN. +\verbatim +#include +int main(int argc,char*argv[]){ + plumed p; + p=plumed_create(); + char fortran_handler[32]; + plumed_c2f(p,fortran_handler); + printf("DEBUG: this is a string representation for the plumed handler: %s\n",fortran_handler); + fortran_routine(fortran_handler); + plumed_finalize(p); + return 0; +} +\endverbatim + Here `fortran_routine` is a routine implemented in FORTRAN that manipulates the + fortran_handler. +*/ +void plumed_c2f(plumed p,char* c); + +/** \related plumed + \brief Converts a FORTRAN handler to a C handler + \param c The FORTRAN handler (a char[32]) + \return The C handler + + This function can be used to convert a plumed object created in FORTRAN + to a plumed handler that can be used in C. +\verbatim +void c_routine(char handler[32]){ + plumed p; + p=plumed_f2c(handler); + plumed_cmd(p,"init",NULL); +} +\endverbatim + Here `c_routine` is a C function that can be called from FORTRAN + and interact with the provided plumed handler. +*/ +plumed plumed_f2c(const char* c); + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus + +/* this is to include the NULL pointer */ +#include + +/* C++ interface is hidden in PLMD namespace (same as plumed library) */ +namespace PLMD { + +/** + C++ wrapper for \ref plumed. + + This class provides a C++ interface to PLUMED. +*/ + +class Plumed { + /** + C structure. + */ + plumed main; + /** + keeps track if the object was created from scratch using + the defaults destructor (reference=false) or if it was imported + from C or FORTRAN (reference=true). In the latter case, the + plumed_finalize() method is not called when destructing the object, + since it is expected to be finalized in the C/FORTRAN code + */ + bool reference; +public: + /** + Check if plumed is installed (for runtime binding) + \return true if plumed is installed, false otherwise + \note Equivalent to plumed_installed() but returns a bool + */ + static bool installed(); + /** + Check if global-plumed has been initialized + \return true if global plumed object (see global()) is initialized (i.e. if gcreate() has been + called), false otherwise. + \note Equivalent to plumed_ginitialized() but returns a bool + */ + static bool ginitialized(); + /** + Initialize global-plumed. + \note Equivalent to plumed_gcreate() + */ + static void gcreate(); + /** + Send a command to global-plumed + \param key The name of the command to be executed + \param val The argument. It is declared as const to allow calls like gcmd("A","B"), + but for some choice of key it can change the content + \note Equivalent to plumed_gcmd() + */ + static void gcmd(const char* key,const void* val); + /** + Finalize global-plumed + */ + static void gfinalize(); + /** + Returns the Plumed global object + \return The Plumed global object + */ + static Plumed global(); + /** + Constructor. + \note Performs the same task a plumed_create() + */ + Plumed(); + /** + Clone a Plumed object from a FORTRAN char* handler + \param c The FORTRAN handler (a char[32]). + + \attention The Plumed object created in this manner + will not finalize the corresponding plumed structure. + It is expected that the FORTRAN code calls plumed_c_finalize for it + */ +// to have maximum portability of this file I do not use the explicit keyword here +// I thus add a suppress command for cppcheck +// cppcheck-suppress noExplicitConstructor + Plumed(const char*c); + /** + Clone a Plumed object from a C plumed structure + \param p The C plumed structure. + + \attention The Plumed object created in this manner + will not finalize the corresponding plumed structure. + It is expected that the C code calls plumed_finalize for it + */ +// to have maximum portability of this file I do not use the explicit keyword here +// I thus add a suppress command for cppcheck +// cppcheck-suppress noExplicitConstructor + Plumed(plumed p); +private: + /** Copy constructor is disabled (private and unimplemented) + The problem here is that after copying it will not be clear who is + going to finalize the corresponding plumed structure. + */ + Plumed(const Plumed&); + /** Assignment operator is disabled (private and unimplemented) + The problem here is that after copying it will not be clear who is + going to finalize the corresponding plumed structure. + */ + Plumed&operator=(const Plumed&); +public: + /* + PLUMED 2.4 requires a C++11 compiler. + Anyway, since Plumed.h file might be redistributed with other codes + and it should be possible to combine it with earlier PLUMED versions, + we here explicitly check if C+11 is available before enabling move semantics. + This could still create problems if a compiler 'cheats', setting __cplusplus > 199711L + but not supporting move semantics. Hopefully will not happen! + */ +#if __cplusplus > 199711L + /** Move constructor. + Only if move semantics is enabled. + It allows storing PLMD::Plumed objects in STL containers. + */ + Plumed(Plumed&&); + /** Move assignment. + Only if move semantics is enabled. + */ + Plumed& operator=(Plumed&&); +#endif + /** + Retrieve the C plumed structure for this object + */ + operator plumed()const; + /** + Retrieve a FORTRAN handler for this object + \param c The FORTRAN handler (a char[32]). + */ + void toFortran(char*c)const; + /** + Send a command to this plumed object + \param key The name of the command to be executed + \param val The argument. It is declared as const to allow calls like p.cmd("A","B"), + but for some choice of key it can change the content + \note Equivalent to plumed_cmd() + */ + void cmd(const char*key,const void*val=NULL); + /** + Destructor + + Destructor is virtual so as to allow correct inheritance from Plumed object. + To avoid linking problems with g++, I specify "inline" also here (in principle + it should be enough to specify it down in the definition of the function, but + for some reason that I do not understand g++ does not inline it properly in that + case and complains when Plumed.h is included but Plumed.o is not linked. Anyway, the + way it is done here seems to work properly). + */ + inline virtual ~Plumed(); +}; + +/* All methods are inlined so as to avoid the compilation of an extra c++ file */ + +inline +bool Plumed::installed() { + return plumed_installed(); +} + +inline +Plumed::Plumed(): + main(plumed_create()), + reference(false) +{} + +inline +Plumed::Plumed(const char*c): + main(plumed_f2c(c)), + reference(true) +{} + +inline +Plumed::Plumed(plumed p): + main(p), + reference(true) +{} + +#if __cplusplus > 199711L +inline +Plumed::Plumed(Plumed&& p): + main(p.main), + reference(p.reference) +{} + +inline +Plumed& Plumed::operator=(Plumed&& p) { + main=p.main; + reference=p.reference; + return *this; +} +#endif + +inline +Plumed::operator plumed()const { + return main; +} + +inline +void Plumed::toFortran(char*c)const { + plumed_c2f(main,c); +} + +inline +void Plumed::cmd(const char*key,const void*val) { + plumed_cmd(main,key,val); +} + +inline +Plumed::~Plumed() { + if(!reference)plumed_finalize(main); +} + +inline +bool Plumed::ginitialized() { + return plumed_ginitialized(); +} + +inline +void Plumed::gcreate() { + plumed_gcreate(); +} + +inline +void Plumed::gcmd(const char* key,const void* val) { + plumed_gcmd(key,val); +} + +inline +void Plumed::gfinalize() { + plumed_gfinalize(); +} + +inline +Plumed Plumed::global() { + return plumed_global(); +} + +} + +#endif + + +#endif diff --git a/src/USER-PLUMED/Plumed.inc b/src/USER-PLUMED/Plumed.inc new file mode 100644 index 0000000000..26bc028d66 --- /dev/null +++ b/src/USER-PLUMED/Plumed.inc @@ -0,0 +1,3 @@ +# PLUMED: runtime installation +PLUMED_LOAD= /data/gt/mycodes/plumed2/src/lib/libplumedWrapper.a -ldl +PLUMED_DEPENDENCIES= diff --git a/src/USER-PLUMED/README b/src/USER-PLUMED/README new file mode 100644 index 0000000000..02a0229e57 --- /dev/null +++ b/src/USER-PLUMED/README @@ -0,0 +1,55 @@ +This package implements the "fix plumed" command, which can be used +in a LAMMPS input script. + +The fix allows enhanced sampling methods such as umbrella sampling and +metadynamics to be used. Furthermore, PLUMED can be used to perform a +wide range of analyses on trajectories on the fly as they are generated. + +The package uses the "PLUMED" library, whose source code is not included +in the LAMMPS source code distribution. The files in the USER-PLUMED package +folder implement an interface between LAMMPS and PLUMED, that are written +and maintained by Gareth Tribello (gareth.tribello@gmail.com). + +PLUMED must instead be downloaded and compiled separately to LAMMPS. This building +and compiling of PLUEMD can be done before or after the building of LAMMPS as LAMMPS +calls PLUMED as a dynamic library. If you wish to use PLUMED with LAMMPS, however, +you must run the command: + +make yes-user-plumed + +before compiling LAMMPS. Furthermore, you must ensure that PLUMED is in your +PATH when running a LAMMPS calculation that takes advantage of PLUMED. If +PLUMED is not in the PATH an error will be returned whenever LAMMPS encounters +the fix plumed command in its input. To be clear, however, LAMMPS will run if +it is compiled with fix-plumed enabled on inputs that do not contain a fix +plumed command when PLUMED is not in the PATH. + +More info about the PLUMED library can be found at: + +www.plumed.org + +and in the reference articles: + +PLUMED2: New feathers for an old bird +G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, +Comp. Phys. Comm 185, 604 (2014) +https://doi.org/10.1016/j.cpc.2013.09.018 + +PLUMED: a portable plugin for free energy calculations with molecular dynamics +M. Bonomi, D. Branduardi, G. Bussi, C. Camilloni, D. Provasi, P. Raiteri, D. Donadio, F. Marinelli, F. Pietrucci, R.A. Broglia and M. Parrinello +Comp. Phys. Comm. 180, 1961 (2009) +https://doi.org/10.1016/j.cpc.2009.05.011 + +Instructions explaining how to use PLUMED and LAMMPS in tandem can be found on the PLUMED website, which also gives +numerous example scripts for PLUMED as well as citations to articles that dcoment the various methods that are +implemented within PLUMED. + +There are also example scripts for using this package in the folder +examples/USER/colvars, as well as on the GitHub page for PLUMED. + +Please contact Gareth Tribello (gareth.tribello@gmail.com) for questions +regarding this package. + +--------------------------------- + +Version: 2016-12-22 diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp new file mode 100644 index 0000000000..91afd367b1 --- /dev/null +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -0,0 +1,291 @@ +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "atom.h" +#include "update.h" +#include "force.h" +#include "respa.h" +#include "domain.h" +#include "error.h" +#include "group.h" +#include "fix_plumed.h" +#include "universe.h" +#include "compute.h" +#include "modify.h" +#include "pair.h" + +using namespace LAMMPS_NS; +using namespace PLMD; +using namespace FixConst; + +#define INVOKED_SCALAR 1 + +FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + p(NULL), + nlocal(0), + gatindex(NULL), + masses(NULL), + charges(NULL) +{ +// Not sure this is really necessary: + if (!atom->tag_enable) error->all(FLERR,"fix plumed requires atom tags"); +// Initialize plumed: + p=new PLMD::Plumed; + +// If the -partition option is activated then enable inter-partition communication + if (universe->existflag == 1) { + int me; + MPI_Comm inter_comm; + MPI_Comm_rank(world,&me); + // Change MPI_COMM_WORLD to universe->uworld which seems more appropriate + MPI_Comm_split(universe->uworld,me,0,&inter_comm); + p->cmd("GREX setMPIIntracomm",&world); + if (me == 0) { + // The inter-partition communicator is only defined for the root in + // each partition (a.k.a. world). This is due to the way in which + // it is defined inside plumed. + p->cmd("GREX setMPIIntercomm",&inter_comm); + } + p->cmd("GREX init",NULL); + } + // The general communicator is independent of the existence of partitions, + // if there are partitions, world is defined within each partition, + // whereas if partitions are not defined then world is equal to MPI_COMM_WORLD. + p->cmd("setMPIComm",&world); + +// Set up units +// LAMMPS units wrt kj/mol - nm - ps +// Set up units + + if (force->boltz == 1.0){ +// LAMMPS units lj + p->cmd("setNaturalUnits"); + } else { + double energyUnits=1.0; + double lengthUnits=1.0; + double timeUnits=1.0; + if (force->boltz == 0.0019872067){ +// LAMMPS units real :: kcal/mol; angstrom; fs + energyUnits=4.184; + lengthUnits=0.1; + timeUnits=0.001; + } else if (force->boltz == 8.617343e-5){ +// LAMMPS units metal :: eV; angstrom; ps + energyUnits=96.48530749925792; + lengthUnits=0.1; + timeUnits=1.0; + } else if (force->boltz == 1.3806504e-23){ +// LAMMPS units si :: Joule, m; s + energyUnits=0.001; + lengthUnits=1.e-9; + timeUnits=1.e-12; + } else if (force->boltz == 1.3806504e-16){ +// LAMMPS units cgs :: erg; cms;, s + energyUnits=6.0221418e13; + lengthUnits=1.e-7; + timeUnits=1.e-12; + } else if (force->boltz == 3.16681534e-6){ +// LAMMPS units electron :: Hartree, bohr, fs + energyUnits=2625.5257; + lengthUnits=0.052917725; + timeUnits=0.001; + } else error->all(FLERR,"Odd LAMMPS units, plumed cannot work with that"); + p->cmd("setMDEnergyUnits",&energyUnits); + p->cmd("setMDLengthUnits",&lengthUnits); + p->cmd("setMDTimeUnits",&timeUnits); + } + +// Read fix parameters: + int next=0; + for(int i=3;iexistflag == 1){ + // Each replica writes an independent log file + // with suffix equal to the replica id + char str_num[32], logFile[1024]; + sprintf(str_num,".%d",universe->iworld); + strncpy(logFile,arg[i],1024-32); + strcat(logFile,str_num); + p->cmd("setLogFile",logFile); + next=0; + } else { + // partition option not used + p->cmd("setLogFile",arg[i]); + next=0; + } + } + else if(!strcmp(arg[i],"plumedfile"))next=2; + else if(next==2){ + p->cmd("setPlumedDat",arg[i]); + next=0; + } + else error->all(FLERR,"syntax error in fix plumed - use 'fix name plumed plumedfile plumed.dat outfile plumed.out' "); + } + if(next==1) error->all(FLERR,"missing argument for outfile option"); + if(next==2) error->all(FLERR,"missing argument for plumedfile option"); + + p->cmd("setMDEngine","LAMMPS"); + + int natoms=int(atom->natoms); + p->cmd("setNatoms",&natoms); + + double dt=update->dt; + p->cmd("setTimestep",&dt); + + virial_flag=1; + scalar_flag = 1; + +// This is the real initialization: + p->cmd("init"); + +// Define compute to calculate potential energy + char *id_pe = (char *) "thermo_pe"; + int ipe = modify->find_compute(id_pe); + c_pe = modify->compute[ipe]; + // Trigger computation of potential energy every step + c_pe->addstep(update->ntimestep+1); +} + +FixPlumed::~FixPlumed() +{ + delete p; +} + +int FixPlumed::setmask() +{ + // set with a bitmask how and when apply the force from plumed + int mask = 0; + mask |= POST_FORCE; + mask |= THERMO_ENERGY; + mask |= POST_FORCE_RESPA; + mask |= MIN_POST_FORCE; + return mask; +} + +void FixPlumed::init() +{ + if (strcmp(update->integrate_style,"respa") == 0) + nlevels_respa = ((Respa *) update->integrate)->nlevels; +} + +void FixPlumed::setup(int vflag) +{ + if (strcmp(update->integrate_style,"verlet") == 0) + post_force(vflag); + else { + ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1); + post_force_respa(vflag,nlevels_respa-1,0); + ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1); + } +} + +void FixPlumed::min_setup(int vflag) +{ + post_force(vflag); +} + +void FixPlumed::post_force(int vflag) +{ + int update_gatindex=0; +// Try to find out if the domain decomposition has been updated: + if(nlocal!=atom->nlocal){ + if(charges) delete [] charges; + if(masses) delete [] masses; + if(gatindex) delete [] gatindex; + nlocal=atom->nlocal; + gatindex=new int [nlocal]; + masses=new double [nlocal]; + charges=new double [nlocal]; + update_gatindex=1; + } else { + for(int i=0;itag[i]-1){ + update_gatindex=1; + break; + } + } + } + MPI_Allreduce(MPI_IN_PLACE,&update_gatindex,1,MPI_INT,MPI_SUM,world); + +// In case it has been updated, rebuild the local mass/charges array +// and tell plumed about the change: + if(update_gatindex){ + for(int i=0;itag[i]-1; + masses[i]=atom->mass[atom->type[i]]; + if(atom->q) charges[i]=atom->q[atom->type[i]]; + } + p->cmd("setAtomsNlocal",&nlocal); + p->cmd("setAtomsGatindex",gatindex); + } + + +// set up local virial/box. plumed uses full 3x3 matrices + double virial[3][3]; + for(int i=0;i<3;i++) for(int j=0;j<3;j++) virial[i][j]=0.0; + double box[3][3]; + for(int i=0;i<3;i++) for(int j=0;j<3;j++) box[i][j]=0.0; + box[0][0]=domain->h[0]; + box[1][1]=domain->h[1]; + box[2][2]=domain->h[2]; + box[2][1]=domain->h[3]; + box[2][0]=domain->h[4]; + box[1][0]=domain->h[5]; + +// local variable with timestep: + int step=update->ntimestep; + +// pass all pointers to plumed: + p->cmd("setStep",&step); + p->cmd("setPositions",&atom->x[0][0]); + p->cmd("setBox",&box[0][0]); + p->cmd("setForces",&atom->f[0][0]); + p->cmd("setMasses",&masses[0]); + if(atom->q) p->cmd("setCharges",&charges[0]); + p->cmd("setVirial",&virial[0][0]); + p->cmd("getBias",&bias); + +// pass the energy + double pot_energy = 0.; + c_pe->compute_scalar(); + c_pe->invoked_flag |= INVOKED_SCALAR; + pot_energy = c_pe->scalar; + int nprocs; + // Divide energy by number of processors + // Plumed wants it this way + MPI_Comm_size(world,&nprocs); + pot_energy /= nprocs; + p->cmd("setEnergy",&pot_energy); + // Trigger computation of potential energy every step + c_pe->addstep(update->ntimestep+1); + +// do the real calculation: + p->cmd("calc"); + +// retransform virial to lammps representation: + Fix::virial[0]=-virial[0][0]; + Fix::virial[1]=-virial[1][1]; + Fix::virial[2]=-virial[2][2]; + Fix::virial[3]=-virial[0][1]; + Fix::virial[4]=-virial[0][2]; + Fix::virial[5]=-virial[1][2]; +} + +void FixPlumed::post_force_respa(int vflag, int ilevel, int iloop) +{ + if (ilevel == nlevels_respa-1) post_force(vflag); +} + +void FixPlumed::min_post_force(int vflag) +{ + post_force(vflag); +} + +double FixPlumed::compute_scalar() +{ + return bias; +} + + diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h new file mode 100644 index 0000000000..055dc6f1d4 --- /dev/null +++ b/src/USER-PLUMED/fix_plumed.h @@ -0,0 +1,53 @@ + +#ifdef FIX_CLASS + +FixStyle(plumed,FixPlumed) + +#else + +#ifndef LMP_FIX_PLUMED_H +#define LMP_FIX_PLUMED_H + +#include "fix.h" +#include "compute.h" +// the plumed header that defines the class// +#include "../Plumed.h" + +namespace LAMMPS_NS { + +class FixPlumed : public Fix { + public: + FixPlumed(class LAMMPS *, int, char **); + ~FixPlumed(); + int setmask(); + void init(); + void setup(int); + void min_setup(int); + void post_force(int); + void post_force_respa(int, int, int); + void min_post_force(int); + double compute_scalar(); + + private: +// pointer to plumed object: + PLMD::Plumed*p; +// number of atoms local to this process: + int nlocal; +// array of atom indexes local to this process: + int*gatindex; +// array of masses for local atoms: + double*masses; +// array of charges for local atoms: + double*charges; +// this is something to enable respa + int nlevels_respa; +// output bias potential + double bias; +// Compute for the energy + class Compute *c_pe; +}; + +}; + +#endif +#endif From f5642ac292b88824c76ef4a566d0d0274ca854c5 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 29 Jun 2018 16:28:53 +0100 Subject: [PATCH 02/72] Removed reference to local version of PLUMED from interface --- src/USER-PLUMED/Install.sh | 6 ++---- src/USER-PLUMED/Plumed.inc | 3 --- 2 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 src/USER-PLUMED/Plumed.inc diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh index 3e0bef56ca..01552d7134 100755 --- a/src/USER-PLUMED/Install.sh +++ b/src/USER-PLUMED/Install.sh @@ -10,7 +10,7 @@ if (test $1 = 1) then if (test -e ../Makefile.package.settings) then # multiline form needed for BSD sed on Macs sed -i -e '4 i \ -include ..\/Plumed.inc +PLUMED_LOAD=Plumed.o -ldl ' ../Makefile.package.settings fi @@ -18,7 +18,6 @@ include ..\/Plumed.inc cp fix_plumed.h .. cp Plumed.h .. cp Plumed.cpp .. - cp Plumed.inc .. elif (test $1 = 0) then @@ -27,13 +26,12 @@ elif (test $1 = 0) then fi if (test -e ../Makefile.package.settings) then - sed -i -e '/^include.*Plumed\.inc.*$/d' ../Makefile.package.settings + sed -i -e '/PLUMED_LOAD=Plumed.o -ldl/d' ../Makefile.package.settings fi rm -f ../fix_plumed.cpp rm -f ../fix_plumed.h rm -f ../Plumed.h rm -f ../Plumed.cpp - rm -f ../Plumed.inc fi diff --git a/src/USER-PLUMED/Plumed.inc b/src/USER-PLUMED/Plumed.inc deleted file mode 100644 index 26bc028d66..0000000000 --- a/src/USER-PLUMED/Plumed.inc +++ /dev/null @@ -1,3 +0,0 @@ -# PLUMED: runtime installation -PLUMED_LOAD= /data/gt/mycodes/plumed2/src/lib/libplumedWrapper.a -ldl -PLUMED_DEPENDENCIES= From 9b4452959180bb492f7cf2bccc9e488f046e3014 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 29 Jun 2018 17:46:51 +0100 Subject: [PATCH 03/72] Added an example --- examples/USER/plumed/data.peptide | 6531 ++++++++++++++++++++++++ examples/USER/plumed/in.peptide-plumed | 40 + examples/USER/plumed/plumed.dat | 6 + 3 files changed, 6577 insertions(+) create mode 100644 examples/USER/plumed/data.peptide create mode 100644 examples/USER/plumed/in.peptide-plumed create mode 100644 examples/USER/plumed/plumed.dat diff --git a/examples/USER/plumed/data.peptide b/examples/USER/plumed/data.peptide new file mode 100644 index 0000000000..f9dfb6e485 --- /dev/null +++ b/examples/USER/plumed/data.peptide @@ -0,0 +1,6531 @@ +LAMMPS Description + + 2004 atoms + 1365 bonds + 786 angles + 207 dihedrals + 12 impropers + + 14 atom types + 18 bond types + 31 angle types + 21 dihedral types + 2 improper types + + 36.840194 64.211560 xlo xhi + 41.013691 68.385058 ylo yhi + 29.768095 57.139462 zlo zhi + +Masses + + 1 12.0110 + 2 12.0110 + 3 15.9990 + 4 1.0080 + 5 14.0070 + 6 12.0110 + 7 12.0110 + 8 12.0110 + 9 15.9990 + 10 1.0080 + 11 1.0080 + 12 32.0660 + 13 16.0000 + 14 1.0100 + +Pair Coeffs + + 1 0.110000 3.563595 0.110000 3.563595 + 2 0.080000 3.670503 0.010000 3.385415 + 3 0.120000 3.029056 0.120000 2.494516 + 4 0.022000 2.351973 0.022000 2.351973 + 5 0.200000 3.296325 0.200000 2.761786 + 6 0.020000 4.053589 0.010000 3.385415 + 7 0.055000 3.875410 0.010000 3.385415 + 8 0.070000 3.550053 0.070000 3.550053 + 9 0.152100 3.153782 0.152100 3.153782 + 10 0.046000 0.400014 0.046000 0.400014 + 11 0.030000 2.420037 0.030000 2.420037 + 12 0.450000 3.563595 0.450000 3.563595 + 13 0.152100 3.150570 0.152100 3.150570 + 14 0.046000 0.400014 0.046000 0.400014 + +Bond Coeffs + + 1 249.999999 1.490000 + 2 620.000001 1.230000 + 3 370.000000 1.345000 + 4 322.000001 1.111000 + 5 319.999999 1.430000 + 6 440.000000 0.997000 + 7 222.500001 1.538000 + 8 330.000001 1.080000 + 9 230.000000 1.490000 + 10 309.000001 1.111000 + 11 305.000000 1.375000 + 12 340.000001 1.080000 + 13 334.300000 1.411000 + 14 545.000001 0.960000 + 15 222.500001 1.530000 + 16 198.000000 1.818000 + 17 239.999999 1.816000 + 18 450.000000 0.957200 + +Angle Coeffs + + 1 33.000000 109.500000 30.000000 2.163000 + 2 50.000000 120.000000 0.000000 0.000000 + 3 34.000000 123.000000 0.000000 0.000000 + 4 80.000000 121.000000 0.000000 0.000000 + 5 80.000000 116.500000 0.000000 0.000000 + 6 80.000000 122.500000 0.000000 0.000000 + 7 35.500000 108.400000 5.400000 1.802000 + 8 50.000000 107.000000 0.000000 0.000000 + 9 70.000000 113.500000 0.000000 0.000000 + 10 48.000000 108.000000 0.000000 0.000000 + 11 35.000000 117.000000 0.000000 0.000000 + 12 51.800000 107.500000 0.000000 0.000000 + 13 33.430000 110.100000 22.530000 2.179000 + 14 52.000000 108.000000 0.000000 0.000000 + 15 50.000000 109.500000 0.000000 0.000000 + 16 35.000000 111.000000 0.000000 0.000000 + 17 45.800000 122.300000 0.000000 0.000000 + 18 49.300000 107.500000 0.000000 0.000000 + 19 40.000000 120.000000 35.000000 2.416200 + 20 30.000000 120.000000 22.000000 2.152500 + 21 45.200000 120.000000 0.000000 0.000000 + 22 65.000000 108.000000 0.000000 0.000000 + 23 35.500000 109.000000 5.400000 1.802000 + 24 36.000000 115.000000 0.000000 0.000000 + 25 58.350000 113.500000 11.160000 2.561000 + 26 58.000000 114.500000 0.000000 0.000000 + 27 26.500000 110.100000 22.530000 2.179000 + 28 34.000000 95.000000 0.000000 0.000000 + 29 46.100000 111.300000 0.000000 0.000000 + 30 51.500000 109.500000 0.000000 0.000000 + 31 55.000000 104.520000 0.000000 0.000000 + +Dihedral Coeffs + + 1 0.200000 1 180 1.000000 + 2 1.800000 1 0 1.000000 + 3 0.000000 1 0 1.000000 + 4 1.600000 1 0 0.500000 + 5 2.500000 2 180 0.500000 + 6 2.500000 2 180 1.000000 + 7 0.600000 1 0 1.000000 + 8 0.200000 3 0 1.000000 + 9 0.230000 2 180 1.000000 + 10 0.040000 3 0 1.000000 + 11 1.400000 1 0 1.000000 + 12 3.100000 2 180 1.000000 + 13 4.200000 2 180 1.000000 + 14 3.100000 2 180 0.500000 + 15 0.990000 2 180 1.000000 + 16 2.400000 2 180 1.000000 + 17 0.195000 3 0 1.000000 + 18 0.240000 1 180 0.500000 + 19 0.370000 3 0 0.500000 + 20 0.280000 3 0 1.000000 + 21 0.010000 3 0 1.000000 + +Improper Coeffs + + 1 120.000000 0.000000 + 2 20.000000 0.000000 + +Atoms + + 1 1 1 0.510 43.99993 58.52678 36.78550 0 0 0 + 2 1 2 -0.270 45.10395 58.23499 35.86693 0 0 0 + 3 1 3 -0.510 43.81519 59.54928 37.43995 0 0 0 + 4 1 4 0.090 45.71714 57.34797 36.13434 0 0 0 + 5 1 4 0.090 45.72261 59.13657 35.67007 0 0 0 + 6 1 4 0.090 44.66624 58.09539 34.85538 0 0 0 + 7 1 5 -0.470 43.28193 57.47427 36.91953 0 0 0 + 8 1 6 0.070 42.07157 57.45486 37.62418 0 0 0 + 9 1 1 0.510 42.19985 57.57789 39.12163 0 0 0 + 10 1 3 -0.510 41.88641 58.62251 39.70398 0 0 0 + 11 1 7 -0.180 41.25052 56.15304 37.41811 0 0 0 + 12 1 8 0.000 40.88511 55.94638 35.97460 0 0 0 + 13 1 8 -0.115 41.48305 54.96372 35.11223 0 0 0 + 14 1 8 -0.115 39.74003 56.60996 35.46443 0 0 0 + 15 1 8 -0.115 41.02111 54.75715 33.80764 0 0 0 + 16 1 8 -0.115 39.26180 56.39194 34.12024 0 0 0 + 17 1 8 0.110 39.92330 55.46092 33.27135 0 0 0 + 18 1 9 -0.540 39.48164 55.22919 31.91865 0 0 0 + 19 1 10 0.310 43.60633 56.61693 36.52744 0 0 0 + 20 1 4 0.090 41.49619 58.31145 37.30543 0 0 0 + 21 1 4 0.090 41.88498 55.29476 37.72657 0 0 0 + 22 1 4 0.090 40.30899 56.19690 38.00627 0 0 0 + 23 1 11 0.115 42.31528 54.36176 35.44606 0 0 0 + 24 1 11 0.115 39.26330 57.31216 36.13230 0 0 0 + 25 1 11 0.115 41.62695 54.10606 33.19490 0 0 0 + 26 1 11 0.115 38.42147 56.98236 33.78612 0 0 0 + 27 1 10 0.430 38.78233 55.86217 31.74004 0 0 0 + 28 1 5 -0.470 42.79933 56.56370 39.79000 0 0 0 + 29 1 7 -0.020 42.96709 56.75379 41.28116 0 0 0 + 30 1 1 0.510 43.83019 55.68988 41.92255 0 0 0 + 31 1 3 -0.510 44.98521 55.93104 42.21713 0 0 0 + 32 1 10 0.310 43.13466 55.75696 39.30966 0 0 0 + 33 1 4 0.090 42.04692 56.86721 41.83507 0 0 0 + 34 1 4 0.090 43.52938 57.66324 41.43329 0 0 0 + 35 1 5 -0.470 43.26792 54.43342 42.07043 0 0 0 + 36 1 7 -0.020 43.92411 53.28930 42.63327 0 0 0 + 37 1 1 0.510 43.51012 53.02289 44.10510 0 0 0 + 38 1 3 -0.510 42.35086 53.07863 44.50806 0 0 0 + 39 1 10 0.310 42.28859 54.34993 41.90323 0 0 0 + 40 1 4 0.090 44.98464 53.47473 42.54797 0 0 0 + 41 1 4 0.090 43.49715 52.54787 41.97419 0 0 0 + 42 1 5 -0.470 44.51925 52.64535 44.88133 0 0 0 + 43 1 6 0.070 44.47588 52.35054 46.24397 0 0 0 + 44 1 1 0.510 45.40218 53.34579 46.94730 0 0 0 + 45 1 3 -0.510 45.23520 54.55893 46.92038 0 0 0 + 46 1 7 -0.180 44.77960 50.82831 46.50232 0 0 0 + 47 1 8 0.000 43.72184 49.84551 45.98093 0 0 0 + 48 1 8 -0.115 44.14810 49.00477 44.97195 0 0 0 + 49 1 8 -0.115 42.43499 49.66652 46.53541 0 0 0 + 50 1 8 -0.115 43.26154 48.00434 44.46769 0 0 0 + 51 1 8 -0.115 41.54732 48.79670 45.95416 0 0 0 + 52 1 8 -0.115 41.98220 47.90746 44.95574 0 0 0 + 53 1 10 0.310 45.39510 52.50937 44.42482 0 0 0 + 54 1 4 0.090 43.51312 52.58974 46.67092 0 0 0 + 55 1 4 0.090 44.89709 50.54313 47.56965 0 0 0 + 56 1 4 0.090 45.72096 50.49337 46.01654 0 0 0 + 57 1 11 0.115 45.13573 49.07933 44.54134 0 0 0 + 58 1 11 0.115 42.07869 50.34816 47.29358 0 0 0 + 59 1 11 0.115 43.47793 47.29281 43.68456 0 0 0 + 60 1 11 0.115 40.52625 48.76134 46.30425 0 0 0 + 61 1 11 0.115 41.35446 47.13287 44.54059 0 0 0 + 62 1 5 -0.470 46.41448 52.86278 47.68291 0 0 0 + 63 1 6 0.070 47.25136 53.68184 48.51163 0 0 0 + 64 1 1 0.510 48.33905 54.40097 47.73886 0 0 0 + 65 1 3 -0.510 49.27132 53.85220 47.16549 0 0 0 + 66 1 7 -0.180 47.88329 52.75681 49.60227 0 0 0 + 67 1 7 -0.140 48.82515 53.51102 50.61578 0 0 0 + 68 1 12 -0.090 48.12492 55.00373 51.43039 0 0 0 + 69 1 2 -0.220 47.70783 54.12980 53.04072 0 0 0 + 70 1 10 0.310 46.67199 51.90088 47.73231 0 0 0 + 71 1 4 0.090 46.64593 54.43552 48.99310 0 0 0 + 72 1 4 0.090 48.41361 51.90817 49.11968 0 0 0 + 73 1 4 0.090 47.08748 52.35196 50.26341 0 0 0 + 74 1 4 0.090 49.16067 52.81305 51.41238 0 0 0 + 75 1 4 0.090 49.73705 53.67062 50.00155 0 0 0 + 76 1 4 0.090 47.18593 54.84215 53.71488 0 0 0 + 77 1 4 0.090 48.69939 53.91624 53.49408 0 0 0 + 78 1 4 0.090 47.19749 53.18294 52.76264 0 0 0 + 79 1 5 -0.470 48.34472 55.71775 47.80498 0 0 0 + 80 1 2 -0.110 49.37792 56.51754 47.29492 0 0 0 + 81 1 10 0.310 47.51777 56.11617 48.19410 0 0 0 + 82 1 4 0.090 50.41495 56.13038 47.38980 0 0 0 + 83 1 4 0.090 49.23515 57.51193 47.76940 0 0 0 + 84 1 4 0.090 49.28612 56.52094 46.18773 0 0 0 + 85 2 13 -0.834 52.28049 45.72878 41.48140 -1 0 1 + 86 2 14 0.417 51.97210 46.07066 40.64218 -1 0 1 + 87 2 14 0.417 52.43689 44.79855 41.31868 -1 0 1 + 88 3 13 -0.834 43.84472 45.66062 47.17660 -2 -1 -1 + 89 3 14 0.417 43.42120 44.88337 46.81226 -2 -1 -1 + 90 3 14 0.417 44.31099 46.04907 46.43636 -2 -1 -1 + 91 4 13 -0.834 51.27805 50.25403 54.67397 0 0 -1 + 92 4 14 0.417 50.81295 50.23728 53.83753 0 0 -1 + 93 4 14 0.417 52.00273 49.63953 54.55795 0 0 -1 + 94 5 13 -0.834 44.71976 53.72011 56.43834 -1 0 -1 + 95 5 14 0.417 44.56050 53.84218 55.50241 -1 0 -1 + 96 5 14 0.417 44.91937 52.78829 56.52828 -1 0 -1 + 97 6 13 -0.834 37.07074 62.07204 53.35752 -1 -1 -1 + 98 6 14 0.417 64.17057 61.77089 52.49043 -2 -1 -1 + 99 6 14 0.417 37.90147 62.52273 53.20573 -1 -1 -1 + 100 7 13 -0.834 38.31817 66.10834 49.17406 0 -1 0 + 101 7 14 0.417 37.39300 65.93985 48.99534 0 -1 0 + 102 7 14 0.417 38.36506 66.20528 50.12520 0 -1 0 + 103 8 13 -0.834 60.90915 45.97690 35.53863 -1 -1 1 + 104 8 14 0.417 61.19898 46.87819 35.39745 -1 -1 1 + 105 8 14 0.417 59.98680 45.97855 35.28269 -1 -1 1 + 106 9 13 -0.834 54.33913 64.47210 51.00391 -1 -2 0 + 107 9 14 0.417 54.43191 63.71377 50.42724 -1 -2 0 + 108 9 14 0.417 55.16289 64.94980 50.90662 -1 -2 0 + 109 10 13 -0.834 44.58017 54.03749 53.84708 1 0 -1 + 110 10 14 0.417 43.87040 54.43768 53.34476 1 0 -1 + 111 10 14 0.417 45.02999 53.47261 53.21873 1 0 -1 + 112 11 13 -0.834 45.48693 52.12363 34.38241 0 -1 1 + 113 11 14 0.417 45.46898 52.67450 33.59981 0 -1 1 + 114 11 14 0.417 44.61476 52.22113 34.76457 0 -1 1 + 115 12 13 -0.834 60.15770 61.68799 54.74753 1 0 -2 + 116 12 14 0.417 59.23977 61.46439 54.59378 1 0 -2 + 117 12 14 0.417 60.43785 61.08922 55.43980 1 0 -2 + 118 13 13 -0.834 60.74732 66.72156 42.80906 1 -2 0 + 119 13 14 0.417 60.34713 66.21969 42.09898 1 -2 0 + 120 13 14 0.417 60.92444 66.07344 43.49082 1 -2 0 + 121 14 13 -0.834 60.82245 64.17281 50.54212 0 0 0 + 122 14 14 0.417 61.43571 64.88448 50.35863 0 0 0 + 123 14 14 0.417 60.87804 64.04633 51.48930 0 0 0 + 124 15 13 -0.834 36.92704 63.01353 56.05215 0 -1 0 + 125 15 14 0.417 37.10744 62.17054 56.46815 0 -1 0 + 126 15 14 0.417 64.06237 62.79109 55.15157 -1 -1 0 + 127 16 13 -0.834 48.35559 58.70568 56.14001 1 0 0 + 128 16 14 0.417 48.11655 59.48087 55.63191 1 0 0 + 129 16 14 0.417 47.93212 58.83502 56.98865 1 0 0 + 130 17 13 -0.834 58.14651 57.18542 51.08241 0 -1 -1 + 131 17 14 0.417 57.88523 56.72609 51.88052 0 -1 -1 + 132 17 14 0.417 57.35121 57.63116 50.79076 0 -1 -1 + 133 18 13 -0.834 58.09837 59.68005 36.16995 -1 0 0 + 134 18 14 0.417 58.25901 58.76822 36.41283 -1 0 0 + 135 18 14 0.417 58.56239 60.19049 36.83355 -1 0 0 + 136 19 13 -0.834 52.29019 60.51169 50.55611 0 -2 1 + 137 19 14 0.417 52.61972 60.01708 51.30645 0 -2 1 + 138 19 14 0.417 52.55621 59.99722 49.79401 0 -2 1 + 139 20 13 -0.834 41.36642 50.33705 42.98530 0 -1 -1 + 140 20 14 0.417 41.27846 50.09969 43.90844 0 -1 -1 + 141 20 14 0.417 40.99321 51.21659 42.92708 0 -1 -1 + 142 21 13 -0.834 53.76920 67.02645 32.18667 -1 0 1 + 143 21 14 0.417 53.59447 67.18509 31.25901 -1 0 1 + 144 21 14 0.417 54.65308 67.36647 32.32596 -1 0 1 + 145 22 13 -0.834 57.83691 45.33663 46.94671 0 0 -2 + 146 22 14 0.417 57.36287 45.59552 46.15647 0 0 -2 + 147 22 14 0.417 58.62995 44.91017 46.62197 0 0 -2 + 148 23 13 -0.834 60.34518 45.83000 45.57964 -1 0 0 + 149 23 14 0.417 60.61871 44.93757 45.79176 -1 0 0 + 150 23 14 0.417 61.09971 46.21212 45.13141 -1 0 0 + 151 24 13 -0.834 55.97902 46.85046 56.80163 0 1 1 + 152 24 14 0.417 56.57528 46.69952 30.16370 0 1 2 + 153 24 14 0.417 55.81156 47.79276 56.81850 0 1 1 + 154 25 13 -0.834 57.54668 45.52135 31.46139 -1 0 1 + 155 25 14 0.417 58.36291 46.00311 31.32743 -1 0 1 + 156 25 14 0.417 57.54151 45.31312 32.39566 -1 0 1 + 157 26 13 -0.834 58.03029 52.86783 46.33564 -1 -1 0 + 158 26 14 0.417 58.13662 52.56730 47.23820 -1 -1 0 + 159 26 14 0.417 58.81317 52.55269 45.88396 -1 -1 0 + 160 27 13 -0.834 62.89253 60.86549 46.75131 -2 -1 0 + 161 27 14 0.417 63.83924 60.74010 46.81653 -2 -1 0 + 162 27 14 0.417 62.51896 60.12788 47.23361 -2 -1 0 + 163 28 13 -0.834 43.29171 48.58106 31.82206 -1 0 2 + 164 28 14 0.417 43.07532 49.46362 32.12290 -1 0 2 + 165 28 14 0.417 43.82286 48.21072 32.52701 -1 0 2 + 166 29 13 -0.834 64.19867 44.17673 45.81391 -1 1 -1 + 167 29 14 0.417 63.72986 44.44010 45.02202 -1 1 -1 + 168 29 14 0.417 37.02069 43.24876 45.68087 0 1 -1 + 169 30 13 -0.834 50.42749 42.01163 53.60484 0 2 0 + 170 30 14 0.417 51.03177 41.90084 52.87081 0 2 0 + 171 30 14 0.417 50.77279 42.76181 54.08882 0 2 0 + 172 31 13 -0.834 38.63739 61.71113 49.95150 1 0 0 + 173 31 14 0.417 38.55432 62.15607 49.10808 1 0 0 + 174 31 14 0.417 37.81718 61.22751 50.04950 1 0 0 + 175 32 13 -0.834 61.47262 53.02922 33.08309 -1 -1 0 + 176 32 14 0.417 61.21894 52.67931 33.93717 -1 -1 0 + 177 32 14 0.417 61.89351 53.86564 33.28182 -1 -1 0 + 178 33 13 -0.834 54.44545 60.06011 48.63522 -1 0 1 + 179 33 14 0.417 54.80032 60.94424 48.72810 -1 0 1 + 180 33 14 0.417 54.09041 60.03614 47.74662 -1 0 1 + 181 34 13 -0.834 56.34364 60.90201 52.60838 -1 -1 0 + 182 34 14 0.417 56.48857 60.19161 53.23333 -1 -1 0 + 183 34 14 0.417 56.17362 61.67024 53.15351 -1 -1 0 + 184 35 13 -0.834 56.05881 51.84328 55.76103 -1 0 0 + 185 35 14 0.417 55.59060 51.75146 54.93121 -1 0 0 + 186 35 14 0.417 55.46974 52.35732 56.31335 -1 0 0 + 187 36 13 -0.834 39.00621 42.74743 30.97845 0 0 1 + 188 36 14 0.417 39.67620 42.11390 30.72152 0 0 1 + 189 36 14 0.417 39.43456 43.29673 31.63499 0 0 1 + 190 37 13 -0.834 46.77585 55.39774 30.24026 0 1 0 + 191 37 14 0.417 46.10274 54.90237 29.77360 0 1 0 + 192 37 14 0.417 46.39626 56.26890 30.35527 0 1 0 + 193 38 13 -0.834 45.10722 57.60431 31.54688 -1 0 0 + 194 38 14 0.417 44.80783 58.50032 31.70105 -1 0 0 + 195 38 14 0.417 44.44237 57.22463 30.97238 -1 0 0 + 196 39 13 -0.834 43.94230 46.99244 34.45668 -2 1 1 + 197 39 14 0.417 44.62010 46.49140 34.00306 -2 1 1 + 198 39 14 0.417 44.38150 47.79794 34.72964 -2 1 1 + 199 40 13 -0.834 51.39443 50.96507 34.69072 -1 1 0 + 200 40 14 0.417 51.18729 50.42829 35.45570 -1 1 0 + 201 40 14 0.417 51.33198 51.86665 35.00616 -1 1 0 + 202 41 13 -0.834 58.96398 48.19727 42.98856 -2 1 0 + 203 41 14 0.417 58.42587 48.90112 42.62618 -2 1 0 + 204 41 14 0.417 58.82383 48.25054 43.93397 -2 1 0 + 205 42 13 -0.834 62.89335 41.94260 37.40820 0 0 0 + 206 42 14 0.417 62.48690 41.07818 37.46980 0 0 0 + 207 42 14 0.417 63.01802 42.08284 36.46957 0 0 0 + 208 43 13 -0.834 54.19388 47.88689 36.24110 -1 0 1 + 209 43 14 0.417 54.32054 48.63090 35.65235 -1 0 1 + 210 43 14 0.417 53.24370 47.78935 36.30358 -1 0 1 + 211 44 13 -0.834 39.19734 57.40342 41.28495 0 0 -2 + 212 44 14 0.417 39.05428 57.72940 40.39641 0 0 -2 + 213 44 14 0.417 39.30846 56.45861 41.17895 0 0 -2 + 214 45 13 -0.834 52.85483 61.73749 54.63897 0 0 0 + 215 45 14 0.417 53.34938 62.52765 54.42147 0 0 0 + 216 45 14 0.417 53.01046 61.14656 53.90221 0 0 0 + 217 46 13 -0.834 47.09467 62.01384 35.02302 1 0 1 + 218 46 14 0.417 47.54527 61.47644 35.67448 1 0 1 + 219 46 14 0.417 47.10116 62.89626 35.39385 1 0 1 + 220 47 13 -0.834 46.80497 49.60334 37.05700 0 0 1 + 221 47 14 0.417 46.70216 49.79770 36.12540 0 0 1 + 222 47 14 0.417 45.91311 49.45393 37.37084 0 0 1 + 223 48 13 -0.834 63.21969 59.12311 54.43455 -1 -1 -1 + 224 48 14 0.417 63.94585 59.72833 54.28405 -1 -1 -1 + 225 48 14 0.417 63.63016 58.34481 54.81141 -1 -1 -1 + 226 49 13 -0.834 59.88416 59.64215 44.04914 -2 1 0 + 227 49 14 0.417 59.74255 59.14412 44.85422 -2 1 0 + 228 49 14 0.417 59.02635 60.01323 43.84248 -2 1 0 + 229 50 13 -0.834 40.50825 42.85328 50.81112 -1 1 0 + 230 50 14 0.417 40.34650 43.39801 51.58141 -1 1 0 + 231 50 14 0.417 39.63964 42.69867 50.43985 -1 1 0 + 232 51 13 -0.834 63.77522 64.97067 44.83010 -2 0 0 + 233 51 14 0.417 37.00507 65.56132 45.28388 -1 0 0 + 234 51 14 0.417 64.14243 64.88383 43.95041 -2 0 0 + 235 52 13 -0.834 62.47161 67.86189 47.38235 -1 0 -1 + 236 52 14 0.417 61.58819 67.64608 47.08360 -1 0 -1 + 237 52 14 0.417 62.79136 67.05596 47.78790 -1 0 -1 + 238 53 13 -0.834 43.90800 54.16107 50.35199 0 0 0 + 239 53 14 0.417 43.96769 53.24711 50.07388 0 0 0 + 240 53 14 0.417 43.72593 54.64554 49.54677 0 0 0 + 241 54 13 -0.834 63.46829 44.63390 34.73615 -1 1 1 + 242 54 14 0.417 62.63731 45.04623 34.97217 -1 1 1 + 243 54 14 0.417 64.11050 45.03645 35.32075 -1 1 1 + 244 55 13 -0.834 37.30679 58.22047 51.04345 0 0 0 + 245 55 14 0.417 38.18596 58.37862 50.69950 0 0 0 + 246 55 14 0.417 36.85723 59.06017 50.94824 0 0 0 + 247 56 13 -0.834 58.72649 42.45768 31.23820 -1 1 -1 + 248 56 14 0.417 59.43634 42.77561 30.68028 -1 1 -1 + 249 56 14 0.417 58.76581 41.50474 31.15690 -1 1 -1 + 250 57 13 -0.834 52.47101 42.85691 41.60986 0 1 -1 + 251 57 14 0.417 51.62289 42.91562 41.16997 0 1 -1 + 252 57 14 0.417 52.53109 41.94497 41.89448 0 1 -1 + 253 58 13 -0.834 60.63476 59.78356 56.53663 -2 -1 -1 + 254 58 14 0.417 60.87428 58.86269 56.43247 -2 -1 -1 + 255 58 14 0.417 59.72615 59.76269 56.83705 -2 -1 -1 + 256 59 13 -0.834 52.78127 57.47386 30.66786 -1 -1 0 + 257 59 14 0.417 52.55495 58.26092 30.17228 -1 -1 0 + 258 59 14 0.417 53.05203 56.84104 30.00267 -1 -1 0 + 259 60 13 -0.834 46.04848 57.65321 54.89998 0 3 -1 + 260 60 14 0.417 46.96883 57.71336 55.15607 0 3 -1 + 261 60 14 0.417 46.02768 57.98076 54.00081 0 3 -1 + 262 61 13 -0.834 60.39356 51.43705 35.66109 -1 1 -1 + 263 61 14 0.417 60.57739 52.08235 36.34376 -1 1 -1 + 264 61 14 0.417 59.59475 50.99860 35.95414 -1 1 -1 + 265 62 13 -0.834 50.32338 62.46972 35.65752 -1 0 2 + 266 62 14 0.417 51.24156 62.23287 35.52678 -1 0 2 + 267 62 14 0.417 49.89601 61.64851 35.90085 -1 0 2 + 268 63 13 -0.834 38.23983 45.11908 50.02773 0 1 0 + 269 63 14 0.417 38.61336 45.27494 50.89515 0 1 0 + 270 63 14 0.417 38.91224 45.42406 49.41856 0 1 0 + 271 64 13 -0.834 58.93720 57.36605 46.08362 -3 0 0 + 272 64 14 0.417 58.65753 56.63297 46.63190 -3 0 0 + 273 64 14 0.417 58.29914 58.05674 46.26268 -3 0 0 + 274 65 13 -0.834 47.99806 43.44789 47.43046 -1 0 0 + 275 65 14 0.417 48.39580 43.78289 46.62684 -1 0 0 + 276 65 14 0.417 47.85848 44.22523 47.97128 -1 0 0 + 277 66 13 -0.834 51.26744 52.05593 47.09995 -1 0 0 + 278 66 14 0.417 51.36736 52.09873 46.14894 -1 0 0 + 279 66 14 0.417 50.33779 52.22629 47.25149 -1 0 0 + 280 67 13 -0.834 39.06132 52.11517 46.39010 0 0 -1 + 281 67 14 0.417 38.53402 51.36282 46.65876 0 0 -1 + 282 67 14 0.417 39.47133 52.42190 47.19884 0 0 -1 + 283 68 13 -0.834 60.17907 58.95174 50.22759 -1 1 0 + 284 68 14 0.417 60.34080 59.56538 50.94420 -1 1 0 + 285 68 14 0.417 59.41497 58.44908 50.50992 -1 1 0 + 286 69 13 -0.834 40.47698 59.65154 34.92537 0 -1 1 + 287 69 14 0.417 40.89044 60.49055 35.12877 0 -1 1 + 288 69 14 0.417 41.17964 59.12336 34.54648 0 -1 1 + 289 70 13 -0.834 60.12998 66.51474 47.03971 -1 0 -1 + 290 70 14 0.417 59.26620 66.39701 47.43506 -1 0 -1 + 291 70 14 0.417 60.21358 65.78625 46.42443 -1 0 -1 + 292 71 13 -0.834 49.25986 47.27506 43.03372 -1 0 1 + 293 71 14 0.417 49.11810 48.15331 42.68041 -1 0 1 + 294 71 14 0.417 49.86162 47.40550 43.76662 -1 0 1 + 295 72 13 -0.834 41.48105 63.65699 31.84433 0 0 1 + 296 72 14 0.417 41.11022 64.48589 32.14713 0 0 1 + 297 72 14 0.417 40.89461 63.37379 31.14281 0 0 1 + 298 73 13 -0.834 47.82875 47.97039 54.56720 0 2 0 + 299 73 14 0.417 46.99167 47.50633 54.55352 0 2 0 + 300 73 14 0.417 47.60488 48.87558 54.35102 0 2 0 + 301 74 13 -0.834 62.36735 58.64445 48.35778 -2 1 0 + 302 74 14 0.417 62.88767 57.90867 48.68045 -2 1 0 + 303 74 14 0.417 61.65918 58.73544 48.99531 -2 1 0 + 304 75 13 -0.834 52.09508 65.08907 32.87560 0 0 0 + 305 75 14 0.417 52.67402 65.75058 32.49683 0 0 0 + 306 75 14 0.417 52.41855 64.97003 33.76859 0 0 0 + 307 76 13 -0.834 39.06932 41.62988 40.69498 1 1 0 + 308 76 14 0.417 39.51114 41.04433 40.08003 1 1 0 + 309 76 14 0.417 38.93584 42.43936 40.20186 1 1 0 + 310 77 13 -0.834 37.68325 49.50718 46.00750 0 2 0 + 311 77 14 0.417 64.11601 49.67107 45.91568 -1 2 0 + 312 77 14 0.417 37.90845 48.96991 45.24796 0 2 0 + 313 78 13 -0.834 53.00757 59.49351 52.98404 -2 1 -1 + 314 78 14 0.417 52.16721 59.28329 53.39127 -2 1 -1 + 315 78 14 0.417 53.61000 58.83023 53.32076 -2 1 -1 + 316 79 13 -0.834 51.89369 64.75001 56.68467 1 0 0 + 317 79 14 0.417 51.88079 65.63682 56.32462 1 0 0 + 318 79 14 0.417 52.40589 64.82531 30.11841 1 0 1 + 319 80 13 -0.834 48.43261 63.10155 32.63566 0 0 1 + 320 80 14 0.417 47.68021 63.01753 32.04993 0 0 1 + 321 80 14 0.417 48.13916 62.71424 33.46035 0 0 1 + 322 81 13 -0.834 62.41171 68.18251 30.67168 0 -1 2 + 323 81 14 0.417 61.79235 41.16145 30.03143 0 0 2 + 324 81 14 0.417 63.18314 67.94790 30.15584 0 -1 2 + 325 82 13 -0.834 42.57575 41.32197 37.66791 0 0 1 + 326 82 14 0.417 42.98116 41.36016 36.80164 0 0 1 + 327 82 14 0.417 42.32522 42.22654 37.85569 0 0 1 + 328 83 13 -0.834 50.17315 67.44398 36.91606 0 -2 0 + 329 83 14 0.417 50.08765 67.03449 37.77701 0 -2 0 + 330 83 14 0.417 50.35347 66.71621 36.32101 0 -2 0 + 331 84 13 -0.834 39.70163 60.45247 40.03790 0 -2 -1 + 332 84 14 0.417 38.85282 60.01540 40.10676 0 -2 -1 + 333 84 14 0.417 40.20579 60.11563 40.77858 0 -2 -1 + 334 85 13 -0.834 51.74323 42.80814 51.33239 0 0 -1 + 335 85 14 0.417 52.44810 43.22892 51.82466 0 0 -1 + 336 85 14 0.417 51.80961 43.17998 50.45286 0 0 -1 + 337 86 13 -0.834 51.34695 47.68316 36.38089 0 0 1 + 338 86 14 0.417 50.77701 46.92707 36.52138 0 0 1 + 339 86 14 0.417 51.27109 47.87031 35.44523 0 0 1 + 340 87 13 -0.834 62.66950 50.66085 43.15883 -2 0 0 + 341 87 14 0.417 63.57796 50.36318 43.11051 -2 0 0 + 342 87 14 0.417 62.24654 50.26548 42.39659 -2 0 0 + 343 88 13 -0.834 46.37996 60.13914 31.06428 -2 -1 1 + 344 88 14 0.417 46.89125 59.89673 31.83632 -2 -1 1 + 345 88 14 0.417 45.51811 60.37092 31.41028 -2 -1 1 + 346 89 13 -0.834 50.23251 41.17559 46.18435 0 1 2 + 347 89 14 0.417 49.40509 68.16142 45.89628 0 0 2 + 348 89 14 0.417 50.55747 67.94506 46.85395 0 0 2 + 349 90 13 -0.834 56.10446 66.70018 42.60390 0 -2 1 + 350 90 14 0.417 56.27454 67.42915 42.00732 0 -2 1 + 351 90 14 0.417 56.27819 67.05729 43.47483 0 -2 1 + 352 91 13 -0.834 55.53824 48.43866 51.97225 -1 0 1 + 353 91 14 0.417 56.26440 48.96682 52.30388 -1 0 1 + 354 91 14 0.417 55.26306 48.88494 51.17140 -1 0 1 + 355 92 13 -0.834 37.88016 52.62502 33.55552 0 -1 0 + 356 92 14 0.417 37.58757 51.72397 33.41859 0 -1 0 + 357 92 14 0.417 38.51960 52.77804 32.85986 0 -1 0 + 358 93 13 -0.834 50.40592 66.14455 39.40035 -1 -2 -1 + 359 93 14 0.417 49.74974 66.37168 40.05920 -1 -2 -1 + 360 93 14 0.417 50.22642 65.22843 39.18876 -1 -2 -1 + 361 94 13 -0.834 59.56315 43.63477 50.02876 -1 0 0 + 362 94 14 0.417 60.08533 44.36640 50.35782 -1 0 0 + 363 94 14 0.417 60.10101 42.86112 50.19730 -1 0 0 + 364 95 13 -0.834 57.16125 61.75981 55.17964 0 0 -1 + 365 95 14 0.417 56.45534 61.68609 55.82189 0 0 -1 + 366 95 14 0.417 57.38335 62.69087 55.17297 0 0 -1 + 367 96 13 -0.834 54.81274 43.48714 43.13392 -1 2 1 + 368 96 14 0.417 53.88771 43.40698 42.90124 -1 2 1 + 369 96 14 0.417 54.97915 42.74512 43.71525 -1 2 1 + 370 97 13 -0.834 41.23040 49.49766 49.75568 0 -2 0 + 371 97 14 0.417 40.54278 49.43865 49.09241 0 -2 0 + 372 97 14 0.417 41.81904 48.76959 49.55653 0 -2 0 + 373 98 13 -0.834 54.20957 45.39084 54.97428 -1 0 0 + 374 98 14 0.417 54.66721 46.06623 55.47493 -1 0 0 + 375 98 14 0.417 53.74016 44.87996 55.63374 -1 0 0 + 376 99 13 -0.834 61.27515 64.38553 39.98716 -1 0 1 + 377 99 14 0.417 61.56153 64.23410 40.88787 -1 0 1 + 378 99 14 0.417 60.44736 63.91029 39.91542 -1 0 1 + 379 100 13 -0.834 55.67284 58.14856 42.21767 -1 1 2 + 380 100 14 0.417 55.46369 57.24253 42.44485 -1 1 2 + 381 100 14 0.417 56.62771 58.19397 42.26677 -1 1 2 + 382 101 13 -0.834 43.66528 51.07118 53.71174 0 0 0 + 383 101 14 0.417 42.87715 50.89079 53.19934 0 0 0 + 384 101 14 0.417 43.37793 51.68815 54.38481 0 0 0 + 385 102 13 -0.834 39.90899 44.53973 36.42818 0 2 0 + 386 102 14 0.417 39.84006 43.65427 36.07118 0 2 0 + 387 102 14 0.417 40.52179 44.98683 35.84438 0 2 0 + 388 103 13 -0.834 51.24695 66.96031 48.71611 -1 -1 1 + 389 103 14 0.417 50.88275 67.26607 49.54684 -1 -1 1 + 390 103 14 0.417 52.19366 66.95318 48.85726 -1 -1 1 + 391 104 13 -0.834 55.15911 56.17347 57.08906 -1 0 0 + 392 104 14 0.417 55.86241 55.65189 56.70232 -1 0 0 + 393 104 14 0.417 54.93977 55.71619 30.52949 -1 0 1 + 394 105 13 -0.834 37.33282 54.30424 56.96734 0 0 0 + 395 105 14 0.417 64.15558 54.97773 29.99806 -1 0 1 + 396 105 14 0.417 64.13467 53.88397 56.32293 -1 0 0 + 397 106 13 -0.834 53.07827 51.20543 32.31512 -1 0 1 + 398 106 14 0.417 52.39494 50.78813 31.79057 -1 0 1 + 399 106 14 0.417 52.65819 51.38698 33.15584 -1 0 1 + 400 107 13 -0.834 43.06086 51.65229 35.75926 1 1 1 + 401 107 14 0.417 42.70958 52.01746 36.57135 1 1 1 + 402 107 14 0.417 43.42908 50.80682 36.01586 1 1 1 + 403 108 13 -0.834 53.92253 56.24460 34.48089 0 0 1 + 404 108 14 0.417 53.22007 56.39276 35.11401 0 0 1 + 405 108 14 0.417 54.59075 55.76600 34.97147 0 0 1 + 406 109 13 -0.834 61.71524 66.84153 38.60005 -1 -1 0 + 407 109 14 0.417 61.25397 66.04877 38.87388 -1 -1 0 + 408 109 14 0.417 62.23260 67.09437 39.36467 -1 -1 0 + 409 110 13 -0.834 43.52824 62.78695 41.49939 0 -1 -1 + 410 110 14 0.417 43.61050 61.97218 41.00379 0 -1 -1 + 411 110 14 0.417 43.53140 63.47437 40.83330 0 -1 -1 + 412 111 13 -0.834 51.13822 55.54090 53.50461 0 1 -2 + 413 111 14 0.417 50.69587 56.38179 53.62064 0 1 -2 + 414 111 14 0.417 51.43262 55.54828 52.59383 0 1 -2 + 415 112 13 -0.834 46.94709 50.11761 31.92599 0 0 0 + 416 112 14 0.417 47.19652 51.02564 31.75423 0 0 0 + 417 112 14 0.417 46.57462 49.81059 31.09941 0 0 0 + 418 113 13 -0.834 47.96666 45.13049 44.46108 -1 2 -1 + 419 113 14 0.417 47.01871 45.24108 44.53489 -1 2 -1 + 420 113 14 0.417 48.26343 45.91034 43.99202 -1 2 -1 + 421 114 13 -0.834 44.43868 43.44849 32.90814 -1 -1 1 + 422 114 14 0.417 43.86055 43.24165 33.64245 -1 -1 1 + 423 114 14 0.417 45.31670 43.24154 33.22828 -1 -1 1 + 424 115 13 -0.834 61.07172 47.80130 53.14504 -1 1 -1 + 425 115 14 0.417 61.34864 48.71600 53.19864 -1 1 -1 + 426 115 14 0.417 60.72118 47.60538 54.01394 -1 1 -1 + 427 116 13 -0.834 51.38727 44.10864 54.92855 -1 0 -1 + 428 116 14 0.417 50.77962 44.80360 55.18160 -1 0 -1 + 429 116 14 0.417 52.05111 44.10744 55.61815 -1 0 -1 + 430 117 13 -0.834 41.05585 60.12319 49.44785 1 -1 0 + 431 117 14 0.417 41.72702 60.76812 49.67116 1 -1 0 + 432 117 14 0.417 40.24373 60.62784 49.40265 1 -1 0 + 433 118 13 -0.834 50.88548 68.33364 33.37284 -1 0 -1 + 434 118 14 0.417 50.48275 67.46671 33.32310 -1 0 -1 + 435 118 14 0.417 51.82702 68.16119 33.37343 -1 0 -1 + 436 119 13 -0.834 38.79644 59.29061 55.22446 1 1 -1 + 437 119 14 0.417 38.82887 59.83550 56.01077 1 1 -1 + 438 119 14 0.417 39.26097 59.79985 54.56028 1 1 -1 + 439 120 13 -0.834 56.31813 41.68729 51.11871 -2 0 -1 + 440 120 14 0.417 55.45155 41.35580 51.35412 -2 0 -1 + 441 120 14 0.417 56.14879 42.34135 50.44062 -2 0 -1 + 442 121 13 -0.834 45.53697 59.28154 47.22033 -1 0 -1 + 443 121 14 0.417 45.45062 59.55577 46.30733 -1 0 -1 + 444 121 14 0.417 46.00774 59.99977 47.64313 -1 0 -1 + 445 122 13 -0.834 60.47636 43.28130 46.20944 -1 0 -1 + 446 122 14 0.417 60.97762 42.59184 45.77396 -1 0 -1 + 447 122 14 0.417 59.72992 42.82584 46.59884 -1 0 -1 + 448 123 13 -0.834 58.49080 48.18289 45.77215 0 0 -1 + 449 123 14 0.417 58.74342 47.25991 45.74879 0 0 -1 + 450 123 14 0.417 58.17926 48.32386 46.66621 0 0 -1 + 451 124 13 -0.834 50.93473 56.12663 41.58575 -1 0 0 + 452 124 14 0.417 50.36171 56.05214 42.34885 -1 0 0 + 453 124 14 0.417 50.40135 56.57242 40.92771 -1 0 0 + 454 125 13 -0.834 60.55008 41.95542 56.22749 -1 0 -1 + 455 125 14 0.417 59.65163 41.78987 55.94175 -1 0 -1 + 456 125 14 0.417 61.09463 41.59967 55.52524 -1 0 -1 + 457 126 13 -0.834 58.58373 51.69338 48.78985 -1 1 0 + 458 126 14 0.417 58.38773 52.01803 49.66874 -1 1 0 + 459 126 14 0.417 58.66973 50.74614 48.89756 -1 1 0 + 460 127 13 -0.834 37.82769 45.69808 30.85100 0 1 3 + 461 127 14 0.417 38.37007 45.10637 31.37248 0 1 3 + 462 127 14 0.417 37.14646 45.99401 31.45481 0 1 3 + 463 128 13 -0.834 50.96455 60.06361 33.68049 0 0 0 + 464 128 14 0.417 51.72055 60.15430 34.26055 0 0 0 + 465 128 14 0.417 51.05673 60.77997 33.05234 0 0 0 + 466 129 13 -0.834 46.43413 68.11245 51.48833 -1 0 -1 + 467 129 14 0.417 46.82151 41.36005 50.86943 -1 1 -1 + 468 129 14 0.417 47.09847 67.43153 51.59433 -1 0 -1 + 469 130 13 -0.834 61.79997 47.41648 57.05141 -1 -1 0 + 470 130 14 0.417 62.68713 47.23872 56.73898 -1 -1 0 + 471 130 14 0.417 61.48917 46.57417 30.01195 -1 -1 1 + 472 131 13 -0.834 45.30689 46.58119 54.43763 0 1 -1 + 473 131 14 0.417 45.67282 45.73922 54.70859 0 1 -1 + 474 131 14 0.417 44.46622 46.35973 54.03705 0 1 -1 + 475 132 13 -0.834 62.60829 48.56385 49.02640 -1 1 0 + 476 132 14 0.417 62.44761 48.65968 48.08766 -1 1 0 + 477 132 14 0.417 62.98242 47.68753 49.11762 -1 1 0 + 478 133 13 -0.834 63.49107 56.77075 38.74961 -1 0 2 + 479 133 14 0.417 63.12281 56.39554 39.54952 -1 0 2 + 480 133 14 0.417 62.84612 57.42058 38.47033 -1 0 2 + 481 134 13 -0.834 50.74846 48.34849 33.46075 0 0 1 + 482 134 14 0.417 50.75342 49.30521 33.43086 0 0 1 + 483 134 14 0.417 50.91203 48.07929 32.55686 0 0 1 + 484 135 13 -0.834 44.40923 67.37148 56.42156 0 0 0 + 485 135 14 0.417 43.93400 67.78902 29.76856 0 0 1 + 486 135 14 0.417 44.94884 66.70468 56.84633 0 0 0 + 487 136 13 -0.834 44.25343 64.95349 43.22104 0 0 0 + 488 136 14 0.417 44.13229 64.08173 42.84472 0 0 0 + 489 136 14 0.417 44.01188 65.55470 42.51643 0 0 0 + 490 137 13 -0.834 46.68300 67.52863 32.69859 -1 -1 0 + 491 137 14 0.417 46.68369 68.22637 33.35389 -1 -1 0 + 492 137 14 0.417 47.60248 67.43099 32.45106 -1 -1 0 + 493 138 13 -0.834 57.25376 61.01737 33.86507 -2 1 1 + 494 138 14 0.417 57.40827 60.52366 34.67043 -2 1 1 + 495 138 14 0.417 57.35792 60.37307 33.16488 -2 1 1 + 496 139 13 -0.834 57.39946 54.16835 56.70699 0 -1 -1 + 497 139 14 0.417 57.31939 53.23092 56.53080 0 -1 -1 + 498 139 14 0.417 57.32300 54.24112 30.28699 0 -1 0 + 499 140 13 -0.834 52.36697 48.69246 41.49227 -1 1 0 + 500 140 14 0.417 51.78735 47.93629 41.40021 -1 1 0 + 501 140 14 0.417 53.21603 48.31702 41.72547 -1 1 0 + 502 141 13 -0.834 54.69200 49.57915 45.55048 0 0 -1 + 503 141 14 0.417 54.95958 48.66911 45.42211 0 0 -1 + 504 141 14 0.417 55.28513 50.08439 44.99446 0 0 -1 + 505 142 13 -0.834 37.26724 53.17896 42.50469 1 -1 -1 + 506 142 14 0.417 63.93194 53.34801 43.12782 0 -1 -1 + 507 142 14 0.417 36.94831 52.45044 41.97199 1 -1 -1 + 508 143 13 -0.834 42.56283 66.92379 33.49577 -1 0 1 + 509 143 14 0.417 41.71356 66.58931 33.20750 -1 0 1 + 510 143 14 0.417 43.03645 66.14842 33.79697 -1 0 1 + 511 144 13 -0.834 61.43331 45.62855 38.97695 0 1 1 + 512 144 14 0.417 61.20190 45.98514 39.83458 0 1 1 + 513 144 14 0.417 62.31351 45.96414 38.80708 0 1 1 + 514 145 13 -0.834 49.37935 56.26031 56.72879 1 1 0 + 515 145 14 0.417 49.03977 57.11146 56.45221 1 1 0 + 516 145 14 0.417 48.60052 55.75658 56.96530 1 1 0 + 517 146 13 -0.834 63.13959 56.23999 49.92079 -1 0 -1 + 518 146 14 0.417 63.72474 55.58123 50.29478 -1 0 -1 + 519 146 14 0.417 63.40966 57.06154 50.33112 -1 0 -1 + 520 147 13 -0.834 58.55937 66.56287 54.17345 -1 0 0 + 521 147 14 0.417 59.28260 66.81524 53.59945 -1 0 0 + 522 147 14 0.417 58.28559 67.38088 54.58834 -1 0 0 + 523 148 13 -0.834 55.49901 62.14366 46.01274 -1 0 -1 + 524 148 14 0.417 55.08057 61.57956 45.36238 -1 0 -1 + 525 148 14 0.417 55.53371 63.00495 45.59652 -1 0 -1 + 526 149 13 -0.834 48.09589 47.38106 38.97384 0 1 0 + 527 149 14 0.417 47.94178 48.02346 38.28116 0 1 0 + 528 149 14 0.417 47.26125 47.32494 39.43910 0 1 0 + 529 150 13 -0.834 40.27661 53.03711 48.83757 0 0 0 + 530 150 14 0.417 40.32476 53.91333 49.21992 0 0 0 + 531 150 14 0.417 41.18363 52.81848 48.62365 0 0 0 + 532 151 13 -0.834 36.85277 41.68065 44.81488 1 2 0 + 533 151 14 0.417 36.95709 68.34807 45.45504 1 1 0 + 534 151 14 0.417 37.14062 41.29651 43.98673 1 2 0 + 535 152 13 -0.834 37.74881 65.81650 33.58759 -1 0 1 + 536 152 14 0.417 37.69052 65.99217 34.52673 -1 0 1 + 537 152 14 0.417 37.02193 65.21970 33.40951 -1 0 1 + 538 153 13 -0.834 63.01838 46.13766 43.99274 -2 0 0 + 539 153 14 0.417 62.72780 46.33504 43.10232 -2 0 0 + 540 153 14 0.417 63.75125 46.73459 44.14387 -2 0 0 + 541 154 13 -0.834 43.83288 53.92104 38.64974 0 2 1 + 542 154 14 0.417 44.46072 53.30394 39.02556 0 2 1 + 543 154 14 0.417 44.17373 54.10726 37.77488 0 2 1 + 544 155 13 -0.834 54.48021 41.30441 45.39416 1 1 -2 + 545 155 14 0.417 54.42996 67.86451 44.88861 1 0 -2 + 546 155 14 0.417 54.84291 41.03852 46.23914 1 1 -2 + 547 156 13 -0.834 51.26407 63.10699 50.73012 0 0 -2 + 548 156 14 0.417 51.64016 62.23294 50.83411 0 0 -2 + 549 156 14 0.417 51.56733 63.39797 49.87011 0 0 -2 + 550 157 13 -0.834 54.61161 63.67709 53.56970 0 1 1 + 551 157 14 0.417 55.55339 63.81655 53.47054 0 1 1 + 552 157 14 0.417 54.24805 63.87070 52.70565 0 1 1 + 553 158 13 -0.834 46.57444 42.69363 30.13287 -1 0 1 + 554 158 14 0.417 45.93025 42.28051 30.70783 -1 0 1 + 555 158 14 0.417 47.27305 42.04459 30.04973 -1 0 1 + 556 159 13 -0.834 37.92811 50.36816 42.31352 1 1 0 + 557 159 14 0.417 38.62401 50.90050 42.69899 1 1 0 + 558 159 14 0.417 38.11553 50.37135 41.37484 1 1 0 + 559 160 13 -0.834 40.53318 48.69302 33.52502 -1 0 0 + 560 160 14 0.417 40.10720 48.55075 32.67972 -1 0 0 + 561 160 14 0.417 41.22323 49.33057 33.34173 -1 0 0 + 562 161 13 -0.834 58.20095 45.48345 42.83426 1 0 -1 + 563 161 14 0.417 58.76156 46.25356 42.92849 1 0 -1 + 564 161 14 0.417 58.80813 44.74348 42.83158 1 0 -1 + 565 162 13 -0.834 59.85909 67.06752 31.43173 -1 1 0 + 566 162 14 0.417 59.95062 66.12180 31.54782 -1 1 0 + 567 162 14 0.417 60.75672 67.38534 31.33437 -1 1 0 + 568 163 13 -0.834 48.48808 51.17807 55.92072 -2 0 0 + 569 163 14 0.417 49.24951 51.62602 55.55219 -2 0 0 + 570 163 14 0.417 48.81105 50.30745 56.15303 -2 0 0 + 571 164 13 -0.834 47.51169 45.69616 48.99410 0 0 -1 + 572 164 14 0.417 48.36822 46.03425 48.73281 0 0 -1 + 573 164 14 0.417 47.56201 45.62598 49.94740 0 0 -1 + 574 165 13 -0.834 51.10678 64.23082 47.99167 0 -2 -1 + 575 165 14 0.417 51.33188 65.16116 47.98611 0 -2 -1 + 576 165 14 0.417 50.15837 64.21415 48.12002 0 -2 -1 + 577 166 13 -0.834 42.97263 56.29674 30.18230 0 0 0 + 578 166 14 0.417 42.45756 55.50818 30.01170 0 0 0 + 579 166 14 0.417 42.79675 56.86516 56.80386 0 0 -1 + 580 167 13 -0.834 44.45917 53.64338 31.85015 -1 0 0 + 581 167 14 0.417 44.64093 54.17218 31.07325 -1 0 0 + 582 167 14 0.417 43.66299 53.15965 31.63030 -1 0 0 + 583 168 13 -0.834 52.20677 49.92062 48.65330 1 0 0 + 584 168 14 0.417 52.24176 50.63538 49.28902 1 0 0 + 585 168 14 0.417 52.01918 50.35058 47.81890 1 0 0 + 586 169 13 -0.834 45.94013 51.43638 56.49888 0 0 0 + 587 169 14 0.417 46.89200 51.34153 56.53372 0 0 0 + 588 169 14 0.417 45.60504 50.66051 56.94833 0 0 0 + 589 170 13 -0.834 45.61845 41.38709 48.05698 1 0 0 + 590 170 14 0.417 46.42604 41.83441 47.80406 1 0 0 + 591 170 14 0.417 45.31743 41.85685 48.83477 1 0 0 + 592 171 13 -0.834 47.68232 42.84819 52.92728 0 1 0 + 593 171 14 0.417 47.61830 42.41414 52.07654 0 1 0 + 594 171 14 0.417 48.39202 42.39011 53.37758 0 1 0 + 595 172 13 -0.834 37.01774 65.84057 36.39542 1 -1 0 + 596 172 14 0.417 36.84918 65.13561 37.02061 1 -1 0 + 597 172 14 0.417 63.52368 66.19949 36.19938 0 -1 0 + 598 173 13 -0.834 51.52891 58.65207 39.31760 -1 -3 -1 + 599 173 14 0.417 51.57384 59.35596 39.96472 -1 -3 -1 + 600 173 14 0.417 51.00435 59.01522 38.60403 -1 -3 -1 + 601 174 13 -0.834 49.06578 54.25781 44.33488 0 -1 -1 + 602 174 14 0.417 48.81980 55.18018 44.26437 0 -1 -1 + 603 174 14 0.417 49.41695 54.17018 45.22104 0 -1 -1 + 604 175 13 -0.834 47.03819 42.38557 34.31948 -1 -1 0 + 605 175 14 0.417 47.39035 41.82883 35.01393 -1 -1 0 + 606 175 14 0.417 47.47024 43.23019 34.44673 -1 -1 0 + 607 176 13 -0.834 41.64025 43.65472 38.33192 0 1 0 + 608 176 14 0.417 41.17224 44.02383 37.58295 0 1 0 + 609 176 14 0.417 41.46027 44.26142 39.05008 0 1 0 + 610 177 13 -0.834 61.41261 58.14241 37.49312 -2 0 0 + 611 177 14 0.417 61.24368 59.06676 37.67551 -2 0 0 + 612 177 14 0.417 60.57871 57.80631 37.16465 -2 0 0 + 613 178 13 -0.834 48.58355 55.60536 32.34542 0 -2 -2 + 614 178 14 0.417 48.05292 55.64371 31.54969 0 -2 -2 + 615 178 14 0.417 49.00004 56.46561 32.39784 0 -2 -2 + 616 179 13 -0.834 51.18618 52.33768 44.26866 0 -1 0 + 617 179 14 0.417 50.47419 52.97535 44.21659 0 -1 0 + 618 179 14 0.417 51.18053 51.90159 43.41657 0 -1 0 + 619 180 13 -0.834 63.77008 46.64985 53.45124 -2 0 -1 + 620 180 14 0.417 37.25943 46.94040 53.14955 -1 0 -1 + 621 180 14 0.417 63.15834 47.28506 53.07904 -2 0 -1 + 622 181 13 -0.834 37.28071 56.79400 31.30862 1 1 0 + 623 181 14 0.417 37.34297 57.68998 31.63963 1 1 0 + 624 181 14 0.417 36.99543 56.89301 30.40030 1 1 0 + 625 182 13 -0.834 38.98742 57.66608 44.07685 1 0 1 + 626 182 14 0.417 39.04152 57.61214 43.12270 1 0 1 + 627 182 14 0.417 39.46043 56.89430 44.38805 1 0 1 + 628 183 13 -0.834 64.13749 51.25767 48.28997 0 -1 0 + 629 183 14 0.417 64.05120 52.19840 48.13566 0 -1 0 + 630 183 14 0.417 63.26932 50.90255 48.09918 0 -1 0 + 631 184 13 -0.834 41.02949 42.14202 43.02064 0 0 -1 + 632 184 14 0.417 40.60130 42.82178 43.54104 0 0 -1 + 633 184 14 0.417 40.43829 41.99723 42.28189 0 0 -1 + 634 185 13 -0.834 49.87332 48.21836 52.83028 0 1 0 + 635 185 14 0.417 49.13733 48.15035 53.43849 0 1 0 + 636 185 14 0.417 50.32176 47.37567 52.90100 0 1 0 + 637 186 13 -0.834 56.06860 48.51217 38.12813 -1 1 0 + 638 186 14 0.417 56.55702 47.73454 38.39826 -1 1 0 + 639 186 14 0.417 55.52690 48.21357 37.39762 -1 1 0 + 640 187 13 -0.834 54.22718 59.47740 40.22374 -1 0 1 + 641 187 14 0.417 53.93839 59.03820 39.42377 -1 0 1 + 642 187 14 0.417 54.74005 58.81629 40.68868 -1 0 1 + 643 188 13 -0.834 60.09461 46.88146 32.04739 -1 0 -1 + 644 188 14 0.417 60.91535 46.43611 31.83683 -1 0 -1 + 645 188 14 0.417 60.13630 47.02716 32.99253 -1 0 -1 + 646 189 13 -0.834 45.18646 44.57845 41.54076 0 0 0 + 647 189 14 0.417 44.28239 44.89208 41.51774 0 0 0 + 648 189 14 0.417 45.34481 44.23786 40.66033 0 0 0 + 649 190 13 -0.834 42.47099 45.68692 31.56356 1 0 1 + 650 190 14 0.417 43.26152 45.18821 31.76995 1 0 1 + 651 190 14 0.417 42.78187 46.58070 31.41951 1 0 1 + 652 191 13 -0.834 41.23413 47.67043 41.85221 0 1 0 + 653 191 14 0.417 41.04508 48.58329 42.06946 0 1 0 + 654 191 14 0.417 40.84394 47.54379 40.98737 0 1 0 + 655 192 13 -0.834 48.84750 60.39708 36.57115 0 0 0 + 656 192 14 0.417 48.57626 59.48478 36.46920 0 0 0 + 657 192 14 0.417 48.59448 60.62409 37.46597 0 0 0 + 658 193 13 -0.834 56.78263 43.55464 49.12966 -1 0 -1 + 659 193 14 0.417 56.56851 44.25428 48.51250 -1 0 -1 + 660 193 14 0.417 57.66563 43.76469 49.43365 -1 0 -1 + 661 194 13 -0.834 59.52236 53.66894 43.24587 -1 2 0 + 662 194 14 0.417 59.44365 54.61174 43.10041 -1 2 0 + 663 194 14 0.417 59.73284 53.58637 44.17598 -1 2 0 + 664 195 13 -0.834 63.61393 61.54696 40.57053 -1 -1 1 + 665 195 14 0.417 36.90989 60.94398 40.24291 0 -1 1 + 666 195 14 0.417 63.74510 61.55794 41.51864 -1 -1 1 + 667 196 13 -0.834 54.91742 43.16160 33.69639 0 0 -1 + 668 196 14 0.417 55.84062 43.16106 33.94925 0 0 -1 + 669 196 14 0.417 54.73416 44.07060 33.45898 0 0 -1 + 670 197 13 -0.834 41.09699 64.92982 48.38401 0 -1 -1 + 671 197 14 0.417 40.19042 64.83711 48.67687 0 -1 -1 + 672 197 14 0.417 41.27055 64.13206 47.88433 0 -1 -1 + 673 198 13 -0.834 49.09688 60.43369 49.80048 0 0 -1 + 674 198 14 0.417 49.75346 61.03633 50.14971 0 0 -1 + 675 198 14 0.417 49.51718 59.57440 49.83534 0 0 -1 + 676 199 13 -0.834 45.06873 45.25146 44.50830 0 1 0 + 677 199 14 0.417 45.08807 45.11881 43.56053 0 1 0 + 678 199 14 0.417 44.41198 44.63084 44.82413 0 1 0 + 679 200 13 -0.834 37.63886 45.88962 36.45768 0 0 2 + 680 200 14 0.417 38.32892 45.23766 36.58017 0 0 2 + 681 200 14 0.417 37.24627 45.98938 37.32495 0 0 2 + 682 201 13 -0.834 45.25770 47.01692 51.04211 -1 0 -2 + 683 201 14 0.417 45.49830 47.82868 50.59555 -1 0 -2 + 684 201 14 0.417 46.08295 46.68269 51.39354 -1 0 -2 + 685 202 13 -0.834 63.44567 60.77839 50.98507 -2 0 0 + 686 202 14 0.417 62.95029 60.46072 51.74001 -2 0 0 + 687 202 14 0.417 62.77774 61.08133 50.36998 -2 0 0 + 688 203 13 -0.834 48.00038 59.99003 33.31045 0 1 1 + 689 203 14 0.417 48.92391 59.89924 33.54518 0 1 1 + 690 203 14 0.417 47.68314 60.70831 33.85788 0 1 1 + 691 204 13 -0.834 51.29617 53.45952 36.10138 -1 -1 1 + 692 204 14 0.417 50.79623 53.20605 36.87731 -1 -1 1 + 693 204 14 0.417 51.41983 54.40421 36.19363 -1 -1 1 + 694 205 13 -0.834 48.55343 45.13540 34.47517 0 0 0 + 695 205 14 0.417 48.10547 45.97105 34.34382 0 0 0 + 696 205 14 0.417 49.13373 45.28879 35.22081 0 0 0 + 697 206 13 -0.834 48.34844 61.02741 54.77908 1 -1 -1 + 698 206 14 0.417 47.77364 61.75290 55.02301 1 -1 -1 + 699 206 14 0.417 49.14675 61.17253 55.28690 1 -1 -1 + 700 207 13 -0.834 38.97661 48.73541 31.27301 2 -1 0 + 701 207 14 0.417 38.86774 47.99634 30.67453 2 -1 0 + 702 207 14 0.417 38.60214 49.48112 30.80404 2 -1 0 + 703 208 13 -0.834 56.37687 61.69299 40.12439 0 -1 -1 + 704 208 14 0.417 56.35009 61.71409 39.16778 0 -1 -1 + 705 208 14 0.417 55.62486 61.15580 40.37371 0 -1 -1 + 706 209 13 -0.834 47.86700 41.38854 36.76722 -1 0 0 + 707 209 14 0.417 48.79854 41.26117 36.94678 -1 0 0 + 708 209 14 0.417 47.57553 42.00602 37.43804 -1 0 0 + 709 210 13 -0.834 43.22089 60.92576 39.48904 -1 -1 0 + 710 210 14 0.417 42.70029 60.20976 39.85311 -1 -1 0 + 711 210 14 0.417 43.25319 60.74538 38.54954 -1 -1 0 + 712 211 13 -0.834 56.26248 49.03317 34.29585 -1 0 0 + 713 211 14 0.417 56.69244 49.86416 34.09381 -1 0 0 + 714 211 14 0.417 55.61194 48.92467 33.60212 -1 0 0 + 715 212 13 -0.834 47.52063 49.37901 51.21673 1 0 0 + 716 212 14 0.417 48.35964 48.95385 51.03909 1 0 0 + 717 212 14 0.417 47.47856 49.43746 52.17122 1 0 0 + 718 213 13 -0.834 62.35532 56.31018 41.33556 0 0 0 + 719 213 14 0.417 62.07506 57.22150 41.42032 0 0 0 + 720 213 14 0.417 62.92184 56.16192 42.09274 0 0 0 + 721 214 13 -0.834 61.09797 64.53756 45.11003 -1 0 1 + 722 214 14 0.417 61.11801 63.59600 44.93887 -1 0 1 + 723 214 14 0.417 61.95676 64.85132 44.82670 -1 0 1 + 724 215 13 -0.834 51.22661 62.08872 31.93454 0 0 0 + 725 215 14 0.417 51.98994 62.65586 32.04369 0 0 0 + 726 215 14 0.417 50.47877 62.65171 32.13456 0 0 0 + 727 216 13 -0.834 40.65443 48.64853 54.43476 0 0 -1 + 728 216 14 0.417 40.25608 47.97845 54.99023 0 0 -1 + 729 216 14 0.417 41.58025 48.64240 54.67776 0 0 -1 + 730 217 13 -0.834 39.34873 63.07587 52.07209 1 1 -1 + 731 217 14 0.417 39.17266 63.98076 51.81438 1 1 -1 + 732 217 14 0.417 39.29792 62.57948 51.25523 1 1 -1 + 733 218 13 -0.834 45.66307 65.90840 47.75613 -1 0 0 + 734 218 14 0.417 44.99427 65.52542 48.32381 -1 0 0 + 735 218 14 0.417 45.75913 66.80721 48.07102 -1 0 0 + 736 219 13 -0.834 45.83158 51.91442 38.93974 0 0 0 + 737 219 14 0.417 46.07939 51.87422 39.86344 0 0 0 + 738 219 14 0.417 45.49928 51.03877 38.74210 0 0 0 + 739 220 13 -0.834 58.03934 67.88594 44.36036 -1 1 -1 + 740 220 14 0.417 58.69084 68.22520 43.74661 -1 1 -1 + 741 220 14 0.417 58.24719 68.31309 45.19138 -1 1 -1 + 742 221 13 -0.834 57.23319 66.95459 30.42832 0 0 0 + 743 221 14 0.417 56.95316 66.93560 31.34345 0 0 0 + 744 221 14 0.417 58.18154 66.82998 30.46491 0 0 0 + 745 222 13 -0.834 60.87005 44.72970 53.74755 -1 0 -1 + 746 222 14 0.417 60.02694 44.42275 53.41412 -1 0 -1 + 747 222 14 0.417 61.31963 45.07903 52.97808 -1 0 -1 + 748 223 13 -0.834 50.61352 50.44308 31.66369 0 -1 0 + 749 223 14 0.417 50.38691 49.95555 30.87173 0 -1 0 + 750 223 14 0.417 50.16704 51.28387 31.56391 0 -1 0 + 751 224 13 -0.834 42.70363 42.07925 34.73823 0 1 0 + 752 224 14 0.417 42.74630 41.15512 34.49249 0 1 0 + 753 224 14 0.417 41.77538 42.23983 34.90796 0 1 0 + 754 225 13 -0.834 50.34157 43.80796 44.49841 -1 1 0 + 755 225 14 0.417 49.44649 44.14718 44.50119 -1 1 0 + 756 225 14 0.417 50.24323 42.86994 44.66171 -1 1 0 + 757 226 13 -0.834 62.39528 64.92163 33.72829 -3 -1 1 + 758 226 14 0.417 61.94679 64.42233 34.41078 -3 -1 1 + 759 226 14 0.417 61.94061 64.68505 32.91986 -3 -1 1 + 760 227 13 -0.834 46.62188 47.13429 41.79430 0 1 1 + 761 227 14 0.417 46.21721 46.28415 41.62178 0 1 1 + 762 227 14 0.417 47.40198 46.92861 42.30946 0 1 1 + 763 228 13 -0.834 41.35469 54.31275 56.45453 0 0 -1 + 764 228 14 0.417 41.79769 53.47653 56.31055 0 0 -1 + 765 228 14 0.417 40.57273 54.26794 55.90425 0 0 -1 + 766 229 13 -0.834 48.43878 42.20000 49.94999 0 0 0 + 767 229 14 0.417 49.34431 42.29756 50.24447 0 0 0 + 768 229 14 0.417 48.41583 42.63350 49.09688 0 0 0 + 769 230 13 -0.834 37.29829 50.04209 33.34795 0 1 0 + 770 230 14 0.417 36.96213 49.51969 34.07619 0 1 0 + 771 230 14 0.417 37.98470 49.49933 32.96002 0 1 0 + 772 231 13 -0.834 58.91995 56.17895 33.02333 -1 0 0 + 773 231 14 0.417 59.83980 56.43785 32.96791 -1 0 0 + 774 231 14 0.417 58.89269 55.54120 33.73661 -1 0 0 + 775 232 13 -0.834 39.86900 65.81481 43.81866 0 0 -1 + 776 232 14 0.417 40.31483 64.99515 43.60502 0 0 -1 + 777 232 14 0.417 40.41298 66.21397 44.49762 0 0 -1 + 778 233 13 -0.834 62.71324 65.93556 51.55400 -1 0 0 + 779 233 14 0.417 62.38032 66.39597 52.32436 -1 0 0 + 780 233 14 0.417 63.52336 65.52245 51.85285 -1 0 0 + 781 234 13 -0.834 59.23324 49.58642 31.35843 0 0 0 + 782 234 14 0.417 59.28102 48.68976 31.69001 0 0 0 + 783 234 14 0.417 59.95115 50.04304 31.79700 0 0 0 + 784 235 13 -0.834 41.02310 67.21389 51.60243 0 0 0 + 785 235 14 0.417 41.77450 67.79064 51.74021 0 0 0 + 786 235 14 0.417 40.36922 67.76899 51.17753 0 0 0 + 787 236 13 -0.834 41.38918 62.43794 34.42449 0 0 1 + 788 236 14 0.417 41.26665 63.14612 33.79227 0 0 1 + 789 236 14 0.417 42.30454 62.51275 34.69423 0 0 1 + 790 237 13 -0.834 52.28796 56.01034 50.59905 0 -1 -1 + 791 237 14 0.417 53.14113 56.07317 51.02851 0 -1 -1 + 792 237 14 0.417 52.14509 55.07070 50.48548 0 -1 -1 + 793 238 13 -0.834 53.25204 66.52198 39.76351 0 -1 0 + 794 238 14 0.417 52.30774 66.44732 39.62571 0 -1 0 + 795 238 14 0.417 53.47725 67.38617 39.41895 0 -1 0 + 796 239 13 -0.834 59.77604 60.82055 48.12264 -1 -1 -1 + 797 239 14 0.417 59.80699 60.05926 48.70205 -1 -1 -1 + 798 239 14 0.417 58.96049 60.71611 47.63253 -1 -1 -1 + 799 240 13 -0.834 48.99693 51.07559 36.89084 0 -1 1 + 800 240 14 0.417 48.22315 50.55308 37.10175 0 -1 1 + 801 240 14 0.417 48.88824 51.30348 35.96753 0 -1 1 + 802 241 13 -0.834 50.67863 62.63916 55.60559 1 0 -2 + 803 241 14 0.417 51.43406 62.16856 55.25331 1 0 -2 + 804 241 14 0.417 51.05760 63.36945 56.09477 1 0 -2 + 805 242 13 -0.834 41.05301 64.77947 55.72335 1 -1 -1 + 806 242 14 0.417 41.95836 64.58666 55.96711 1 -1 -1 + 807 242 14 0.417 41.07998 65.67647 55.39035 1 -1 -1 + 808 243 13 -0.834 59.16096 63.30207 34.55147 0 -1 2 + 809 243 14 0.417 58.62636 62.51316 34.64131 0 -1 2 + 810 243 14 0.417 59.80830 63.23451 35.25333 0 -1 2 + 811 244 13 -0.834 59.86542 53.52546 55.50419 0 -1 -1 + 812 244 14 0.417 60.26921 53.79963 56.32761 0 -1 -1 + 813 244 14 0.417 58.96256 53.83773 55.56399 0 -1 -1 + 814 245 13 -0.834 56.48528 44.99075 44.65443 1 0 0 + 815 245 14 0.417 55.84854 44.49932 44.13551 1 0 0 + 816 245 14 0.417 57.18258 45.20803 44.03571 1 0 0 + 817 246 13 -0.834 37.25407 54.85866 36.86076 0 -1 -1 + 818 246 14 0.417 37.37951 55.31820 36.03050 0 -1 -1 + 819 246 14 0.417 36.91899 55.52805 37.45731 0 -1 -1 + 820 247 13 -0.834 54.42875 47.21339 48.23883 -1 -1 -1 + 821 247 14 0.417 54.60966 48.13349 48.43097 -1 -1 -1 + 822 247 14 0.417 54.44092 47.16092 47.28312 -1 -1 -1 + 823 248 13 -0.834 42.61226 41.78391 40.84493 1 0 1 + 824 248 14 0.417 41.98531 41.90233 41.55849 1 0 1 + 825 248 14 0.417 42.35866 42.43623 40.19194 1 0 1 + 826 249 13 -0.834 37.83522 41.95649 50.31377 0 0 -2 + 827 249 14 0.417 37.42231 42.81133 50.19124 0 0 -2 + 828 249 14 0.417 37.46684 41.41031 49.61934 0 0 -2 + 829 250 13 -0.834 44.80898 44.15062 49.20688 0 -1 0 + 830 250 14 0.417 44.80289 44.55594 48.33975 0 -1 0 + 831 250 14 0.417 45.29722 44.76463 49.75537 0 -1 0 + 832 251 13 -0.834 37.44321 44.03405 38.75076 1 0 1 + 833 251 14 0.417 37.12277 44.06014 39.65235 1 0 1 + 834 251 14 0.417 64.13547 43.56266 38.26824 0 0 1 + 835 252 13 -0.834 38.82113 46.15070 46.12915 1 0 0 + 836 252 14 0.417 38.96657 46.44867 47.02709 1 0 0 + 837 252 14 0.417 38.09796 45.52731 46.19733 1 0 0 + 838 253 13 -0.834 43.08482 60.65520 45.34135 -1 0 1 + 839 253 14 0.417 42.82882 59.73347 45.30784 -1 0 1 + 840 253 14 0.417 44.00885 60.65685 45.09147 -1 0 1 + 841 254 13 -0.834 45.72190 46.51173 32.51384 1 0 0 + 842 254 14 0.417 46.00925 45.78294 31.96381 1 0 0 + 843 254 14 0.417 46.53186 46.95248 32.77064 1 0 0 + 844 255 13 -0.834 63.64359 44.33728 41.24417 -1 0 0 + 845 255 14 0.417 63.60411 43.61794 41.87443 -1 0 0 + 846 255 14 0.417 62.76926 44.36407 40.85550 -1 0 0 + 847 256 13 -0.834 48.53353 66.27879 51.60437 0 0 -1 + 848 256 14 0.417 49.21611 66.24938 50.93396 0 0 -1 + 849 256 14 0.417 48.67507 65.48862 52.12577 0 0 -1 + 850 257 13 -0.834 54.11962 54.32751 39.83526 -1 1 1 + 851 257 14 0.417 53.37975 54.47391 39.24585 -1 1 1 + 852 257 14 0.417 53.95747 53.46346 40.21391 -1 1 1 + 853 258 13 -0.834 53.72785 66.08707 44.78384 -1 -1 0 + 854 258 14 0.417 54.65423 65.85662 44.85413 -1 -1 0 + 855 258 14 0.417 53.26300 65.26936 44.96130 -1 -1 0 + 856 259 13 -0.834 39.06287 51.40870 53.96063 0 0 -1 + 857 259 14 0.417 39.12854 51.34243 53.00796 0 0 -1 + 858 259 14 0.417 38.38057 52.06341 54.10916 0 0 -1 + 859 260 13 -0.834 58.77064 49.77012 37.45292 0 0 0 + 860 260 14 0.417 59.49652 49.20688 37.72142 0 0 0 + 861 260 14 0.417 57.98575 49.25379 37.63621 0 0 0 + 862 261 13 -0.834 37.94204 48.36591 35.22049 -1 0 0 + 863 261 14 0.417 37.94000 47.48368 35.59187 -1 0 0 + 864 261 14 0.417 38.86901 48.59216 35.14453 -1 0 0 + 865 262 13 -0.834 47.05754 54.06564 40.63628 0 -2 1 + 866 262 14 0.417 47.01965 53.22193 41.08679 0 -2 1 + 867 262 14 0.417 46.68660 54.68838 41.26145 0 -2 1 + 868 263 13 -0.834 46.01283 65.88108 53.59469 0 0 0 + 869 263 14 0.417 45.30729 66.50296 53.77277 0 0 0 + 870 263 14 0.417 46.76378 66.42902 53.36650 0 0 0 + 871 264 13 -0.834 45.32546 67.91008 39.11365 -1 -1 0 + 872 264 14 0.417 44.38981 67.96233 38.91853 -1 -1 0 + 873 264 14 0.417 45.70517 67.47097 38.35257 -1 -1 0 + 874 265 13 -0.834 55.39761 51.53823 53.16553 -1 1 -1 + 875 265 14 0.417 54.64975 52.10179 53.36389 -1 1 -1 + 876 265 14 0.417 55.78119 51.91789 52.37499 -1 1 -1 + 877 266 13 -0.834 57.06415 51.22923 32.75117 -1 -1 0 + 878 266 14 0.417 56.79908 52.11139 32.49079 -1 -1 0 + 879 266 14 0.417 57.98399 51.16910 32.49322 -1 -1 0 + 880 267 13 -0.834 50.05222 47.30342 45.67457 0 0 -2 + 881 267 14 0.417 49.85957 46.82324 46.47990 0 0 -2 + 882 267 14 0.417 50.60617 46.70964 45.16781 0 0 -2 + 883 268 13 -0.834 50.46819 45.47822 52.51129 0 1 -1 + 884 268 14 0.417 50.78823 45.07196 53.31677 0 1 -1 + 885 268 14 0.417 51.03886 45.13243 51.82499 0 1 -1 + 886 269 13 -0.834 47.44130 61.30175 47.80124 0 0 0 + 887 269 14 0.417 48.02715 60.89314 48.43850 0 0 0 + 888 269 14 0.417 47.98636 61.43626 47.02595 0 0 0 + 889 270 13 -0.834 41.31630 52.47434 39.71677 1 0 0 + 890 270 14 0.417 41.07609 52.94514 40.51485 1 0 0 + 891 270 14 0.417 42.05418 52.96849 39.35955 1 0 0 + 892 271 13 -0.834 55.90762 58.63213 50.47814 0 1 0 + 893 271 14 0.417 55.80273 59.37784 51.06903 0 1 0 + 894 271 14 0.417 55.41449 58.87554 49.69468 0 1 0 + 895 272 13 -0.834 42.23424 55.62725 53.35280 0 1 -1 + 896 272 14 0.417 41.62946 55.10926 53.88399 0 1 -1 + 897 272 14 0.417 41.75761 56.43615 53.16647 0 1 -1 + 898 273 13 -0.834 62.31754 63.97065 42.48774 0 0 1 + 899 273 14 0.417 63.27023 64.05391 42.44669 0 0 1 + 900 273 14 0.417 62.16851 63.13573 42.93152 0 0 1 + 901 274 13 -0.834 60.93154 49.79182 56.13812 0 -1 0 + 902 274 14 0.417 61.38991 48.97402 56.33134 0 -1 0 + 903 274 14 0.417 60.29808 49.88575 56.84955 0 -1 0 + 904 275 13 -0.834 50.39572 45.11274 36.60756 0 1 -1 + 905 275 14 0.417 50.88541 44.33834 36.33051 0 1 -1 + 906 275 14 0.417 50.38352 45.05976 37.56322 0 1 -1 + 907 276 13 -0.834 46.57204 43.12189 39.29488 -1 2 -1 + 908 276 14 0.417 46.48449 42.17951 39.43813 -1 2 -1 + 909 276 14 0.417 47.49357 43.30747 39.47547 -1 2 -1 + 910 277 13 -0.834 54.39979 41.37518 38.62483 0 0 1 + 911 277 14 0.417 54.27469 42.27221 38.31511 0 0 1 + 912 277 14 0.417 54.57135 68.24024 37.83080 0 -1 1 + 913 278 13 -0.834 60.57638 52.40343 41.12327 -1 1 -1 + 914 278 14 0.417 60.40196 53.27982 40.78010 -1 1 -1 + 915 278 14 0.417 60.37657 52.46726 42.05721 -1 1 -1 + 916 279 13 -0.834 61.77806 59.06524 41.98029 0 0 0 + 917 279 14 0.417 62.58317 59.36537 42.40214 0 0 0 + 918 279 14 0.417 61.10430 59.16112 42.65342 0 0 0 + 919 280 13 -0.834 43.46789 48.64833 54.88223 0 1 -2 + 920 280 14 0.417 43.60676 49.48200 54.43286 0 1 -2 + 921 280 14 0.417 43.74339 47.98554 54.24895 0 1 -2 + 922 281 13 -0.834 51.98628 58.37454 48.60562 -1 0 0 + 923 281 14 0.417 51.81372 57.54909 49.05852 -1 0 0 + 924 281 14 0.417 52.67545 58.16319 47.97583 -1 0 0 + 925 282 13 -0.834 55.00551 65.64176 56.63926 0 -1 -1 + 926 282 14 0.417 55.59134 66.11131 29.86167 0 -1 0 + 927 282 14 0.417 54.80211 66.27584 55.95165 0 -1 -1 + 928 283 13 -0.834 55.02996 52.59142 50.59986 -1 1 0 + 929 283 14 0.417 54.13615 52.66743 50.26585 -1 1 0 + 930 283 14 0.417 55.48513 53.35419 50.24316 -1 1 0 + 931 284 13 -0.834 37.39245 67.88600 56.81733 0 -1 -1 + 932 284 14 0.417 38.13326 41.09044 56.62787 0 0 -1 + 933 284 14 0.417 37.74351 67.00148 56.71419 0 -1 -1 + 934 285 13 -0.834 42.83234 60.22766 53.36959 0 0 0 + 935 285 14 0.417 43.51497 59.86233 52.80672 0 0 0 + 936 285 14 0.417 43.27782 60.90528 53.87815 0 0 0 + 937 286 13 -0.834 59.24806 43.81265 38.44265 1 0 0 + 938 286 14 0.417 59.12140 43.55748 39.35647 1 0 0 + 939 286 14 0.417 60.07673 44.29174 38.43991 1 0 0 + 940 287 13 -0.834 61.29263 60.52642 52.74164 -1 1 -1 + 941 287 14 0.417 61.73918 60.02180 53.42149 -1 1 -1 + 942 287 14 0.417 60.93759 61.28711 53.20156 -1 1 -1 + 943 288 13 -0.834 63.43980 43.30119 30.90384 -1 1 0 + 944 288 14 0.417 63.34979 42.36405 30.73085 -1 1 0 + 945 288 14 0.417 64.20504 43.56693 30.39393 -1 1 0 + 946 289 13 -0.834 57.11924 59.06522 54.48909 -1 0 0 + 947 289 14 0.417 57.40605 59.83488 54.98062 -1 0 0 + 948 289 14 0.417 57.59698 58.33614 54.88463 -1 0 0 + 949 290 13 -0.834 51.89759 59.82680 44.82923 1 1 -1 + 950 290 14 0.417 51.33588 59.94068 44.06258 1 1 -1 + 951 290 14 0.417 51.32846 60.01914 45.57443 1 1 -1 + 952 291 13 -0.834 57.64696 65.49112 47.86068 -1 0 0 + 953 291 14 0.417 57.31105 65.98457 48.60895 -1 0 0 + 954 291 14 0.417 57.73765 64.59519 48.18521 -1 0 0 + 955 292 13 -0.834 50.35232 57.73892 32.55459 0 1 0 + 956 292 14 0.417 51.07441 57.69034 31.92813 0 1 0 + 957 292 14 0.417 50.48339 58.57180 33.00777 0 1 0 + 958 293 13 -0.834 46.20166 60.82812 38.38269 0 1 1 + 959 293 14 0.417 46.12191 61.76977 38.53504 0 1 1 + 960 293 14 0.417 45.30555 60.53505 38.21735 0 1 1 + 961 294 13 -0.834 41.42660 51.46433 55.94150 1 0 -1 + 962 294 14 0.417 40.58025 51.71240 55.56944 1 0 -1 + 963 294 14 0.417 41.63094 50.62307 55.53311 1 0 -1 + 964 295 13 -0.834 56.72642 53.95840 32.00323 0 -1 0 + 965 295 14 0.417 57.12177 54.49254 32.69216 0 -1 0 + 966 295 14 0.417 55.80349 54.21231 32.00259 0 -1 0 + 967 296 13 -0.834 43.25852 41.40642 31.27656 0 1 0 + 968 296 14 0.417 43.58058 42.21308 31.67880 0 1 0 + 969 296 14 0.417 43.16985 68.16459 32.00619 0 0 0 + 970 297 13 -0.834 54.50477 52.62435 30.30235 -2 1 0 + 971 297 14 0.417 54.04985 52.22243 31.04245 -2 1 0 + 972 297 14 0.417 54.36900 53.56465 30.41915 -2 1 0 + 973 298 13 -0.834 38.11258 59.33341 36.21749 1 0 0 + 974 298 14 0.417 38.95754 58.91929 36.04205 1 0 0 + 975 298 14 0.417 38.14750 60.16192 35.73940 1 0 0 + 976 299 13 -0.834 39.65020 64.70254 40.48616 -1 0 1 + 977 299 14 0.417 39.87581 65.58596 40.19474 -1 0 1 + 978 299 14 0.417 39.66086 64.17611 39.68676 -1 0 1 + 979 300 13 -0.834 63.26661 53.84973 48.10281 -1 1 1 + 980 300 14 0.417 63.38261 54.75210 48.40032 -1 1 1 + 981 300 14 0.417 62.32830 53.68505 48.19603 -1 1 1 + 982 301 13 -0.834 43.65966 61.04202 50.03088 0 0 0 + 983 301 14 0.417 44.11377 60.35973 50.52538 0 0 0 + 984 301 14 0.417 44.30508 61.74317 49.94108 0 0 0 + 985 302 13 -0.834 61.75204 50.20037 32.39414 0 0 0 + 986 302 14 0.417 62.04749 51.09027 32.58663 0 0 0 + 987 302 14 0.417 62.55370 49.67736 32.38826 0 0 0 + 988 303 13 -0.834 53.79071 58.98335 36.25336 -1 -2 -1 + 989 303 14 0.417 53.17711 58.26833 36.42220 -1 -2 -1 + 990 303 14 0.417 54.65389 58.60140 36.41235 -1 -2 -1 + 991 304 13 -0.834 50.47963 50.13918 42.58243 1 -1 -2 + 992 304 14 0.417 51.28111 49.63880 42.42915 1 -1 -2 + 993 304 14 0.417 50.33279 50.61369 41.76419 1 -1 -2 + 994 305 13 -0.834 50.28770 49.02182 56.79391 1 -1 -2 + 995 305 14 0.417 50.66164 48.14920 56.91622 1 -1 -2 + 996 305 14 0.417 50.60501 49.30063 55.93493 1 -1 -2 + 997 306 13 -0.834 41.36930 46.36343 34.87469 1 1 0 + 998 306 14 0.417 42.25704 46.59841 34.60463 1 1 0 + 999 306 14 0.417 40.85961 47.16333 34.74582 1 1 0 + 1000 307 13 -0.834 61.15349 47.47016 41.71779 0 1 0 + 1001 307 14 0.417 61.50139 48.29469 41.37818 0 1 0 + 1002 307 14 0.417 60.28203 47.69385 42.04454 0 1 0 + 1003 308 13 -0.834 58.35337 46.83622 34.81712 0 0 1 + 1004 308 14 0.417 57.63221 46.22391 34.67141 0 0 1 + 1005 308 14 0.417 57.97297 47.69883 34.65146 0 0 1 + 1006 309 13 -0.834 38.79812 57.92803 48.26323 1 -2 -1 + 1007 309 14 0.417 38.67444 56.98130 48.33141 1 -2 -1 + 1008 309 14 0.417 39.70990 58.06987 48.51776 1 -2 -1 + 1009 310 13 -0.834 42.15963 57.96891 45.03230 1 0 0 + 1010 310 14 0.417 42.11698 57.98663 45.98839 1 0 0 + 1011 310 14 0.417 41.83611 57.10021 44.79371 1 0 0 + 1012 311 13 -0.834 55.17551 54.72671 36.49400 0 -1 0 + 1013 311 14 0.417 55.26386 53.77738 36.57890 0 -1 0 + 1014 311 14 0.417 55.36463 55.06457 37.36939 0 -1 0 + 1015 312 13 -0.834 58.64573 63.28550 41.10609 -1 -2 -1 + 1016 312 14 0.417 58.98147 62.66636 41.75429 -1 -2 -1 + 1017 312 14 0.417 57.90273 62.83419 40.70545 -1 -2 -1 + 1018 313 13 -0.834 49.96498 59.98797 42.54359 0 -1 0 + 1019 313 14 0.417 50.57886 60.48612 42.00390 0 -1 0 + 1020 313 14 0.417 49.10600 60.17526 42.16501 0 -1 0 + 1021 314 13 -0.834 57.54750 44.35075 52.12722 -1 -1 -1 + 1022 314 14 0.417 57.86221 43.84739 51.37633 -1 -1 -1 + 1023 314 14 0.417 56.76423 44.79718 51.80558 -1 -1 -1 + 1024 315 13 -0.834 58.07892 59.46258 41.31930 1 -1 0 + 1025 315 14 0.417 58.27344 60.10968 41.99729 1 -1 0 + 1026 315 14 0.417 57.80524 59.98199 40.56328 1 -1 0 + 1027 316 13 -0.834 42.21869 44.49848 55.65511 2 1 0 + 1028 316 14 0.417 42.77458 44.78017 56.38166 2 1 0 + 1029 316 14 0.417 42.83052 44.15513 55.00395 2 1 0 + 1030 317 13 -0.834 56.38334 63.45614 43.52622 -1 -1 0 + 1031 317 14 0.417 55.66283 63.62998 42.92052 -1 -1 0 + 1032 317 14 0.417 56.48976 64.27319 44.01338 -1 -1 0 + 1033 318 13 -0.834 43.21354 46.04700 52.52965 1 1 0 + 1034 318 14 0.417 43.24360 45.09879 52.40226 1 1 0 + 1035 318 14 0.417 43.99839 46.37328 52.08943 1 1 0 + 1036 319 13 -0.834 55.96174 45.94863 35.39660 -1 0 1 + 1037 319 14 0.417 55.64687 46.44680 36.15088 -1 0 1 + 1038 319 14 0.417 55.28305 46.06527 34.73174 -1 0 1 + 1039 320 13 -0.834 47.36406 54.82690 34.84439 -1 -1 2 + 1040 320 14 0.417 47.90093 54.86776 34.05295 -1 -1 2 + 1041 320 14 0.417 47.23152 53.89118 34.99640 -1 -1 2 + 1042 321 13 -0.834 49.62685 50.00229 45.27362 1 0 -2 + 1043 321 14 0.417 49.70876 49.05477 45.38192 1 0 -2 + 1044 321 14 0.417 49.82566 50.15634 44.35005 1 0 -2 + 1045 322 13 -0.834 49.58249 46.02940 55.43310 -1 0 -2 + 1046 322 14 0.417 49.10378 46.80060 55.12924 -1 0 -2 + 1047 322 14 0.417 49.31802 45.92761 56.34739 -1 0 -2 + 1048 323 13 -0.834 51.72150 51.53491 51.55558 0 -1 -1 + 1049 323 14 0.417 51.50292 52.17946 50.88251 0 -1 -1 + 1050 323 14 0.417 52.14568 52.04382 52.24646 0 -1 -1 + 1051 324 13 -0.834 37.98107 56.66338 52.98024 0 1 0 + 1052 324 14 0.417 37.64467 57.53823 52.78607 0 1 0 + 1053 324 14 0.417 38.15999 56.27913 52.12200 0 1 0 + 1054 325 13 -0.834 59.20226 51.55233 53.16877 -1 1 0 + 1055 325 14 0.417 59.68851 51.88535 53.92302 -1 1 0 + 1056 325 14 0.417 58.63621 50.87031 53.53025 -1 1 0 + 1057 326 13 -0.834 45.75783 63.62117 39.24032 1 1 -1 + 1058 326 14 0.417 46.25179 64.38626 39.53508 1 1 -1 + 1059 326 14 0.417 44.85376 63.80686 39.49409 1 1 -1 + 1060 327 13 -0.834 58.00953 52.38584 37.67148 -1 1 1 + 1061 327 14 0.417 58.24242 51.47235 37.50553 -1 1 1 + 1062 327 14 0.417 57.26453 52.33853 38.27062 -1 1 1 + 1063 328 13 -0.834 50.62838 66.20855 42.36072 0 0 -1 + 1064 328 14 0.417 51.45434 66.68250 42.45770 0 0 -1 + 1065 328 14 0.417 49.99531 66.87945 42.10506 0 0 -1 + 1066 329 13 -0.834 53.69444 52.39171 45.41982 1 0 0 + 1067 329 14 0.417 53.84961 51.45739 45.55855 1 0 0 + 1068 329 14 0.417 52.75879 52.45359 45.22750 1 0 0 + 1069 330 13 -0.834 38.34038 60.92162 30.12773 2 0 0 + 1070 330 14 0.417 39.08908 61.47644 29.90887 2 0 0 + 1071 330 14 0.417 38.64185 60.39196 30.86585 2 0 0 + 1072 331 13 -0.834 48.03336 64.84935 43.13262 -1 0 -2 + 1073 331 14 0.417 48.90813 65.00919 43.48682 -1 0 -2 + 1074 331 14 0.417 47.46214 65.43367 43.63114 -1 0 -2 + 1075 332 13 -0.834 39.68760 66.88962 36.60665 2 0 0 + 1076 332 14 0.417 38.74743 66.72116 36.66944 2 0 0 + 1077 332 14 0.417 40.05009 66.08888 36.22764 2 0 0 + 1078 333 13 -0.834 51.94118 65.49897 51.83197 0 -1 -2 + 1079 333 14 0.417 52.71282 65.06165 51.47204 0 -1 -2 + 1080 333 14 0.417 51.22446 64.88225 51.68297 0 -1 -2 + 1081 334 13 -0.834 43.33066 57.53264 55.09930 -1 0 -2 + 1082 334 14 0.417 43.05496 56.76932 54.59178 -1 0 -2 + 1083 334 14 0.417 44.28179 57.55937 54.99503 -1 0 -2 + 1084 335 13 -0.834 47.70128 45.69178 52.17773 -1 3 -1 + 1085 335 14 0.417 47.54566 44.86273 52.63016 -1 3 -1 + 1086 335 14 0.417 48.58530 45.94693 52.44163 -1 3 -1 + 1087 336 13 -0.834 58.71603 41.81571 40.73899 -1 0 0 + 1088 336 14 0.417 57.77048 41.84330 40.88539 -1 0 0 + 1089 336 14 0.417 58.81275 41.43332 39.86682 -1 0 0 + 1090 337 13 -0.834 57.56034 60.98533 43.60766 0 -1 0 + 1091 337 14 0.417 56.67639 60.61816 43.59917 0 -1 0 + 1092 337 14 0.417 57.42830 61.92611 43.72486 0 -1 0 + 1093 338 13 -0.834 44.68088 65.08579 34.27880 -1 0 2 + 1094 338 14 0.417 45.54678 65.09564 34.68668 -1 0 2 + 1095 338 14 0.417 44.45037 64.15818 34.22739 -1 0 2 + 1096 339 13 -0.834 54.98236 48.04093 42.26075 0 0 0 + 1097 339 14 0.417 55.16505 47.86552 43.18384 0 0 0 + 1098 339 14 0.417 55.70493 48.59999 41.97513 0 0 0 + 1099 340 13 -0.834 60.57099 56.88773 56.53671 0 0 1 + 1100 340 14 0.417 60.67151 56.21616 29.83998 0 0 2 + 1101 340 14 0.417 61.34465 56.78824 55.98192 0 0 1 + 1102 341 13 -0.834 48.05045 49.69974 47.93542 -1 0 0 + 1103 341 14 0.417 48.70922 49.23613 48.45249 -1 0 0 + 1104 341 14 0.417 48.26410 49.48583 47.02721 -1 0 0 + 1105 342 13 -0.834 40.63207 55.77589 49.21695 1 0 -1 + 1106 342 14 0.417 40.84917 56.26844 50.00847 1 0 -1 + 1107 342 14 0.417 41.40772 55.85904 48.66226 1 0 -1 + 1108 343 13 -0.834 61.66015 42.71355 39.91223 0 0 0 + 1109 343 14 0.417 61.87748 41.86774 40.30419 0 0 0 + 1110 343 14 0.417 61.98864 42.65380 39.01514 0 0 0 + 1111 344 13 -0.834 38.52157 65.12766 57.04010 0 -1 -1 + 1112 344 14 0.417 38.04157 64.32142 56.85084 0 -1 -1 + 1113 344 14 0.417 39.36310 65.01535 56.59799 0 -1 -1 + 1114 345 13 -0.834 54.26556 44.72348 38.61852 -1 0 0 + 1115 345 14 0.417 54.65781 45.53245 38.94708 -1 0 0 + 1116 345 14 0.417 54.97105 44.29396 38.13473 -1 0 0 + 1117 346 13 -0.834 55.38993 55.61246 43.96322 -1 0 1 + 1118 346 14 0.417 54.74535 54.99107 43.62461 -1 0 1 + 1119 346 14 0.417 55.11835 55.77119 44.86726 -1 0 1 + 1120 347 13 -0.834 56.42023 55.00369 50.06211 -1 -1 0 + 1121 347 14 0.417 55.77599 55.59187 50.45611 -1 -1 0 + 1122 347 14 0.417 56.93756 54.68448 50.80151 -1 -1 0 + 1123 348 13 -0.834 45.79495 66.88952 36.56670 1 1 -1 + 1124 348 14 0.417 45.28578 66.71904 35.77429 1 1 -1 + 1125 348 14 0.417 46.57709 67.34552 36.25591 1 1 -1 + 1126 349 13 -0.834 62.75278 45.54084 32.23733 0 0 0 + 1127 349 14 0.417 62.61586 44.79986 31.64705 0 0 0 + 1128 349 14 0.417 62.96974 45.14017 33.07913 0 0 0 + 1129 350 13 -0.834 57.50625 65.62986 39.74454 0 0 0 + 1130 350 14 0.417 57.73342 64.85584 40.25983 0 0 0 + 1131 350 14 0.417 57.07082 66.21286 40.36642 0 0 0 + 1132 351 13 -0.834 55.96293 62.10636 50.17062 0 1 -1 + 1133 351 14 0.417 56.24333 61.70901 50.99507 0 1 -1 + 1134 351 14 0.417 56.67888 62.69531 49.93234 0 1 -1 + 1135 352 13 -0.834 37.45010 41.11856 53.00894 0 0 0 + 1136 352 14 0.417 37.99062 41.49514 53.70339 0 0 0 + 1137 352 14 0.417 37.83337 41.45341 52.19826 0 0 0 + 1138 353 13 -0.834 40.59344 47.85232 38.52244 1 0 1 + 1139 353 14 0.417 41.31256 47.71502 37.90580 1 0 1 + 1140 353 14 0.417 40.21612 48.69426 38.26747 1 0 1 + 1141 354 13 -0.834 60.77214 62.31711 30.33695 0 2 -1 + 1142 354 14 0.417 59.83662 62.43212 30.17023 0 2 -1 + 1143 354 14 0.417 60.97856 61.45964 29.96496 0 2 -1 + 1144 355 13 -0.834 47.83829 64.26042 48.43592 0 1 -1 + 1145 355 14 0.417 47.12209 64.85952 48.22523 0 1 -1 + 1146 355 14 0.417 47.44823 63.38856 48.37295 0 1 -1 + 1147 356 13 -0.834 38.69679 45.31108 42.13672 1 1 0 + 1148 356 14 0.417 39.20464 45.52138 41.35308 1 1 0 + 1149 356 14 0.417 37.90440 44.89009 41.80335 1 1 0 + 1150 357 13 -0.834 38.90832 47.67164 52.69089 0 1 0 + 1151 357 14 0.417 39.51269 48.14149 53.26554 0 1 0 + 1152 357 14 0.417 38.42834 48.36117 52.23218 0 1 0 + 1153 358 13 -0.834 45.13879 48.98199 29.96256 0 2 1 + 1154 358 14 0.417 44.63649 48.48457 30.60794 0 2 1 + 1155 358 14 0.417 44.70163 48.80464 56.50106 0 2 0 + 1156 359 13 -0.834 54.78460 57.58368 54.24956 1 1 -1 + 1157 359 14 0.417 54.71436 57.34891 55.17486 1 1 -1 + 1158 359 14 0.417 55.60599 58.07122 54.18735 1 1 -1 + 1159 360 13 -0.834 40.77006 67.09387 46.34204 0 0 1 + 1160 360 14 0.417 40.91087 66.51539 47.09156 0 0 1 + 1161 360 14 0.417 41.47386 67.73986 46.40192 0 0 1 + 1162 361 13 -0.834 53.75960 49.21723 54.03526 1 0 -1 + 1163 361 14 0.417 54.17778 50.07537 53.96484 1 0 -1 + 1164 361 14 0.417 54.18187 48.68822 53.35846 1 0 -1 + 1165 362 13 -0.834 46.41755 62.84035 30.52059 0 0 1 + 1166 362 14 0.417 46.37357 61.90548 30.72136 0 0 1 + 1167 362 14 0.417 46.76359 62.87829 57.00030 0 0 0 + 1168 363 13 -0.834 51.27491 42.28113 30.83818 0 -1 0 + 1169 363 14 0.417 51.18814 42.11416 31.77671 0 -1 0 + 1170 363 14 0.417 50.41560 42.60836 30.57220 0 -1 0 + 1171 364 13 -0.834 52.36258 42.54738 46.83477 0 -1 -1 + 1172 364 14 0.417 51.62853 42.02025 46.51928 0 -1 -1 + 1173 364 14 0.417 53.11771 42.22680 46.34158 0 -1 -1 + 1174 365 13 -0.834 40.11442 46.69570 48.71466 3 -2 1 + 1175 365 14 0.417 39.89820 47.61495 48.55824 3 -2 1 + 1176 365 14 0.417 40.87520 46.72352 49.29493 3 -2 1 + 1177 366 13 -0.834 56.56957 65.78976 45.32589 0 -2 -1 + 1178 366 14 0.417 56.86196 65.56407 46.20896 0 -2 -1 + 1179 366 14 0.417 57.34222 66.16870 44.90678 0 -2 -1 + 1180 367 13 -0.834 38.37373 47.63723 43.98242 2 0 0 + 1181 367 14 0.417 38.78516 47.21384 44.73589 2 0 0 + 1182 367 14 0.417 38.73588 47.18051 43.22315 2 0 0 + 1183 368 13 -0.834 45.69445 49.36872 40.50736 -1 0 -2 + 1184 368 14 0.417 44.73771 49.39892 40.51002 -1 0 -2 + 1185 368 14 0.417 45.90701 48.47357 40.77155 -1 0 -2 + 1186 369 13 -0.834 53.93830 54.76570 31.99728 0 -1 0 + 1187 369 14 0.417 53.94849 55.50033 32.61083 0 -1 0 + 1188 369 14 0.417 53.13070 54.29402 32.20107 0 -1 0 + 1189 370 13 -0.834 58.79125 64.07093 37.97498 -1 -1 -2 + 1190 370 14 0.417 58.48296 64.72380 38.60343 -1 -1 -2 + 1191 370 14 0.417 58.20942 64.16977 37.22136 -1 -1 -2 + 1192 371 13 -0.834 51.76123 61.42281 40.82794 0 -1 0 + 1193 371 14 0.417 52.69114 61.24136 40.69160 0 -1 0 + 1194 371 14 0.417 51.74755 62.21395 41.36660 0 -1 0 + 1195 372 13 -0.834 44.28377 63.70509 53.71234 -1 -2 -1 + 1196 372 14 0.417 44.98211 64.35001 53.59994 -1 -2 -1 + 1197 372 14 0.417 43.75271 63.78587 52.92008 -1 -2 -1 + 1198 373 13 -0.834 61.50835 48.76378 34.91047 0 0 -1 + 1199 373 14 0.417 61.23254 49.09753 34.05678 0 0 -1 + 1200 373 14 0.417 61.51672 49.53447 35.47812 0 0 -1 + 1201 374 13 -0.834 61.51337 41.63477 44.26291 -1 -1 0 + 1202 374 14 0.417 62.42662 41.58544 44.54543 -1 -1 0 + 1203 374 14 0.417 61.34749 68.16405 43.83907 -1 -2 0 + 1204 375 13 -0.834 57.73267 43.39213 33.64792 0 -1 0 + 1205 375 14 0.417 58.46456 43.28438 34.25535 0 -1 0 + 1206 375 14 0.417 58.09278 43.15396 32.79362 0 -1 0 + 1207 376 13 -0.834 63.51473 49.31549 51.59705 -1 1 -1 + 1208 376 14 0.417 63.13045 49.03534 50.76631 -1 1 -1 + 1209 376 14 0.417 62.84038 49.86142 52.00137 -1 1 -1 + 1210 377 13 -0.834 58.21462 44.79010 54.73553 -1 -1 -1 + 1211 377 14 0.417 58.08068 43.94884 55.17209 -1 -1 -1 + 1212 377 14 0.417 57.81645 44.67856 53.87224 -1 -1 -1 + 1213 378 13 -0.834 57.08090 55.14561 52.86183 0 -2 1 + 1214 378 14 0.417 57.05215 55.46811 53.76261 0 -2 1 + 1215 378 14 0.417 57.69965 54.41575 52.88786 0 -2 1 + 1216 379 13 -0.834 60.83502 54.45436 45.82182 1 0 -1 + 1217 379 14 0.417 61.05342 55.38616 45.83857 1 0 -1 + 1218 379 14 0.417 60.79443 54.20077 46.74392 1 0 -1 + 1219 380 13 -0.834 60.86442 48.23162 37.95658 0 0 2 + 1220 380 14 0.417 61.77710 48.43881 37.75572 0 0 2 + 1221 380 14 0.417 60.87611 47.30540 38.19788 0 0 2 + 1222 381 13 -0.834 43.21478 43.26953 44.97859 2 1 -1 + 1223 381 14 0.417 42.50778 42.78849 44.54850 2 1 -1 + 1224 381 14 0.417 43.42173 42.74895 45.75474 2 1 -1 + 1225 382 13 -0.834 39.01904 49.57571 48.28198 1 -1 -1 + 1226 382 14 0.417 38.68877 49.32064 47.42052 1 -1 -1 + 1227 382 14 0.417 38.42357 50.26661 48.57234 1 -1 -1 + 1228 383 13 -0.834 47.20253 45.34580 30.26781 0 0 1 + 1229 383 14 0.417 47.05738 44.40526 30.16508 0 0 1 + 1230 383 14 0.417 46.80592 45.73631 56.86044 0 0 0 + 1231 384 13 -0.834 44.57742 55.88746 33.53830 0 -1 0 + 1232 384 14 0.417 45.13093 56.49768 33.05096 0 -1 0 + 1233 384 14 0.417 44.41092 55.17196 32.92464 0 -1 0 + 1234 385 13 -0.834 42.17091 64.36626 51.74369 1 0 0 + 1235 385 14 0.417 41.78583 65.24128 51.69570 1 0 0 + 1236 385 14 0.417 41.41926 63.77568 51.79343 1 0 0 + 1237 386 13 -0.834 43.82615 43.47821 52.97551 0 0 0 + 1238 386 14 0.417 43.64099 42.56407 52.76025 0 0 0 + 1239 386 14 0.417 44.58924 43.43914 53.55207 0 0 0 + 1240 387 13 -0.834 63.58286 63.91035 38.47173 0 -1 -1 + 1241 387 14 0.417 64.14591 63.71296 39.22023 0 -1 -1 + 1242 387 14 0.417 62.70901 64.01191 38.84896 0 -1 -1 + 1243 388 13 -0.834 57.85225 42.19019 46.82252 1 1 -2 + 1244 388 14 0.417 57.61712 42.29475 47.74450 1 1 -2 + 1245 388 14 0.417 57.29406 42.81537 46.36013 1 1 -2 + 1246 389 13 -0.834 57.90802 64.30101 52.26362 1 0 1 + 1247 389 14 0.417 58.43907 64.81717 52.87010 1 0 1 + 1248 389 14 0.417 58.54387 63.78888 51.76396 1 0 1 + 1249 390 13 -0.834 53.18379 66.68791 54.05156 1 -2 0 + 1250 390 14 0.417 52.23394 66.79510 54.00115 1 -2 0 + 1251 390 14 0.417 53.33447 65.77140 53.82015 1 -2 0 + 1252 391 13 -0.834 56.95394 68.26036 36.42711 -1 1 1 + 1253 391 14 0.417 56.91362 41.83232 36.58445 -1 2 1 + 1254 391 14 0.417 57.79173 67.98998 36.80292 -1 1 1 + 1255 392 13 -0.834 64.19252 44.20158 54.88143 0 0 0 + 1256 392 14 0.417 64.09322 45.07899 54.51194 0 0 0 + 1257 392 14 0.417 63.39239 43.74201 54.62684 0 0 0 + 1258 393 13 -0.834 63.10536 65.42626 48.53464 0 0 0 + 1259 393 14 0.417 62.79665 64.63036 48.10166 0 0 0 + 1260 393 14 0.417 62.77768 65.35429 49.43112 0 0 0 + 1261 394 13 -0.834 49.28836 66.20367 32.27628 1 -1 0 + 1262 394 14 0.417 49.46858 65.88738 33.16155 1 -1 0 + 1263 394 14 0.417 49.29197 65.41476 31.73420 1 -1 0 + 1264 395 13 -0.834 46.11216 66.09570 44.77896 0 -1 0 + 1265 395 14 0.417 45.90309 66.07762 45.71287 0 -1 0 + 1266 395 14 0.417 45.36137 65.67813 44.35683 0 -1 0 + 1267 396 13 -0.834 41.43943 50.30026 52.32584 1 0 0 + 1268 396 14 0.417 41.39866 49.93140 51.44351 1 0 0 + 1269 396 14 0.417 40.92759 49.69528 52.86275 1 0 0 + 1270 397 13 -0.834 54.69177 57.80859 32.50623 0 -1 -1 + 1271 397 14 0.417 53.99890 57.66594 31.86139 0 -1 -1 + 1272 397 14 0.417 54.37599 57.37325 33.29806 0 -1 -1 + 1273 398 13 -0.834 43.56781 46.79065 37.17838 0 1 0 + 1274 398 14 0.417 43.18325 46.24795 36.49004 0 1 0 + 1275 398 14 0.417 44.03819 46.17194 37.73711 0 1 0 + 1276 399 13 -0.834 55.33436 45.90772 50.69068 -1 0 0 + 1277 399 14 0.417 55.55455 46.77982 51.01809 -1 0 0 + 1278 399 14 0.417 55.09425 46.04877 49.77488 -1 0 0 + 1279 400 13 -0.834 56.15383 51.87018 43.92178 -1 0 1 + 1280 400 14 0.417 55.25073 52.12373 44.11256 -1 0 1 + 1281 400 14 0.417 56.65027 52.68628 43.98319 -1 0 1 + 1282 401 13 -0.834 62.38946 50.01240 45.94802 0 1 -2 + 1283 401 14 0.417 62.43815 50.07607 44.99418 0 1 -2 + 1284 401 14 0.417 61.47369 50.19932 46.15457 0 1 -2 + 1285 402 13 -0.834 53.60920 58.35575 46.37412 0 0 1 + 1286 402 14 0.417 53.25556 59.03071 45.79481 0 0 1 + 1287 402 14 0.417 53.24753 57.53627 46.03666 0 0 1 + 1288 403 13 -0.834 43.13375 42.07203 50.04429 1 0 0 + 1289 403 14 0.417 43.76099 42.76922 49.85267 1 0 0 + 1290 403 14 0.417 42.35437 42.53016 50.35879 1 0 0 + 1291 404 13 -0.834 47.41498 59.41146 52.77687 -1 -1 0 + 1292 404 14 0.417 47.81303 59.83868 53.53534 -1 -1 0 + 1293 404 14 0.417 48.01011 59.60512 52.05261 -1 -1 0 + 1294 405 13 -0.834 63.75607 47.28104 38.80571 0 2 -1 + 1295 405 14 0.417 63.78573 48.20840 38.57042 0 2 -1 + 1296 405 14 0.417 37.08655 47.17376 39.44769 1 2 -1 + 1297 406 13 -0.834 46.67594 56.20863 44.42866 1 1 0 + 1298 406 14 0.417 45.82140 56.15280 44.00100 1 1 0 + 1299 406 14 0.417 46.48292 56.12468 45.36243 1 1 0 + 1300 407 13 -0.834 62.54251 68.21194 54.20445 0 -1 1 + 1301 407 14 0.417 63.31640 41.15490 53.73696 0 0 1 + 1302 407 14 0.417 62.78865 67.34176 54.51819 0 -1 1 + 1303 408 13 -0.834 60.27010 54.96049 39.87633 0 0 0 + 1304 408 14 0.417 59.62959 55.67175 39.88547 0 0 0 + 1305 408 14 0.417 61.04761 55.33233 40.29281 0 0 0 + 1306 409 13 -0.834 40.02595 44.30132 44.29580 0 -2 0 + 1307 409 14 0.417 39.70595 44.75009 45.07839 0 -2 0 + 1308 409 14 0.417 39.56836 44.72725 43.57092 0 -2 0 + 1309 410 13 -0.834 54.20011 41.08252 35.61017 0 1 0 + 1310 410 14 0.417 55.10396 68.23613 35.83794 0 0 0 + 1311 410 14 0.417 54.27044 41.57221 34.79072 0 1 0 + 1312 411 13 -0.834 60.64478 45.93023 50.84376 1 1 -1 + 1313 411 14 0.417 60.80088 46.54647 51.55941 1 1 -1 + 1314 411 14 0.417 61.20574 46.24077 50.13303 1 1 -1 + 1315 412 13 -0.834 44.55137 44.47403 38.16771 1 0 -1 + 1316 412 14 0.417 45.28189 43.86333 38.26597 1 0 -1 + 1317 412 14 0.417 43.77025 43.93754 38.30281 1 0 -1 + 1318 413 13 -0.834 58.08933 62.76987 30.45191 1 -1 0 + 1319 413 14 0.417 57.64138 63.31997 29.80927 1 -1 0 + 1320 413 14 0.417 57.43674 62.11708 30.70545 1 -1 0 + 1321 414 13 -0.834 55.65273 56.71117 38.74877 1 0 1 + 1322 414 14 0.417 56.53260 56.59636 39.10779 1 0 1 + 1323 414 14 0.417 55.14964 55.98047 39.10825 1 0 1 + 1324 415 13 -0.834 55.50009 51.16952 38.77962 0 0 0 + 1325 415 14 0.417 54.95350 51.23711 37.99672 0 0 0 + 1326 415 14 0.417 55.53220 50.23190 38.96963 0 0 0 + 1327 416 13 -0.834 47.64702 52.79911 31.71446 0 -1 0 + 1328 416 14 0.417 48.52504 53.09556 31.47481 0 -1 0 + 1329 416 14 0.417 47.06032 53.44853 31.32681 0 -1 0 + 1330 417 13 -0.834 49.26727 42.35880 39.18566 1 1 -2 + 1331 417 14 0.417 50.02784 42.93912 39.15429 1 1 -2 + 1332 417 14 0.417 49.46495 41.74196 39.89040 1 1 -2 + 1333 418 13 -0.834 47.22542 64.65021 35.82232 1 -1 0 + 1334 418 14 0.417 46.76114 65.20346 36.45050 1 -1 0 + 1335 418 14 0.417 47.98585 65.16966 35.56120 1 -1 0 + 1336 419 13 -0.834 58.53686 56.85468 40.78587 1 1 0 + 1337 419 14 0.417 58.45283 56.63469 41.71365 1 1 0 + 1338 419 14 0.417 58.36285 57.79507 40.74550 1 1 0 + 1339 420 13 -0.834 50.09436 46.17981 48.16619 -1 -1 -2 + 1340 420 14 0.417 50.67249 45.42897 48.30138 -1 -1 -2 + 1341 420 14 0.417 50.49629 46.88624 48.67183 -1 -1 -2 + 1342 421 13 -0.834 42.30297 57.95379 33.48633 0 -1 1 + 1343 421 14 0.417 41.56921 57.39445 33.23136 0 -1 1 + 1344 421 14 0.417 43.00718 57.34235 33.70193 0 -1 1 + 1345 422 13 -0.834 45.76518 43.79811 54.82490 0 -1 0 + 1346 422 14 0.417 46.45133 43.55343 54.20397 0 -1 0 + 1347 422 14 0.417 45.87205 43.18693 55.55379 0 -1 0 + 1348 423 13 -0.834 59.33326 61.34125 37.96927 -1 -1 1 + 1349 423 14 0.417 59.29007 62.29004 38.08827 -1 -1 1 + 1350 423 14 0.417 59.90006 61.03609 38.67769 -1 -1 1 + 1351 424 13 -0.834 40.95662 63.48104 42.72192 1 -1 0 + 1352 424 14 0.417 40.33618 63.69074 42.02383 1 -1 0 + 1353 424 14 0.417 41.73946 63.17568 42.26346 1 -1 0 + 1354 425 13 -0.834 38.13662 59.25720 46.08402 1 -1 -1 + 1355 425 14 0.417 38.31499 59.03616 46.99811 1 -1 -1 + 1356 425 14 0.417 38.55502 58.55783 45.58196 1 -1 -1 + 1357 426 13 -0.834 48.88681 66.85051 54.82298 1 -2 0 + 1358 426 14 0.417 49.16879 67.45078 54.13275 1 -2 0 + 1359 426 14 0.417 49.42353 66.06836 54.69484 1 -2 0 + 1360 427 13 -0.834 45.88049 57.05477 48.46508 0 0 -1 + 1361 427 14 0.417 45.73709 57.90911 48.05793 0 0 -1 + 1362 427 14 0.417 45.83791 57.22701 49.40569 0 0 -1 + 1363 428 13 -0.834 39.37333 50.31613 37.93447 0 1 0 + 1364 428 14 0.417 39.11456 50.97624 37.29140 0 1 0 + 1365 428 14 0.417 38.97424 50.60960 38.75352 0 1 0 + 1366 429 13 -0.834 37.89753 62.82745 47.39297 0 -1 0 + 1367 429 14 0.417 38.39122 62.78202 46.57414 0 -1 0 + 1368 429 14 0.417 37.01605 63.08963 47.12747 0 -1 0 + 1369 430 13 -0.834 43.16514 41.31420 47.01379 0 1 0 + 1370 430 14 0.417 42.71409 41.22965 47.85382 0 1 0 + 1371 430 14 0.417 44.05112 68.36565 47.18386 0 0 0 + 1372 431 13 -0.834 47.03179 42.44477 42.46475 1 0 0 + 1373 431 14 0.417 46.12350 42.65285 42.24573 1 0 0 + 1374 431 14 0.417 47.53228 43.19970 42.15516 1 0 0 + 1375 432 13 -0.834 55.35894 54.15040 46.85340 0 -1 0 + 1376 432 14 0.417 54.76544 53.43667 46.61975 0 -1 0 + 1377 432 14 0.417 56.17133 53.71318 47.10853 0 -1 0 + 1378 433 13 -0.834 47.00663 55.28313 38.22800 -1 -2 1 + 1379 433 14 0.417 46.53490 56.00706 38.63987 -1 -2 1 + 1380 433 14 0.417 47.07459 54.61953 38.91449 -1 -2 1 + 1381 434 13 -0.834 57.16336 58.62297 32.33349 -1 0 2 + 1382 434 14 0.417 57.63330 57.80350 32.48798 -1 0 2 + 1383 434 14 0.417 56.24209 58.36680 32.29014 -1 0 2 + 1384 435 13 -0.834 37.23245 47.62479 56.34765 0 1 -1 + 1385 435 14 0.417 37.24274 47.21497 55.48268 0 1 -1 + 1386 435 14 0.417 37.36000 46.89905 56.95860 0 1 -1 + 1387 436 13 -0.834 48.77030 41.06015 29.86683 2 1 0 + 1388 436 14 0.417 48.81141 67.97117 56.39997 2 0 -1 + 1389 436 14 0.417 49.05230 67.78232 30.51123 2 0 0 + 1390 437 13 -0.834 49.10149 56.15638 36.66346 0 0 1 + 1391 437 14 0.417 48.50786 55.61659 36.14146 0 0 1 + 1392 437 14 0.417 48.61812 56.33305 37.47053 0 0 1 + 1393 438 13 -0.834 58.15731 59.39698 29.96092 0 -1 1 + 1394 438 14 0.417 58.20240 59.10993 30.87296 0 -1 1 + 1395 438 14 0.417 57.30076 59.81721 29.88367 0 -1 1 + 1396 439 13 -0.834 59.37068 41.03089 37.87324 1 0 0 + 1397 439 14 0.417 59.56889 41.95335 37.71194 1 0 0 + 1398 439 14 0.417 60.22643 67.97433 37.90167 1 -1 0 + 1399 440 13 -0.834 38.32241 55.03397 50.58952 1 0 0 + 1400 440 14 0.417 38.22793 54.19584 50.13692 1 0 0 + 1401 440 14 0.417 39.21785 55.31153 50.39614 1 0 0 + 1402 441 13 -0.834 36.94673 59.01778 33.00159 1 -1 2 + 1403 441 14 0.417 36.95260 59.97305 32.94091 1 -1 2 + 1404 441 14 0.417 63.71798 58.82680 33.72245 0 -1 2 + 1405 442 13 -0.834 62.50746 54.84239 54.03343 0 -1 0 + 1406 442 14 0.417 61.69710 54.35984 54.19681 0 -1 0 + 1407 442 14 0.417 63.09119 54.20097 53.62833 0 -1 0 + 1408 443 13 -0.834 40.59690 62.80012 38.69405 1 -1 1 + 1409 443 14 0.417 41.53881 62.90970 38.82458 1 -1 1 + 1410 443 14 0.417 40.36980 62.03187 39.21794 1 -1 1 + 1411 444 13 -0.834 37.67477 67.71471 42.59127 0 -1 -1 + 1412 444 14 0.417 38.12213 68.13627 41.85751 0 -1 -1 + 1413 444 14 0.417 38.28279 67.03643 42.88534 0 -1 -1 + 1414 445 13 -0.834 42.73681 50.65782 33.30839 1 1 0 + 1415 445 14 0.417 42.84587 51.15085 34.12157 1 1 0 + 1416 445 14 0.417 42.32631 51.27747 32.70527 1 1 0 + 1417 446 13 -0.834 37.13349 57.05842 55.81927 0 0 0 + 1418 446 14 0.417 37.95375 57.53453 55.68979 0 0 0 + 1419 446 14 0.417 36.99014 56.59807 54.99236 0 0 0 + 1420 447 13 -0.834 61.08039 63.50929 36.52096 -1 0 0 + 1421 447 14 0.417 60.44389 63.87414 37.13579 -1 0 0 + 1422 447 14 0.417 61.70642 63.04107 37.07331 -1 0 0 + 1423 448 13 -0.834 57.12289 46.04019 38.75954 0 0 0 + 1424 448 14 0.417 56.81351 45.55997 39.52760 0 0 0 + 1425 448 14 0.417 57.99543 45.68504 38.58988 0 0 0 + 1426 449 13 -0.834 45.45003 49.45347 49.54397 0 0 -1 + 1427 449 14 0.417 45.96611 49.34591 48.74502 0 0 -1 + 1428 449 14 0.417 46.09930 49.60861 50.22999 0 0 -1 + 1429 450 13 -0.834 37.77009 64.51990 42.66941 1 0 0 + 1430 450 14 0.417 38.49339 64.80040 43.23011 1 0 0 + 1431 450 14 0.417 38.14071 64.50928 41.78694 1 0 0 + 1432 451 13 -0.834 45.78323 57.65378 39.37062 1 0 0 + 1433 451 14 0.417 46.03758 58.03295 40.21190 1 0 0 + 1434 451 14 0.417 44.96217 58.09258 39.14803 1 0 0 + 1435 452 13 -0.834 56.96672 60.41636 47.59314 0 -1 1 + 1436 452 14 0.417 56.18373 60.11455 48.05365 0 -1 1 + 1437 452 14 0.417 56.65889 61.13663 47.04297 0 -1 1 + 1438 453 13 -0.834 52.44356 65.82746 35.82081 -1 -1 0 + 1439 453 14 0.417 53.10567 65.14225 35.91211 -1 -1 0 + 1440 453 14 0.417 52.93741 66.64611 35.86748 -1 -1 0 + 1441 454 13 -0.834 50.70912 51.42252 40.30021 0 0 -1 + 1442 454 14 0.417 50.97387 50.70177 39.72866 0 0 -1 + 1443 454 14 0.417 50.17774 51.98938 39.74116 0 0 -1 + 1444 455 13 -0.834 39.22290 45.94023 39.69239 2 1 -1 + 1445 455 14 0.417 39.63836 46.66722 39.22859 2 1 -1 + 1446 455 14 0.417 38.97218 45.32685 39.00164 2 1 -1 + 1447 456 13 -0.834 43.73041 61.86387 55.46954 2 0 0 + 1448 456 14 0.417 43.61274 62.32163 56.30192 2 0 0 + 1449 456 14 0.417 43.90401 62.55964 54.83549 2 0 0 + 1450 457 13 -0.834 61.51877 56.42039 33.84869 0 0 1 + 1451 457 14 0.417 62.17805 55.74211 33.70200 0 0 1 + 1452 457 14 0.417 62.00943 57.15723 34.21276 0 0 1 + 1453 458 13 -0.834 51.72050 63.63199 42.34406 1 0 1 + 1454 458 14 0.417 51.24482 64.43296 42.56407 1 0 1 + 1455 458 14 0.417 52.62118 63.92057 42.19669 1 0 1 + 1456 459 13 -0.834 54.73666 56.51839 51.73687 0 0 -1 + 1457 459 14 0.417 54.77503 56.56844 52.69200 0 0 -1 + 1458 459 14 0.417 54.91702 57.41111 51.44234 0 0 -1 + 1459 460 13 -0.834 50.97984 54.35591 33.27919 0 1 0 + 1460 460 14 0.417 50.47200 55.12727 33.02747 0 1 0 + 1461 460 14 0.417 50.36917 53.82187 33.78725 0 1 0 + 1462 461 13 -0.834 44.82656 54.45280 36.09973 1 0 2 + 1463 461 14 0.417 45.75766 54.23599 36.14740 1 0 2 + 1464 461 14 0.417 44.76968 55.11700 35.41283 1 0 2 + 1465 462 13 -0.834 58.05791 56.64716 55.29041 1 1 0 + 1466 462 14 0.417 58.98499 56.81997 55.45441 1 1 0 + 1467 462 14 0.417 57.82639 55.96338 55.91897 1 1 0 + 1468 463 13 -0.834 55.95112 61.02029 30.79757 1 0 1 + 1469 463 14 0.417 55.28483 61.63344 30.48711 1 0 1 + 1470 463 14 0.417 55.45357 60.27206 31.12748 1 0 1 + 1471 464 13 -0.834 54.80996 46.88659 45.41700 -1 0 0 + 1472 464 14 0.417 55.42348 46.16300 45.28950 -1 0 0 + 1473 464 14 0.417 54.08129 46.68997 44.82826 -1 0 0 + 1474 465 13 -0.834 60.19361 64.43268 31.92053 0 -1 2 + 1475 465 14 0.417 60.05792 63.85315 32.67017 0 -1 2 + 1476 465 14 0.417 60.47170 63.84993 31.21392 0 -1 2 + 1477 466 13 -0.834 45.55496 65.56032 30.88251 0 -1 1 + 1478 466 14 0.417 45.97644 64.70102 30.89691 0 -1 1 + 1479 466 14 0.417 45.82502 65.97384 31.70248 0 -1 1 + 1480 467 13 -0.834 52.92714 44.06759 29.88429 0 1 0 + 1481 467 14 0.417 52.39641 43.38446 30.29405 0 1 0 + 1482 467 14 0.417 53.79372 43.96686 30.27818 0 1 0 + 1483 468 13 -0.834 40.71534 55.31247 44.93070 1 0 0 + 1484 468 14 0.417 39.81994 55.07165 45.16841 1 0 0 + 1485 468 14 0.417 41.16802 54.47609 44.82218 1 0 0 + 1486 469 13 -0.834 64.04777 59.80626 42.91634 0 -1 -1 + 1487 469 14 0.417 37.09051 60.51146 43.41377 1 -1 -1 + 1488 469 14 0.417 37.01609 59.00291 43.31068 1 -1 -1 + 1489 470 13 -0.834 57.05030 49.72625 41.88829 -1 1 1 + 1490 470 14 0.417 56.75150 50.53290 42.30818 -1 1 1 + 1491 470 14 0.417 57.52176 50.02159 41.10935 -1 1 1 + 1492 471 13 -0.834 62.59447 67.67898 41.14714 -2 -2 1 + 1493 471 14 0.417 63.45155 67.57764 41.56112 -2 -2 1 + 1494 471 14 0.417 61.96974 67.40478 41.81854 -2 -2 1 + 1495 472 13 -0.834 62.98029 58.34420 35.34278 0 0 1 + 1496 472 14 0.417 62.45371 58.26151 36.13783 0 0 1 + 1497 472 14 0.417 63.83636 58.64077 35.65169 0 0 1 + 1498 473 13 -0.834 63.44584 56.74146 44.14484 0 1 -2 + 1499 473 14 0.417 64.13590 56.53036 44.77371 0 1 -2 + 1500 473 14 0.417 62.70665 57.02149 44.68470 0 1 -2 + 1501 474 13 -0.834 44.05905 56.56929 51.60681 1 0 -1 + 1502 474 14 0.417 43.57850 56.15764 52.32504 1 0 -1 + 1503 474 14 0.417 43.90344 55.99747 50.85512 1 0 -1 + 1504 475 13 -0.834 37.49588 59.31379 39.05252 0 0 0 + 1505 475 14 0.417 37.07904 58.45297 39.09112 0 0 0 + 1506 475 14 0.417 37.58867 59.49374 38.11696 0 0 0 + 1507 476 13 -0.834 54.75747 41.52122 56.48609 -1 1 0 + 1508 476 14 0.417 54.79987 42.39714 56.86981 -1 1 0 + 1509 476 14 0.417 54.80582 41.67034 55.54179 -1 1 0 + 1510 477 13 -0.834 42.91665 58.39379 47.91495 1 0 0 + 1511 477 14 0.417 43.70923 58.91951 47.80683 1 0 0 + 1512 477 14 0.417 42.28811 58.98861 48.32409 1 0 0 + 1513 478 13 -0.834 60.63731 64.78822 56.03697 -2 1 -1 + 1514 478 14 0.417 60.86485 63.91302 56.35082 -2 1 -1 + 1515 478 14 0.417 60.50973 65.30321 56.83369 -2 1 -1 + 1516 479 13 -0.834 52.85180 54.69512 43.09842 0 0 1 + 1517 479 14 0.417 52.31485 55.13373 42.43846 0 0 1 + 1518 479 14 0.417 53.08000 53.85428 42.70200 0 0 1 + 1519 480 13 -0.834 51.49497 54.97356 38.95012 -2 1 -1 + 1520 480 14 0.417 50.77717 54.34090 38.97811 -2 1 -1 + 1521 480 14 0.417 51.51597 55.35169 39.82923 -2 1 -1 + 1522 481 13 -0.834 40.46924 62.02458 56.36341 1 0 -1 + 1523 481 14 0.417 40.45814 61.65439 55.48076 1 0 -1 + 1524 481 14 0.417 40.81799 62.90856 56.24853 1 0 -1 + 1525 482 13 -0.834 52.26692 56.29032 45.24820 0 2 1 + 1526 482 14 0.417 51.65227 56.79794 44.71834 0 2 1 + 1527 482 14 0.417 52.43092 55.49973 44.73408 0 2 1 + 1528 483 13 -0.834 53.46372 44.63556 52.39623 -1 1 1 + 1529 483 14 0.417 53.51664 45.03502 53.26448 -1 1 1 + 1530 483 14 0.417 54.08491 45.13343 51.86474 -1 1 1 + 1531 484 13 -0.834 42.90202 49.87822 40.32919 0 2 1 + 1532 484 14 0.417 42.40392 49.63281 41.10889 0 2 1 + 1533 484 14 0.417 42.31302 50.45172 39.83885 0 2 1 + 1534 485 13 -0.834 43.07357 64.57931 39.44006 2 1 1 + 1535 485 14 0.417 42.79300 64.80186 38.55237 2 1 1 + 1536 485 14 0.417 43.26869 65.42268 39.84860 2 1 1 + 1537 486 13 -0.834 38.86691 42.35197 55.12826 1 1 -1 + 1538 486 14 0.417 38.06621 42.87541 55.16185 1 1 -1 + 1539 486 14 0.417 39.52681 42.89488 55.55954 1 1 -1 + 1540 487 13 -0.834 59.15412 47.19863 55.46904 0 -1 0 + 1541 487 14 0.417 59.83963 46.99833 56.10636 0 -1 0 + 1542 487 14 0.417 58.74433 46.35364 55.28381 0 -1 0 + 1543 488 13 -0.834 52.12071 45.94110 44.23903 1 1 0 + 1544 488 14 0.417 51.89927 45.05144 44.51416 1 1 0 + 1545 488 14 0.417 52.26697 45.87115 43.29566 1 1 0 + 1546 489 13 -0.834 41.73140 52.23741 31.27732 0 0 1 + 1547 489 14 0.417 40.84403 52.55314 31.44796 0 0 1 + 1548 489 14 0.417 41.81503 52.26011 30.32405 0 0 1 + 1549 490 13 -0.834 38.46034 66.01701 52.27886 1 0 -1 + 1550 490 14 0.417 39.39276 66.02392 52.49517 1 0 -1 + 1551 490 14 0.417 38.11246 66.80769 52.69121 1 0 -1 + 1552 491 13 -0.834 42.13838 67.12262 54.88509 0 0 -3 + 1553 491 14 0.417 42.22460 67.38235 53.96784 0 0 -3 + 1554 491 14 0.417 42.96673 67.38388 55.28736 0 0 -3 + 1555 492 13 -0.834 37.89607 66.86351 46.16867 -1 -1 -1 + 1556 492 14 0.417 38.03129 66.98073 47.10899 -1 -1 -1 + 1557 492 14 0.417 38.75367 66.60168 45.83369 -1 -1 -1 + 1558 493 13 -0.834 40.37538 58.21424 30.88318 0 -1 0 + 1559 493 14 0.417 41.23010 58.63566 30.79307 0 -1 0 + 1560 493 14 0.417 40.45502 57.40101 30.38463 0 -1 0 + 1561 494 13 -0.834 54.56531 48.85249 32.17940 1 -2 2 + 1562 494 14 0.417 54.90082 48.98086 31.29216 1 -2 2 + 1563 494 14 0.417 54.03604 49.63141 32.35086 1 -2 2 + 1564 495 13 -0.834 63.56488 49.70113 37.88594 0 -1 1 + 1565 495 14 0.417 63.93261 49.40780 37.05228 0 -1 1 + 1566 495 14 0.417 63.98151 50.54765 38.04739 0 -1 1 + 1567 496 13 -0.834 39.26126 54.76920 54.71493 2 -1 2 + 1568 496 14 0.417 38.75402 55.21237 54.03483 2 -1 2 + 1569 496 14 0.417 38.67139 54.73109 55.46781 2 -1 2 + 1570 497 13 -0.834 42.78607 47.20625 49.30057 2 -1 0 + 1571 497 14 0.417 42.93670 46.34815 48.90404 2 -1 0 + 1572 497 14 0.417 43.53800 47.33917 49.87780 2 -1 0 + 1573 498 13 -0.834 59.99490 55.30114 50.55687 0 1 -1 + 1574 498 14 0.417 60.84158 55.66821 50.81111 0 1 -1 + 1575 498 14 0.417 59.38335 56.03363 50.63237 0 1 -1 + 1576 499 13 -0.834 57.95276 49.30660 54.37087 1 -1 -1 + 1577 499 14 0.417 57.34184 49.29544 55.10769 1 -1 -1 + 1578 499 14 0.417 58.55272 48.58151 54.54557 1 -1 -1 + 1579 500 13 -0.834 43.43041 64.04345 57.10111 1 -1 -1 + 1580 500 14 0.417 43.03742 64.07155 30.60210 1 -1 0 + 1581 500 14 0.417 44.26016 64.51104 29.82515 1 -1 0 + 1582 501 13 -0.834 40.71066 57.82778 50.85579 1 -1 -1 + 1583 501 14 0.417 41.04411 57.83612 51.75299 1 -1 -1 + 1584 501 14 0.417 40.96886 58.67633 50.49590 1 -1 -1 + 1585 502 13 -0.834 61.21331 60.53661 39.63578 1 -1 0 + 1586 502 14 0.417 61.87151 61.23113 39.61011 1 -1 0 + 1587 502 14 0.417 61.32085 60.13583 40.49837 1 -1 0 + 1588 503 13 -0.834 43.54081 65.33296 49.47114 1 -1 -1 + 1589 503 14 0.417 42.67637 65.41138 49.06762 1 -1 -1 + 1590 503 14 0.417 43.36562 64.99829 50.35065 1 -1 -1 + 1591 504 13 -0.834 50.27329 53.06087 30.87109 -1 0 1 + 1592 504 14 0.417 50.38769 53.42204 29.99204 -1 0 1 + 1593 504 14 0.417 50.86354 53.57620 31.42092 -1 0 1 + 1594 505 13 -0.834 40.29157 66.01889 32.67757 0 -1 0 + 1595 505 14 0.417 40.18198 66.27998 31.76320 0 -1 0 + 1596 505 14 0.417 39.39873 65.90460 33.00317 0 -1 0 + 1597 506 13 -0.834 48.15372 67.97019 44.25255 1 -1 1 + 1598 506 14 0.417 47.34263 67.52534 44.49854 1 -1 1 + 1599 506 14 0.417 47.87159 41.31478 43.68328 1 0 1 + 1600 507 13 -0.834 53.38019 63.98437 38.13827 0 0 -1 + 1601 507 14 0.417 54.19463 63.69976 37.72362 0 0 -1 + 1602 507 14 0.417 53.59582 64.82739 38.53711 0 0 -1 + 1603 508 13 -0.834 40.87597 58.12305 53.50808 0 0 0 + 1604 508 14 0.417 40.17916 58.26636 54.14852 0 0 0 + 1605 508 14 0.417 41.66044 58.48234 53.92256 0 0 0 + 1606 509 13 -0.834 38.19887 52.28056 36.30714 2 0 -1 + 1607 509 14 0.417 38.20463 53.19038 36.60452 2 0 -1 + 1608 509 14 0.417 38.09924 52.33929 35.35695 2 0 -1 + 1609 510 13 -0.834 49.63883 57.32410 43.72359 0 -1 0 + 1610 510 14 0.417 49.72446 58.17232 43.28833 0 -1 0 + 1611 510 14 0.417 48.76183 57.33851 44.10688 0 -1 0 + 1612 511 13 -0.834 42.58791 59.61362 29.86455 1 0 0 + 1613 511 14 0.417 43.07246 58.91969 56.78877 1 0 -1 + 1614 511 14 0.417 42.69535 60.38141 56.67447 1 0 -1 + 1615 512 13 -0.834 50.76111 60.95449 46.98165 -1 0 -1 + 1616 512 14 0.417 50.90477 61.15450 47.90663 -1 0 -1 + 1617 512 14 0.417 50.20825 61.66875 46.66473 -1 0 -1 + 1618 513 13 -0.834 43.18406 55.61939 48.08539 1 0 0 + 1619 513 14 0.417 43.11229 56.55752 47.90932 1 0 0 + 1620 513 14 0.417 44.01330 55.36231 47.68228 1 0 0 + 1621 514 13 -0.834 54.67377 64.76817 41.62522 1 0 1 + 1622 514 14 0.417 54.39407 65.19031 40.81294 1 0 1 + 1623 514 14 0.417 55.29742 65.38243 42.01250 1 0 1 + 1624 515 13 -0.834 53.87383 68.12810 51.72031 0 -1 0 + 1625 515 14 0.417 53.06918 41.24938 51.55887 0 0 0 + 1626 515 14 0.417 53.74278 67.72971 52.58074 0 -1 0 + 1627 516 13 -0.834 38.24785 41.26767 33.50598 2 0 0 + 1628 516 14 0.417 38.16490 67.75301 33.15337 2 -1 0 + 1629 516 14 0.417 37.95757 41.83753 32.79377 2 0 0 + 1630 517 13 -0.834 47.35008 61.96125 42.94580 2 -2 0 + 1631 517 14 0.417 47.46077 62.90828 43.03015 2 -2 0 + 1632 517 14 0.417 47.09087 61.83022 42.03373 2 -2 0 + 1633 518 13 -0.834 40.55210 54.00820 41.89137 1 -1 1 + 1634 518 14 0.417 39.80099 54.24986 41.34946 1 -1 1 + 1635 518 14 0.417 40.19429 53.40377 42.54166 1 -1 1 + 1636 519 13 -0.834 57.17705 64.40362 55.44286 1 -1 -1 + 1637 519 14 0.417 56.34510 64.78670 55.72097 1 -1 -1 + 1638 519 14 0.417 57.64987 65.12814 55.03330 1 -1 -1 + 1639 520 13 -0.834 41.86955 59.84132 42.65268 0 -1 1 + 1640 520 14 0.417 41.72011 59.11980 43.26367 0 -1 1 + 1641 520 14 0.417 42.24995 60.53605 43.19017 0 -1 1 + 1642 521 13 -0.834 61.62566 57.26645 46.18447 0 -1 -1 + 1643 521 14 0.417 60.68119 57.41642 46.22577 0 -1 -1 + 1644 521 14 0.417 61.98987 57.84356 46.85569 0 -1 -1 + 1645 522 13 -0.834 46.82701 65.68647 41.03579 0 0 0 + 1646 522 14 0.417 46.01385 65.85266 41.51264 0 0 0 + 1647 522 14 0.417 47.44009 65.38297 41.70531 0 0 0 + 1648 523 13 -0.834 54.12960 45.94549 32.81485 0 0 1 + 1649 523 14 0.417 53.25962 45.65636 32.53955 0 0 1 + 1650 523 14 0.417 54.18942 46.85072 32.50950 0 0 1 + 1651 524 13 -0.834 43.71268 59.97805 32.34985 1 1 0 + 1652 524 14 0.417 43.46300 59.27568 32.95033 1 1 0 + 1653 524 14 0.417 42.94131 60.10757 31.79808 1 1 0 + 1654 525 13 -0.834 50.10604 48.47250 49.62054 1 0 -2 + 1655 525 14 0.417 50.96037 48.77303 49.31064 1 0 -2 + 1656 525 14 0.417 50.19320 48.44287 50.57331 1 0 -2 + 1657 526 13 -0.834 54.68660 60.38920 43.62499 0 0 0 + 1658 526 14 0.417 54.62862 59.85089 42.83561 0 0 0 + 1659 526 14 0.417 53.78667 60.44045 43.94712 0 0 0 + 1660 527 13 -0.834 56.35115 44.75736 40.87552 0 -1 -1 + 1661 527 14 0.417 56.99705 44.99197 41.54186 0 -1 -1 + 1662 527 14 0.417 55.55387 44.56808 41.37024 0 -1 -1 + 1663 528 13 -0.834 48.77009 62.36934 40.44473 0 -1 0 + 1664 528 14 0.417 49.30266 62.60520 41.20432 0 -1 0 + 1665 528 14 0.417 49.04689 62.97756 39.75939 0 -1 0 + 1666 529 13 -0.834 45.88757 58.55209 41.94547 0 1 0 + 1667 529 14 0.417 46.76719 58.27665 42.20365 0 1 0 + 1668 529 14 0.417 45.35604 57.75963 42.02128 0 1 0 + 1669 530 13 -0.834 39.44116 52.22097 43.65725 1 0 2 + 1670 530 14 0.417 39.30570 52.06689 44.59221 1 0 2 + 1671 530 14 0.417 38.61744 52.60378 43.35530 1 0 2 + 1672 531 13 -0.834 43.95976 66.73852 41.23250 1 0 1 + 1673 531 14 0.417 44.64454 67.13772 40.69588 1 0 1 + 1674 531 14 0.417 43.40678 67.47232 41.50081 1 0 1 + 1675 532 13 -0.834 62.99634 65.50241 54.70446 0 -1 -1 + 1676 532 14 0.417 63.58398 64.98613 55.25617 0 -1 -1 + 1677 532 14 0.417 62.12519 65.14960 54.88585 0 -1 -1 + 1678 533 13 -0.834 62.92898 53.27582 44.77167 0 0 0 + 1679 533 14 0.417 62.08998 53.60880 45.09018 0 0 0 + 1680 533 14 0.417 62.85751 52.32504 44.85618 0 0 0 + 1681 534 13 -0.834 63.31201 43.08081 48.29805 -1 0 -1 + 1682 534 14 0.417 63.01276 42.23705 47.95930 -1 0 -1 + 1683 534 14 0.417 63.67142 43.53221 47.53431 -1 0 -1 + 1684 535 13 -0.834 47.11867 63.34781 55.06249 0 0 -1 + 1685 535 14 0.417 47.19267 64.30022 55.00160 0 0 -1 + 1686 535 14 0.417 46.22495 63.15783 54.77716 0 0 -1 + 1687 536 13 -0.834 60.37216 67.91341 52.27568 -1 0 0 + 1688 536 14 0.417 61.05051 68.14950 52.90839 -1 0 0 + 1689 536 14 0.417 60.81546 67.93922 51.42771 -1 0 0 + 1690 537 13 -0.834 60.04315 43.26291 35.25445 -1 1 1 + 1691 537 14 0.417 60.42501 44.05815 35.62593 -1 1 1 + 1692 537 14 0.417 60.79709 42.72574 35.01102 -1 1 1 + 1693 538 13 -0.834 53.03851 55.52589 47.75769 0 0 -1 + 1694 538 14 0.417 53.93635 55.46537 47.43136 0 0 -1 + 1695 538 14 0.417 52.51527 55.73342 46.98347 0 0 -1 + 1696 539 13 -0.834 37.91895 50.43697 56.37325 0 0 0 + 1697 539 14 0.417 37.51622 49.56884 56.35299 0 0 0 + 1698 539 14 0.417 38.37591 50.50915 55.53527 0 0 0 + 1699 540 13 -0.834 50.50006 63.56852 38.27177 1 1 0 + 1700 540 14 0.417 50.22462 63.18436 37.43944 1 1 0 + 1701 540 14 0.417 51.44083 63.71275 38.16986 1 1 0 + 1702 541 13 -0.834 49.44600 43.95446 42.01861 0 0 1 + 1703 541 14 0.417 49.59639 44.80378 41.60354 0 0 1 + 1704 541 14 0.417 49.73882 44.07372 42.92211 0 0 1 + 1705 542 13 -0.834 50.98365 47.23031 39.51901 1 0 1 + 1706 542 14 0.417 51.18743 48.09631 39.16579 1 0 1 + 1707 542 14 0.417 50.03928 47.13635 39.39410 1 0 1 + 1708 543 13 -0.834 45.54625 60.20130 44.30493 0 0 2 + 1709 543 14 0.417 46.27140 60.62480 43.84553 0 0 2 + 1710 543 14 0.417 45.09838 59.69256 43.62904 0 0 2 + 1711 544 13 -0.834 60.48207 53.69772 48.42686 0 0 1 + 1712 544 14 0.417 60.03677 54.31581 49.00644 0 0 1 + 1713 544 14 0.417 59.89364 52.94407 48.38216 0 0 1 + 1714 545 13 -0.834 63.04952 45.83903 48.97963 -1 1 1 + 1715 545 14 0.417 63.88202 45.63831 49.40729 -1 1 1 + 1716 545 14 0.417 62.76408 45.00498 48.60667 -1 1 1 + 1717 546 13 -0.834 40.62890 44.95273 52.60003 2 -1 -2 + 1718 546 14 0.417 41.29110 45.55853 52.26721 2 -1 -2 + 1719 546 14 0.417 40.33885 45.34348 53.42431 2 -1 -2 + 1720 547 13 -0.834 39.91743 46.12102 55.72693 -1 1 -1 + 1721 547 14 0.417 40.70381 45.68274 56.05216 -1 1 -1 + 1722 547 14 0.417 39.19323 45.65943 56.14967 -1 1 -1 + 1723 548 13 -0.834 42.06829 45.07566 41.79962 0 0 -1 + 1724 548 14 0.417 41.61985 45.91039 41.93531 0 0 -1 + 1725 548 14 0.417 41.86481 44.56390 42.58253 0 0 -1 + 1726 549 13 -0.834 44.17588 49.40877 37.86902 1 1 0 + 1727 549 14 0.417 43.85185 49.35470 38.76808 1 1 0 + 1728 549 14 0.417 43.95346 48.56183 37.48242 1 1 0 + 1729 550 13 -0.834 52.64793 63.92130 45.68237 0 1 0 + 1730 550 14 0.417 52.63502 62.96908 45.58561 0 1 0 + 1731 550 14 0.417 52.43571 64.07178 46.60356 0 1 0 + 1732 551 13 -0.834 51.57615 43.64864 38.83377 1 1 0 + 1733 551 14 0.417 51.74260 43.03820 38.11551 1 1 0 + 1734 551 14 0.417 52.20192 44.35945 38.69449 1 1 0 + 1735 552 13 -0.834 62.02099 63.12241 47.73587 0 1 0 + 1736 552 14 0.417 61.17806 62.75352 47.99973 0 1 0 + 1737 552 14 0.417 62.48263 62.39363 47.32116 0 1 0 + 1738 553 13 -0.834 38.41497 51.40373 50.93034 1 1 0 + 1739 553 14 0.417 37.60807 51.12879 50.49494 1 1 0 + 1740 553 14 0.417 38.99796 51.65996 50.21571 1 1 0 + 1741 554 13 -0.834 51.96339 44.25313 49.02477 0 0 0 + 1742 554 14 0.417 52.81680 44.60151 49.28274 0 0 0 + 1743 554 14 0.417 52.16570 43.57682 48.37831 0 0 0 + 1744 555 13 -0.834 43.58422 51.42052 49.88959 0 1 -1 + 1745 555 14 0.417 42.74054 51.00549 50.06897 0 1 -1 + 1746 555 14 0.417 44.20160 50.69175 49.82657 0 1 -1 + 1747 556 13 -0.834 52.39836 53.43568 49.29165 1 0 -1 + 1748 556 14 0.417 51.88756 52.90169 48.68323 1 0 -1 + 1749 556 14 0.417 52.64451 54.20889 48.78391 1 0 -1 + 1750 557 13 -0.834 57.76885 46.61656 49.32842 0 1 0 + 1751 557 14 0.417 57.83718 46.26991 48.43879 0 1 0 + 1752 557 14 0.417 58.65246 46.53329 49.68694 0 1 0 + 1753 558 13 -0.834 59.20868 56.75211 36.79427 0 1 -1 + 1754 558 14 0.417 59.74268 56.20033 36.22276 0 1 -1 + 1755 558 14 0.417 58.75094 56.13459 37.36470 0 1 -1 + 1756 559 13 -0.834 51.74055 42.45875 36.24184 0 1 1 + 1757 559 14 0.417 51.04879 41.79745 36.22260 0 1 1 + 1758 559 14 0.417 52.52794 41.99055 35.96429 0 1 1 + 1759 560 13 -0.834 56.37631 67.32150 33.05439 -1 0 1 + 1760 560 14 0.417 56.52797 66.39716 33.25152 -1 0 1 + 1761 560 14 0.417 56.88845 67.79399 33.71068 -1 0 1 + 1762 561 13 -0.834 54.61713 62.99597 56.69158 0 1 -1 + 1763 561 14 0.417 54.59393 63.94258 56.83172 0 1 -1 + 1764 561 14 0.417 54.12883 62.86158 55.87934 0 1 -1 + 1765 562 13 -0.834 59.12420 67.78462 34.49420 0 -1 1 + 1766 562 14 0.417 59.61921 67.94665 33.69111 0 -1 1 + 1767 562 14 0.417 59.22686 41.21594 35.00547 0 0 1 + 1768 563 13 -0.834 63.35827 53.14027 38.43168 -1 0 0 + 1769 563 14 0.417 62.48186 53.05933 38.05538 -1 0 0 + 1770 563 14 0.417 63.87715 53.55740 37.74392 -1 0 0 + 1771 564 13 -0.834 50.05518 64.80335 44.94078 1 0 -2 + 1772 564 14 0.417 50.16173 65.71408 44.66608 1 0 -2 + 1773 564 14 0.417 50.94818 64.48993 45.08424 1 0 -2 + 1774 565 13 -0.834 61.91076 61.67486 44.00650 0 -3 0 + 1775 565 14 0.417 61.40514 60.86646 44.09077 0 -3 0 + 1776 565 14 0.417 62.58390 61.60857 44.68380 0 -3 0 + 1777 566 13 -0.834 61.53884 41.33016 50.02212 -1 0 -1 + 1778 566 14 0.417 61.75835 68.35836 49.15591 -1 -1 -1 + 1779 566 14 0.417 62.19075 42.01255 50.18215 -1 0 -1 + 1780 567 13 -0.834 54.81641 49.94673 49.66324 0 -1 -1 + 1781 567 14 0.417 54.81533 50.72359 50.22249 0 -1 -1 + 1782 567 14 0.417 53.94410 49.93341 49.26932 0 -1 -1 + 1783 568 13 -0.834 60.68933 64.00249 53.56679 -1 -1 -1 + 1784 568 14 0.417 60.72666 63.10922 53.90872 -1 -1 -1 + 1785 568 14 0.417 60.37485 64.52808 54.30238 -1 -1 -1 + 1786 569 13 -0.834 55.51605 42.60469 53.96890 0 -1 0 + 1787 569 14 0.417 55.82084 42.66633 53.06360 0 -1 0 + 1788 569 14 0.417 54.99565 43.39708 54.10137 0 -1 0 + 1789 570 13 -0.834 43.79008 68.23755 52.31171 2 -1 1 + 1790 570 14 0.417 43.47705 41.06627 51.42954 2 0 1 + 1791 570 14 0.417 44.72624 68.07073 52.20206 2 -1 1 + 1792 571 13 -0.834 40.19615 44.94623 32.57234 0 0 1 + 1793 571 14 0.417 40.90940 45.49825 32.25173 0 0 1 + 1794 571 14 0.417 40.42796 44.75889 33.48196 0 0 1 + 1795 572 13 -0.834 51.93921 56.60019 36.60262 -1 0 1 + 1796 572 14 0.417 51.78399 56.35099 37.51368 -1 0 1 + 1797 572 14 0.417 51.06469 56.74242 36.24039 -1 0 1 + 1798 573 13 -0.834 61.66916 50.48338 53.29865 -1 0 -2 + 1799 573 14 0.417 61.63036 50.41309 54.25248 -1 0 -2 + 1800 573 14 0.417 60.77283 50.69388 53.03687 -1 0 -2 + 1801 574 13 -0.834 51.74160 54.87485 56.16871 0 -1 0 + 1802 574 14 0.417 50.91429 55.26706 56.44795 0 -1 0 + 1803 574 14 0.417 51.91124 55.25931 55.30869 0 -1 0 + 1804 575 13 -0.834 40.85698 68.18248 30.13155 1 -1 0 + 1805 575 14 0.417 41.30492 67.87357 56.71541 1 -1 -1 + 1806 575 14 0.417 41.55175 41.19073 30.66952 1 0 0 + 1807 576 13 -0.834 50.89809 58.89690 54.50288 -1 0 0 + 1808 576 14 0.417 50.06229 58.64352 54.89466 -1 0 0 + 1809 576 14 0.417 51.37024 59.33797 55.20914 -1 0 0 + 1810 577 13 -0.834 58.37524 67.95427 49.91095 0 1 0 + 1811 577 14 0.417 57.83519 41.29391 50.25604 0 2 0 + 1812 577 14 0.417 59.26942 68.19076 50.15744 0 1 0 + 1813 578 13 -0.834 51.40785 46.48357 30.68744 1 0 1 + 1814 578 14 0.417 52.21871 45.99275 30.55389 1 0 1 + 1815 578 14 0.417 50.76683 45.82189 30.94725 1 0 1 + 1816 579 13 -0.834 57.04032 43.52295 36.91237 0 0 0 + 1817 579 14 0.417 56.97310 44.35969 36.45239 0 0 0 + 1818 579 14 0.417 57.91622 43.53095 37.29833 0 0 0 + 1819 580 13 -0.834 48.05479 47.92450 33.11226 0 0 1 + 1820 580 14 0.417 47.68291 48.79527 32.97186 0 0 1 + 1821 580 14 0.417 48.92592 48.09081 33.47242 0 0 1 + 1822 581 13 -0.834 52.31083 59.89064 56.95945 1 -2 -1 + 1823 581 14 0.417 51.77727 60.32576 30.25310 1 -2 0 + 1824 581 14 0.417 52.84806 60.59010 56.58744 1 -2 -1 + 1825 582 13 -0.834 49.28190 53.14534 38.62511 0 0 1 + 1826 582 14 0.417 48.56647 53.70668 38.92395 0 0 1 + 1827 582 14 0.417 48.86634 52.52585 38.02526 0 0 1 + 1828 583 13 -0.834 48.15214 51.90611 34.43290 2 0 0 + 1829 583 14 0.417 48.57405 51.97443 33.57642 2 0 0 + 1830 583 14 0.417 47.22654 51.76503 34.23389 2 0 0 + 1831 584 13 -0.834 61.27546 54.09168 30.34511 0 1 1 + 1832 584 14 0.417 61.26898 53.84689 31.27046 0 1 1 + 1833 584 14 0.417 62.02427 53.62196 29.97785 0 1 1 + 1834 585 13 -0.834 47.15916 50.47662 53.78471 0 -1 0 + 1835 585 14 0.417 47.32648 50.93912 54.60588 0 -1 0 + 1836 585 14 0.417 46.29671 50.78520 53.50690 0 -1 0 + 1837 586 13 -0.834 58.58091 63.09753 49.23949 0 -1 1 + 1838 586 14 0.417 59.43607 63.50227 49.38484 0 -1 1 + 1839 586 14 0.417 58.76326 62.34843 48.67219 0 -1 1 + 1840 587 13 -0.834 55.82082 49.65937 30.11648 0 1 1 + 1841 587 14 0.417 56.52757 49.92139 30.70647 0 1 1 + 1842 587 14 0.417 55.68213 50.42183 56.92602 0 1 0 + 1843 588 13 -0.834 63.79581 52.53565 53.17702 0 -2 1 + 1844 588 14 0.417 36.89869 52.41207 52.35479 1 -2 1 + 1845 588 14 0.417 63.12882 51.84908 53.17487 0 -2 1 + 1846 589 13 -0.834 58.30874 56.36537 43.52715 0 0 3 + 1847 589 14 0.417 58.58025 56.80205 44.33452 0 0 3 + 1848 589 14 0.417 57.40732 56.09029 43.69457 0 0 3 + 1849 590 13 -0.834 38.42652 61.06904 33.48425 0 -2 -1 + 1850 590 14 0.417 39.08604 61.75763 33.56856 0 -2 -1 + 1851 590 14 0.417 38.90648 60.25628 33.64334 0 -2 -1 + 1852 591 13 -0.834 46.61439 51.58566 41.81121 1 -1 0 + 1853 591 14 0.417 46.97646 51.37067 42.67082 1 -1 0 + 1854 591 14 0.417 46.41089 50.73724 41.41750 1 -1 0 + 1855 592 13 -0.834 60.01555 43.31814 42.71405 1 0 1 + 1856 592 14 0.417 60.52150 42.79903 43.33920 1 0 1 + 1857 592 14 0.417 59.90024 42.74003 41.95989 1 0 1 + 1858 593 13 -0.834 44.88246 59.34852 51.75271 1 0 -1 + 1859 593 14 0.417 45.75263 59.37400 52.15069 1 0 -1 + 1860 593 14 0.417 44.67274 58.41644 51.69374 1 0 -1 + 1861 594 13 -0.834 58.22051 53.10280 51.15729 0 -1 0 + 1862 594 14 0.417 58.53381 52.60654 51.91346 0 -1 0 + 1863 594 14 0.417 58.92607 53.72100 50.96688 0 -1 0 + 1864 595 13 -0.834 52.85332 67.67658 42.66705 0 -1 0 + 1865 595 14 0.417 53.29462 67.40699 41.86157 0 -1 0 + 1866 595 14 0.417 53.28090 67.16860 43.35652 0 -1 0 + 1867 596 13 -0.834 60.42773 53.38162 37.56585 0 0 1 + 1868 596 14 0.417 60.55482 53.97513 38.30601 0 0 1 + 1869 596 14 0.417 59.53313 53.05721 37.66924 0 0 1 + 1870 597 13 -0.834 56.52028 65.87791 50.38146 0 0 1 + 1871 597 14 0.417 56.94337 66.73645 50.39389 0 0 1 + 1872 597 14 0.417 57.02985 65.35034 50.99649 0 0 1 + 1873 598 13 -0.834 54.80064 62.49993 33.68680 1 0 1 + 1874 598 14 0.417 55.58425 61.96146 33.79744 1 0 1 + 1875 598 14 0.417 55.10591 63.27334 33.21259 1 0 1 + 1876 599 13 -0.834 44.11783 61.90196 34.52932 1 1 -1 + 1877 599 14 0.417 44.98641 61.86349 34.92975 1 1 -1 + 1878 599 14 0.417 44.21923 61.44892 33.69223 1 1 -1 + 1879 600 13 -0.834 47.64060 51.80694 44.33090 -1 -1 0 + 1880 600 14 0.417 48.33775 51.24158 44.66345 -1 -1 0 + 1881 600 14 0.417 47.96940 52.69619 44.46262 -1 -1 0 + 1882 601 13 -0.834 56.93644 64.17109 32.73010 0 -2 0 + 1883 601 14 0.417 57.35484 63.79547 31.95543 0 -2 0 + 1884 601 14 0.417 57.46604 63.85913 33.46389 0 -2 0 + 1885 602 13 -0.834 40.19928 60.95715 53.68963 1 0 -1 + 1886 602 14 0.417 41.08822 60.76154 53.39341 1 0 -1 + 1887 602 14 0.417 39.80336 61.43545 52.96114 1 0 -1 + 1888 603 13 -0.834 56.02366 41.52320 41.07986 0 1 0 + 1889 603 14 0.417 55.42766 41.48842 40.33165 0 1 0 + 1890 603 14 0.417 55.93467 42.41489 41.41631 0 1 0 + 1891 604 13 -0.834 52.35261 67.43639 29.83633 -1 0 0 + 1892 604 14 0.417 53.08703 67.77971 56.69878 -1 0 -1 + 1893 604 14 0.417 51.97673 68.20568 30.26426 -1 0 0 + 1894 605 13 -0.834 51.14102 49.90060 37.90539 1 0 1 + 1895 605 14 0.417 51.41236 49.08269 37.48865 1 0 1 + 1896 605 14 0.417 50.32915 50.13989 37.45830 1 0 1 + 1897 606 13 -0.834 48.40753 57.18555 40.43062 0 0 0 + 1898 606 14 0.417 47.74030 57.19949 39.74445 0 0 0 + 1899 606 14 0.417 48.68357 58.09814 40.51553 0 0 0 + 1900 607 13 -0.834 38.43185 54.52830 40.23522 1 -2 1 + 1901 607 14 0.417 37.76601 54.24704 40.86274 1 -2 1 + 1902 607 14 0.417 37.95756 54.62565 39.40951 1 -2 1 + 1903 608 13 -0.834 52.97765 52.38562 41.57118 0 0 0 + 1904 608 14 0.417 52.16773 52.00413 41.23247 0 0 0 + 1905 608 14 0.417 53.62059 51.67937 41.50742 0 0 0 + 1906 609 13 -0.834 52.82978 61.35779 35.40768 0 1 -2 + 1907 609 14 0.417 53.63682 61.71145 35.03372 0 1 -2 + 1908 609 14 0.417 53.10766 60.57217 35.87865 0 1 -2 + 1909 610 13 -0.834 55.37636 43.79165 30.66790 0 0 0 + 1910 610 14 0.417 55.82860 43.25432 31.31827 0 0 0 + 1911 610 14 0.417 55.97415 44.52040 30.50110 0 0 0 + 1912 611 13 -0.834 37.90570 54.55715 45.50029 1 -2 -1 + 1913 611 14 0.417 37.12871 54.09851 45.18066 1 -2 -1 + 1914 611 14 0.417 38.24821 53.99402 46.19441 1 -2 -1 + 1915 612 13 -0.834 60.01324 50.96528 45.16358 1 1 0 + 1916 612 14 0.417 59.85669 51.13906 44.23539 1 1 0 + 1917 612 14 0.417 59.48415 50.19096 45.35532 1 1 0 + 1918 613 13 -0.834 38.84394 52.32942 30.93040 2 1 0 + 1919 613 14 0.417 38.51878 51.61086 30.38802 2 1 0 + 1920 613 14 0.417 38.41000 53.10831 30.58218 2 1 0 + 1921 614 13 -0.834 38.99542 61.66171 44.80992 1 0 2 + 1922 614 14 0.417 38.78488 60.74588 44.99207 1 0 2 + 1923 614 14 0.417 39.68427 61.62223 44.14648 1 0 2 + 1924 615 13 -0.834 57.70791 41.72720 55.47643 0 1 -2 + 1925 615 14 0.417 57.25844 41.36846 56.24163 0 1 -2 + 1926 615 14 0.417 57.00496 41.93588 54.86116 0 1 -2 + 1927 616 13 -0.834 58.08999 54.20225 35.53764 0 -1 0 + 1928 616 14 0.417 58.28608 53.46338 36.11372 0 -1 0 + 1929 616 14 0.417 57.15628 54.11553 35.34551 0 -1 0 + 1930 617 13 -0.834 53.05217 52.71850 54.07873 0 0 -1 + 1931 617 14 0.417 52.72353 53.45661 54.59199 0 0 -1 + 1932 617 14 0.417 52.69237 51.94509 54.51306 0 0 -1 + 1933 618 13 -0.834 49.92059 65.13477 35.13462 0 1 1 + 1934 618 14 0.417 50.86780 65.25694 35.19866 0 1 1 + 1935 618 14 0.417 49.79534 64.18846 35.20565 0 1 1 + 1936 619 13 -0.834 41.32410 62.50943 46.98364 1 -1 0 + 1937 619 14 0.417 40.63048 62.20572 46.39807 1 -1 0 + 1938 619 14 0.417 41.96090 61.79482 46.99226 1 -1 0 + 1939 620 13 -0.834 53.94559 67.39201 49.11860 0 0 0 + 1940 620 14 0.417 54.46912 66.60137 48.98810 0 0 0 + 1941 620 14 0.417 54.03461 67.58755 50.05138 0 0 0 + 1942 621 13 -0.834 62.73724 52.28919 56.37358 -2 0 0 + 1943 621 14 0.417 61.94239 51.76764 56.26203 -2 0 0 + 1944 621 14 0.417 63.44036 51.64333 56.44233 -2 0 0 + 1945 622 13 -0.834 40.38118 67.16060 39.18721 2 1 1 + 1946 622 14 0.417 41.33280 67.21360 39.09858 2 1 1 + 1947 622 14 0.417 40.05780 67.12713 38.28691 2 1 1 + 1948 623 13 -0.834 62.86517 42.00727 34.57539 -1 0 -1 + 1949 623 14 0.417 63.37239 42.81882 34.59420 -1 0 -1 + 1950 623 14 0.417 63.40838 41.39624 34.07760 -1 0 -1 + 1951 624 13 -0.834 45.52270 49.32960 34.34348 1 -1 1 + 1952 624 14 0.417 45.92383 49.19413 33.48500 1 -1 1 + 1953 624 14 0.417 45.24004 50.24407 34.33468 1 -1 1 + 1954 625 13 -0.834 61.03811 44.77668 56.49913 1 1 0 + 1955 625 14 0.417 60.72892 43.87199 56.45248 1 1 0 + 1956 625 14 0.417 60.93423 45.11202 55.60864 1 1 0 + 1957 626 13 -0.834 37.82896 51.65548 39.75440 0 1 1 + 1958 626 14 0.417 37.05574 52.05171 39.35268 0 1 1 + 1959 626 14 0.417 38.46628 52.36806 39.80236 0 1 1 + 1960 627 13 -0.834 57.87448 65.36125 35.56679 -1 -1 0 + 1961 627 14 0.417 58.45940 64.84211 35.01489 -1 -1 0 + 1962 627 14 0.417 58.01580 66.26448 35.28319 -1 -1 0 + 1963 628 13 -0.834 41.02352 64.37669 36.41484 0 0 1 + 1964 628 14 0.417 40.85775 63.95254 37.25679 0 0 1 + 1965 628 14 0.417 41.32667 63.66948 35.84545 0 0 1 + 1966 629 13 -0.834 48.62923 67.86173 41.06030 1 0 1 + 1967 629 14 0.417 48.15680 41.13844 41.58283 1 1 1 + 1968 629 14 0.417 47.94185 67.35115 40.63246 1 0 1 + 1969 630 13 -0.834 57.99331 55.69311 47.88478 1 2 0 + 1970 630 14 0.417 57.70999 55.65425 48.79826 1 2 0 + 1971 630 14 0.417 57.37284 55.13407 47.41709 1 2 0 + 1972 631 13 -0.834 48.67013 62.47689 45.75332 -1 -1 0 + 1973 631 14 0.417 49.00300 63.35392 45.56291 -1 -1 0 + 1974 631 14 0.417 48.17776 62.23177 44.96992 -1 -1 0 + 1975 632 13 -0.834 63.70160 54.96100 33.30497 -1 0 0 + 1976 632 14 0.417 64.21034 55.41699 32.63452 -1 0 0 + 1977 632 14 0.417 36.84822 54.18301 33.51151 0 0 0 + 1978 633 13 -0.834 61.71933 50.02843 40.52579 1 0 -1 + 1979 633 14 0.417 61.89605 49.89083 39.59516 1 0 -1 + 1980 633 14 0.417 61.20325 50.83404 40.55551 1 0 -1 + 1981 634 13 -0.834 49.51254 64.46386 53.41539 0 -1 -1 + 1982 634 14 0.417 48.93704 63.81647 53.00803 0 -1 -1 + 1983 634 14 0.417 49.96102 63.98252 54.11066 0 -1 -1 + 1984 635 13 -0.834 49.54405 44.64373 31.53722 1 2 1 + 1985 635 14 0.417 49.17415 44.45447 32.39954 1 2 1 + 1986 635 14 0.417 48.78808 44.87386 30.99705 1 2 1 + 1987 636 13 -0.834 55.54392 65.92737 37.61921 0 -1 -1 + 1988 636 14 0.417 56.11408 65.75233 38.36791 0 -1 -1 + 1989 636 14 0.417 56.12096 66.32174 36.96519 0 -1 -1 + 1990 637 13 -0.834 55.12269 51.83986 35.86341 1 0 1 + 1991 637 14 0.417 55.56426 51.26412 35.23910 1 0 1 + 1992 637 14 0.417 54.23658 51.93728 35.51477 1 0 1 + 1993 638 13 -0.834 55.63681 62.23759 37.50835 1 -1 0 + 1994 638 14 0.417 55.30920 61.35525 37.33403 1 -1 0 + 1995 638 14 0.417 56.23965 62.41667 36.78672 1 -1 0 + 1996 639 13 -0.834 39.91450 42.04260 35.59226 0 0 0 + 1997 639 14 0.417 39.72903 41.27571 36.13422 0 0 0 + 1998 639 14 0.417 39.23583 42.02933 34.91737 0 0 0 + 1999 640 13 -0.834 48.26433 59.84813 40.16126 0 1 0 + 2000 640 14 0.417 48.74870 60.67004 40.23938 0 1 0 + 2001 640 14 0.417 47.50743 60.06639 39.61748 0 1 0 + 2002 641 13 -0.834 57.35097 49.28414 48.37687 1 1 1 + 2003 641 14 0.417 57.35715 48.51028 48.94022 1 1 1 + 2004 641 14 0.417 56.55074 49.75049 48.61854 1 1 1 + +Velocities + + 1 -0.000671 -0.002823 0.003832 + 2 -0.001597 0.002405 -0.003777 + 3 0.005494 0.003807 -0.002300 + 4 -0.000077 0.004524 -0.000287 + 5 0.003116 -0.007135 -0.034325 + 6 -0.006676 0.004889 -0.001939 + 7 0.003499 -0.004774 0.000159 + 8 -0.003460 0.000694 0.000994 + 9 -0.000065 -0.001353 -0.002848 + 10 -0.001260 -0.002649 0.000699 + 11 -0.002820 -0.002457 -0.005671 + 12 0.005156 -0.005914 0.000984 + 13 -0.002342 -0.001592 0.004306 + 14 0.004397 -0.000231 0.003308 + 15 -0.003258 -0.000006 0.001838 + 16 -0.001637 -0.004429 0.003154 + 17 0.007073 -0.000472 -0.003331 + 18 -0.003380 -0.001390 0.005013 + 19 -0.011019 -0.005332 -0.010451 + 20 -0.005433 0.000844 0.004938 + 21 0.002988 0.000244 -0.009941 + 22 -0.003695 0.006546 -0.007678 + 23 0.009473 0.023276 0.019457 + 24 -0.010016 -0.024193 0.018017 + 25 0.004015 0.008726 -0.000397 + 26 -0.001741 -0.001861 0.007862 + 27 -0.009771 -0.011577 -0.005703 + 28 0.003573 0.006265 -0.005932 + 29 0.004789 0.001987 -0.004620 + 30 0.008858 -0.001064 -0.001455 + 31 -0.001403 0.000613 0.002330 + 32 -0.005808 -0.001620 0.000816 + 33 -0.004160 0.001188 -0.019638 + 34 -0.006899 0.006285 0.013256 + 35 0.000717 -0.000432 -0.006883 + 36 0.002110 0.002628 -0.004683 + 37 0.000765 -0.007298 0.000289 + 38 -0.000128 -0.002893 0.004065 + 39 -0.000411 -0.021741 0.010968 + 40 0.002858 0.000302 0.000042 + 41 0.014233 -0.004599 -0.004060 + 42 -0.001473 -0.003572 -0.006228 + 43 0.009129 -0.002755 0.001456 + 44 0.003931 0.000151 0.003472 + 45 0.001621 0.005391 -0.006087 + 46 -0.004269 -0.001973 0.002735 + 47 -0.006898 -0.001187 -0.003394 + 48 -0.008556 -0.000163 -0.001387 + 49 -0.000633 -0.001754 0.011460 + 50 0.004854 -0.002902 -0.005057 + 51 0.000678 0.003272 0.006218 + 52 0.006502 0.006365 -0.000215 + 53 0.005708 0.012368 0.002955 + 54 0.008627 -0.007839 0.003177 + 55 0.004394 0.000132 0.002346 + 56 -0.004641 0.009426 -0.005548 + 57 -0.004801 -0.024766 0.002851 + 58 -0.002703 0.001589 0.007521 + 59 0.023718 -0.006559 0.003743 + 60 -0.010013 -0.042894 -0.029745 + 61 0.016140 -0.000721 -0.001747 + 62 -0.004871 0.002439 0.001990 + 63 0.009632 0.007144 0.001203 + 64 -0.001150 0.001648 -0.003018 + 65 0.006658 -0.002268 0.006874 + 66 -0.002617 0.003321 0.002230 + 67 -0.000803 0.002802 0.003258 + 68 -0.000984 -0.001579 -0.001813 + 69 0.001316 0.000607 0.003431 + 70 -0.010901 0.000580 -0.004134 + 71 0.005370 -0.003909 0.013130 + 72 -0.012282 0.007114 -0.015100 + 73 0.004641 -0.007554 0.004302 + 74 0.017455 0.013344 0.004896 + 75 0.006200 0.026885 0.020665 + 76 -0.010372 0.000470 -0.005601 + 77 -0.003368 -0.004484 0.010962 + 78 0.012416 -0.004728 0.000719 + 79 -0.005789 0.005198 -0.007541 + 80 0.005480 -0.004049 0.003455 + 81 -0.004935 0.005839 -0.006405 + 82 0.001157 -0.011200 0.018491 + 83 -0.029013 -0.016935 0.021131 + 84 -0.020335 0.020972 0.006071 + 85 0.003304 0.007374 -0.005056 + 86 0.029227 0.010776 -0.013183 + 87 0.001651 0.006570 -0.002085 + 88 0.001533 -0.009172 0.007562 + 89 0.018153 -0.022223 0.015786 + 90 -0.010012 -0.004911 0.002561 + 91 0.000435 0.003941 -0.005468 + 92 0.003301 0.001183 -0.006999 + 93 0.006788 0.011331 -0.004427 + 94 0.001392 0.005663 -0.002907 + 95 -0.001849 -0.002229 -0.003422 + 96 -0.000820 0.005872 0.004561 + 97 -0.003264 0.002461 -0.009257 + 98 0.000160 0.016954 -0.015355 + 99 -0.006597 0.011858 0.000426 + 100 0.001816 -0.005854 -0.001317 + 101 -0.001936 -0.006103 0.018111 + 102 0.024621 -0.022735 -0.000704 + 103 -0.001102 0.008384 -0.003086 + 104 0.012559 0.004375 -0.000361 + 105 0.008377 0.014814 -0.037755 + 106 -0.002851 -0.000200 -0.000722 + 107 0.010701 0.006888 -0.007831 + 108 -0.008490 0.011514 0.009399 + 109 -0.001181 0.001853 0.002176 + 110 -0.018912 -0.023868 0.006706 + 111 -0.000415 -0.001525 0.005751 + 112 -0.001172 0.001329 -0.001270 + 113 -0.006700 -0.006243 -0.006459 + 114 0.000018 0.001429 0.001376 + 115 0.001269 0.002521 0.005249 + 116 -0.002179 0.015666 0.006861 + 117 -0.007158 0.000981 0.007353 + 118 0.001047 0.000840 -0.004404 + 119 0.000974 -0.012527 0.005053 + 120 0.026729 0.008884 -0.003350 + 121 0.001181 -0.004040 -0.002037 + 122 0.006556 -0.007438 0.002656 + 123 0.005056 -0.015002 -0.003727 + 124 -0.002704 -0.003683 -0.001021 + 125 0.025048 0.007258 0.008873 + 126 0.019645 -0.020824 -0.002539 + 127 0.000061 0.001072 0.002612 + 128 0.005132 0.013203 0.018763 + 129 0.033473 0.004804 0.018651 + 130 -0.003459 -0.000309 -0.001348 + 131 -0.008088 0.023660 0.011047 + 132 0.010962 0.031994 0.008711 + 133 0.000181 -0.002894 -0.001677 + 134 0.024049 -0.000711 -0.009405 + 135 0.018702 0.003422 -0.019522 + 136 -0.000836 -0.003270 -0.005700 + 137 0.012246 0.016524 0.001525 + 138 0.006270 -0.011288 0.002224 + 139 -0.005169 0.005097 -0.000688 + 140 -0.006982 0.003044 -0.001383 + 141 0.012227 0.012767 0.004047 + 142 -0.001169 0.006070 -0.007989 + 143 0.005451 0.002569 -0.009841 + 144 0.001825 -0.002822 -0.005341 + 145 0.000911 0.004242 -0.002026 + 146 0.012072 -0.001187 -0.010498 + 147 0.007366 0.005541 0.012099 + 148 0.009820 0.000588 0.001087 + 149 0.013758 0.005140 0.015262 + 150 0.015580 0.003311 0.013079 + 151 0.002031 0.000411 0.003403 + 152 -0.001996 0.003750 0.007387 + 153 0.000790 0.000281 -0.000919 + 154 -0.004168 0.001886 -0.004993 + 155 -0.011049 0.015294 0.001052 + 156 -0.012308 0.010348 -0.003128 + 157 -0.001609 -0.004040 -0.002294 + 158 -0.005715 -0.015529 -0.005700 + 159 0.014489 0.026653 0.004024 + 160 0.004070 0.000866 0.003373 + 161 0.004691 0.005062 0.002569 + 162 0.007082 -0.019961 -0.026174 + 163 0.005501 0.000902 -0.001325 + 164 0.007503 0.001448 -0.001472 + 165 0.013628 0.003649 -0.005952 + 166 -0.000639 0.003162 -0.007271 + 167 0.007342 -0.011001 -0.016849 + 168 -0.018400 -0.004772 0.020839 + 169 0.000214 -0.000386 0.002706 + 170 -0.005862 0.010449 -0.003793 + 171 -0.013612 0.011870 -0.006417 + 172 -0.005485 0.006465 0.005343 + 173 0.001788 0.008428 0.005641 + 174 -0.018354 0.029579 0.010717 + 175 0.002627 -0.000754 0.000071 + 176 -0.018080 0.018546 0.001794 + 177 0.006754 -0.000962 -0.007786 + 178 0.002343 0.002166 0.004945 + 179 -0.001724 0.003155 0.010761 + 180 0.010728 0.003441 0.001544 + 181 -0.000849 -0.002856 0.001461 + 182 0.009366 -0.003672 -0.001935 + 183 0.016615 -0.001746 0.005238 + 184 -0.002730 -0.000316 -0.004583 + 185 -0.014755 -0.011310 0.003338 + 186 0.005862 0.008235 -0.003200 + 187 -0.003189 -0.006285 0.009536 + 188 -0.005114 -0.007060 0.006450 + 189 -0.000516 -0.008757 0.009854 + 190 -0.000859 0.005266 0.001864 + 191 0.003108 -0.007021 0.009190 + 192 -0.015949 -0.002050 0.007021 + 193 -0.007008 0.002608 -0.004583 + 194 -0.020431 -0.004004 0.008047 + 195 -0.000364 0.001236 -0.011425 + 196 0.002420 0.006931 0.002031 + 197 0.007178 0.006129 0.009924 + 198 -0.005981 0.016623 -0.013067 + 199 0.003142 -0.001394 -0.001846 + 200 0.011374 -0.002895 -0.000674 + 201 0.032698 -0.002552 0.007288 + 202 -0.005709 0.000071 0.005037 + 203 -0.013193 -0.012592 -0.008102 + 204 -0.008194 0.014723 0.003840 + 205 -0.003270 -0.006146 0.004301 + 206 0.004399 -0.010132 -0.001197 + 207 -0.030308 0.012803 0.003540 + 208 0.002110 0.002374 0.006075 + 209 -0.000845 -0.004182 -0.002795 + 210 0.002582 -0.004671 0.002224 + 211 -0.003768 0.002130 0.001339 + 212 0.022509 0.017397 0.002782 + 213 0.020609 0.006682 -0.014082 + 214 0.003956 0.004282 -0.005023 + 215 0.007499 0.004128 0.002237 + 216 0.034882 -0.005096 0.008948 + 217 -0.002552 -0.000287 -0.001907 + 218 0.025445 0.005560 -0.016526 + 219 0.002741 0.000814 -0.004654 + 220 0.002162 -0.001203 0.000936 + 221 0.004071 0.004725 0.001938 + 222 0.002393 -0.013063 -0.003950 + 223 -0.001609 -0.003218 -0.004310 + 224 -0.012550 0.009033 -0.007868 + 225 0.014344 0.000886 -0.013005 + 226 0.005863 0.010335 -0.003424 + 227 0.011104 -0.005602 -0.012415 + 228 0.001222 0.002408 0.001546 + 229 -0.002038 0.001858 0.002991 + 230 -0.017517 -0.020932 0.016099 + 231 0.005257 0.011588 -0.018236 + 232 -0.002660 -0.006193 0.003186 + 233 -0.021995 0.012375 0.004372 + 234 -0.013906 0.028004 -0.004997 + 235 0.002339 -0.001255 -0.003548 + 236 0.001689 0.005243 -0.006337 + 237 0.000498 -0.007782 -0.015260 + 238 0.001142 0.002234 0.003408 + 239 0.007521 0.004622 -0.003272 + 240 -0.001154 0.006952 0.006739 + 241 -0.000938 -0.004609 0.002499 + 242 0.004903 0.001117 0.013021 + 243 0.008126 -0.013873 -0.001075 + 244 -0.004097 0.002491 -0.002459 + 245 0.002093 -0.002989 0.010881 + 246 0.008552 0.010436 0.008330 + 247 -0.000211 0.002295 0.001935 + 248 0.004346 0.003486 0.008405 + 249 -0.006182 0.002873 -0.007955 + 250 0.002466 0.001439 -0.002302 + 251 -0.003246 0.007233 0.009469 + 252 -0.002606 0.002646 0.002563 + 253 0.000833 -0.001794 -0.003483 + 254 -0.001066 -0.001277 -0.012569 + 255 -0.003354 -0.002604 -0.016130 + 256 0.007379 0.006324 -0.003535 + 257 0.025411 0.006788 -0.010928 + 258 0.011648 0.000201 0.004051 + 259 -0.000385 -0.000823 -0.000593 + 260 -0.001070 -0.019569 0.006235 + 261 0.011350 0.009136 0.002805 + 262 -0.001688 0.002178 0.004704 + 263 -0.011748 0.007674 0.002198 + 264 -0.005358 0.003728 -0.002879 + 265 -0.004209 0.000686 -0.004990 + 266 0.000586 0.011928 0.008080 + 267 0.004512 -0.002493 -0.000297 + 268 -0.000130 0.007801 -0.005732 + 269 -0.006259 -0.000991 -0.001515 + 270 0.015560 -0.011483 0.001826 + 271 -0.003544 0.003178 0.000326 + 272 0.006639 0.005731 0.008812 + 273 -0.009361 -0.001371 -0.002830 + 274 -0.000226 0.001739 0.001787 + 275 -0.001846 -0.005637 -0.002071 + 276 0.009461 0.005629 -0.001253 + 277 0.003294 -0.005377 -0.000680 + 278 0.027740 0.013288 0.002669 + 279 0.003403 0.012169 -0.019874 + 280 -0.001383 0.000386 -0.006636 + 281 -0.005910 0.003429 -0.006992 + 282 0.002649 -0.004178 -0.006969 + 283 0.004768 -0.001680 0.000104 + 284 -0.012916 0.017467 -0.012201 + 285 0.010278 -0.007970 0.003734 + 286 0.000005 0.000300 0.006224 + 287 0.003150 -0.001535 0.007443 + 288 -0.000547 -0.003737 0.010794 + 289 0.003054 0.005656 0.000426 + 290 0.006673 0.002252 0.007300 + 291 0.004185 0.001696 0.005292 + 292 -0.001277 -0.005156 -0.001765 + 293 0.005969 -0.004326 -0.002540 + 294 -0.026915 -0.005145 0.019233 + 295 -0.003352 -0.000356 -0.001610 + 296 -0.023375 -0.003718 -0.017075 + 297 0.006387 -0.025086 0.000315 + 298 -0.005064 0.001395 0.004436 + 299 -0.004111 0.000853 -0.032909 + 300 0.000933 0.005949 0.017391 + 301 0.000607 0.002490 -0.002786 + 302 0.002638 0.008857 0.008537 + 303 0.001294 0.011357 -0.003275 + 304 -0.001798 -0.003127 -0.000795 + 305 -0.003320 0.000996 0.004122 + 306 -0.008728 -0.000634 0.002033 + 307 -0.003535 -0.002662 -0.002777 + 308 -0.005954 -0.002781 -0.004403 + 309 -0.002147 -0.001477 -0.001223 + 310 -0.002595 -0.001397 0.002359 + 311 -0.003605 -0.000224 0.015269 + 312 -0.014002 -0.002828 0.000027 + 313 0.001583 -0.005357 0.002380 + 314 -0.002955 -0.014106 -0.011581 + 315 0.000151 -0.006411 0.002865 + 316 0.004278 -0.004088 0.000114 + 317 -0.019291 0.001584 0.015204 + 318 -0.013439 -0.000674 0.010987 + 319 0.000024 0.000995 0.005326 + 320 -0.009041 0.020464 0.014139 + 321 0.004208 -0.003482 0.004723 + 322 0.001489 -0.003292 0.000500 + 323 0.000364 0.006211 0.006844 + 324 0.007467 0.021162 -0.001636 + 325 0.009527 -0.000863 -0.005483 + 326 -0.009936 0.006496 -0.014136 + 327 -0.007595 -0.006469 -0.002090 + 328 -0.002856 -0.010388 -0.000678 + 329 -0.026693 -0.007624 -0.001572 + 330 0.029582 -0.010319 0.009090 + 331 -0.009062 0.000913 0.000368 + 332 -0.019327 0.020501 -0.000560 + 333 -0.018764 -0.008632 0.002570 + 334 0.004502 0.001200 -0.008087 + 335 0.008714 -0.005091 -0.008624 + 336 0.004610 0.003623 -0.007048 + 337 0.002461 -0.000759 0.003913 + 338 0.021591 -0.013925 0.009416 + 339 -0.017190 0.002325 0.006138 + 340 0.003361 0.004027 0.006986 + 341 0.006850 0.012752 0.018496 + 342 0.019589 0.009932 -0.004987 + 343 0.000463 0.005037 -0.000723 + 344 0.008333 0.006382 -0.005532 + 345 0.004288 0.006565 0.007800 + 346 -0.001505 -0.001295 0.001190 + 347 -0.015747 0.011253 0.025149 + 348 0.014871 -0.012646 -0.016815 + 349 -0.000186 0.002115 -0.002539 + 350 0.001936 0.000958 -0.003366 + 351 -0.014299 0.007078 -0.001653 + 352 -0.000876 -0.001637 -0.002032 + 353 -0.001168 0.005556 -0.012749 + 354 -0.003162 -0.016318 -0.009468 + 355 -0.000674 -0.001888 -0.003265 + 356 0.017652 -0.009515 0.007889 + 357 0.015313 -0.006079 0.010454 + 358 -0.000964 -0.004354 0.000067 + 359 0.004137 -0.002540 0.004500 + 360 -0.011376 -0.000921 -0.006123 + 361 0.002023 0.003210 -0.000511 + 362 0.012560 -0.011698 0.016109 + 363 -0.013295 -0.009379 -0.009014 + 364 0.003315 0.003249 0.007620 + 365 -0.010739 0.000915 -0.008118 + 366 -0.015293 0.007564 -0.004343 + 367 0.000192 0.002269 -0.000485 + 368 0.002520 -0.012494 -0.004632 + 369 0.010222 0.003093 -0.002247 + 370 0.003953 0.000628 0.004147 + 371 0.001165 -0.005271 0.007550 + 372 -0.013412 -0.019696 0.026961 + 373 0.001883 0.002252 -0.003560 + 374 0.005482 -0.004609 0.002380 + 375 -0.008048 0.004473 -0.008866 + 376 -0.002663 0.001073 0.001951 + 377 0.010178 0.018964 0.000820 + 378 0.007583 -0.018984 0.016464 + 379 0.001136 0.007646 0.002719 + 380 0.006251 0.008125 0.009187 + 381 0.001284 0.011634 -0.004097 + 382 -0.000767 0.000265 -0.000818 + 383 -0.000089 0.001579 -0.002300 + 384 -0.004565 -0.011251 0.008186 + 385 0.004778 -0.000871 0.002405 + 386 0.006618 -0.002801 0.006849 + 387 0.029884 -0.012377 0.019662 + 388 -0.002799 -0.005785 0.000693 + 389 -0.006988 0.014716 -0.008738 + 390 -0.003130 0.004832 0.002982 + 391 0.000036 -0.002467 0.000498 + 392 -0.001382 -0.006847 0.003863 + 393 -0.003623 0.001391 0.001664 + 394 0.004431 0.000182 0.002043 + 395 0.007177 -0.001675 0.008884 + 396 0.000324 0.003728 0.003379 + 397 0.004107 -0.000618 0.000098 + 398 0.019272 -0.008832 -0.013192 + 399 -0.025041 0.027976 -0.020594 + 400 0.002982 -0.002889 -0.005826 + 401 0.010564 -0.003899 -0.002078 + 402 0.005218 -0.003308 -0.010357 + 403 0.002304 -0.003833 -0.008812 + 404 -0.013421 -0.017603 -0.023172 + 405 -0.003134 -0.000582 0.001712 + 406 -0.003398 -0.002176 0.001635 + 407 -0.015813 0.008046 0.010515 + 408 0.003940 -0.004144 -0.002666 + 409 0.008428 -0.002203 -0.004077 + 410 -0.004859 0.004207 -0.016803 + 411 -0.022714 0.005614 0.004119 + 412 -0.000677 -0.000486 0.001019 + 413 0.004137 0.001524 0.004810 + 414 -0.011495 -0.003293 -0.002498 + 415 -0.004277 -0.004620 -0.002973 + 416 0.005727 -0.002611 0.021922 + 417 0.009759 0.016284 -0.017136 + 418 0.001140 -0.003169 0.001021 + 419 0.002072 0.019101 -0.019824 + 420 0.029356 -0.011686 0.004675 + 421 0.001175 0.002540 0.001846 + 422 0.009479 -0.017538 0.002696 + 423 0.008327 0.028039 -0.001246 + 424 0.002971 -0.004730 0.000069 + 425 0.010168 -0.005904 -0.016535 + 426 0.009223 0.011295 0.006248 + 427 -0.003323 0.000861 0.005020 + 428 -0.005244 0.001685 -0.001864 + 429 0.000994 0.014826 0.000976 + 430 -0.002795 0.003958 -0.004848 + 431 0.010698 -0.011688 -0.000537 + 432 0.008158 0.021591 -0.003259 + 433 0.000363 0.002223 0.004053 + 434 -0.002225 0.004315 -0.010042 + 435 -0.000151 -0.000572 0.000675 + 436 0.006996 -0.000559 0.003307 + 437 -0.011410 -0.004708 0.006782 + 438 -0.015909 0.022113 0.004877 + 439 -0.002401 -0.002279 0.002655 + 440 -0.002478 0.000164 0.005849 + 441 -0.003545 0.002314 0.007358 + 442 0.002189 0.006935 -0.001251 + 443 -0.007190 0.031224 0.006804 + 444 0.004661 -0.003296 0.013412 + 445 0.003709 0.001514 -0.003921 + 446 0.015678 0.007604 0.000133 + 447 -0.004648 -0.004474 -0.027064 + 448 0.001807 -0.004146 0.004203 + 449 0.029598 0.003434 0.012408 + 450 -0.004603 -0.006201 0.002287 + 451 -0.003031 -0.004136 -0.006564 + 452 0.009003 0.019264 0.004529 + 453 -0.000188 0.010449 0.001077 + 454 0.003891 0.002752 0.005629 + 455 0.001092 0.012776 0.008682 + 456 -0.002762 0.015371 -0.005857 + 457 0.002697 -0.003406 -0.002865 + 458 0.007823 -0.013511 0.002023 + 459 -0.030492 -0.008107 -0.020624 + 460 0.000483 0.001162 0.002651 + 461 0.002571 -0.007508 -0.009384 + 462 -0.010774 -0.027329 0.003619 + 463 0.005791 0.000086 0.004298 + 464 0.008820 0.016257 -0.002226 + 465 0.000317 -0.014932 -0.013621 + 466 0.003540 0.001551 -0.001349 + 467 0.008241 0.020014 0.019807 + 468 -0.004258 -0.010227 -0.029599 + 469 0.007640 0.001287 -0.003128 + 470 0.004600 -0.001555 -0.010230 + 471 0.007870 0.002461 0.000094 + 472 0.001001 0.005160 -0.001529 + 473 0.006073 0.015127 0.022819 + 474 0.006356 -0.012345 -0.003131 + 475 -0.005549 -0.000151 0.001312 + 476 -0.015747 0.009610 0.004075 + 477 0.009345 0.004620 -0.013632 + 478 -0.005694 -0.004777 0.002781 + 479 -0.015785 0.018249 0.008919 + 480 0.007264 0.001342 -0.012954 + 481 -0.002601 -0.003124 -0.001775 + 482 -0.010924 -0.002942 0.001676 + 483 0.020644 0.001519 0.001050 + 484 -0.003829 -0.001681 0.001973 + 485 -0.009248 -0.008096 0.002166 + 486 -0.004627 -0.003317 0.000426 + 487 0.004750 0.008629 -0.001691 + 488 -0.009177 0.001481 0.019567 + 489 -0.000748 -0.004703 -0.011184 + 490 -0.000930 -0.004032 -0.001796 + 491 -0.007051 -0.001375 -0.004647 + 492 -0.000505 0.005436 -0.004029 + 493 -0.000767 -0.000313 -0.004426 + 494 0.007019 0.022441 0.008035 + 495 0.002030 -0.018016 0.012244 + 496 -0.000430 -0.004092 0.001186 + 497 0.012447 -0.008156 0.016405 + 498 -0.008008 0.011043 -0.000527 + 499 0.001752 0.001451 -0.008850 + 500 -0.001696 0.002950 -0.000035 + 501 0.006054 -0.001180 -0.028952 + 502 0.001434 -0.008124 -0.001958 + 503 0.001762 -0.007034 -0.009244 + 504 -0.008796 -0.004759 -0.009928 + 505 0.000249 0.001170 0.006380 + 506 -0.005081 0.014461 -0.003259 + 507 -0.002522 0.001324 0.007841 + 508 0.003441 0.001538 0.006742 + 509 0.007735 -0.006583 0.003492 + 510 0.009681 0.006088 0.008608 + 511 -0.006695 -0.001970 0.000807 + 512 0.004268 0.004052 0.001263 + 513 -0.004129 -0.012886 -0.007489 + 514 -0.002878 0.001158 0.006535 + 515 -0.007680 -0.001896 0.002953 + 516 -0.000917 -0.006257 -0.002762 + 517 -0.001401 -0.003523 -0.005778 + 518 -0.001854 0.007834 0.015061 + 519 -0.010095 0.007049 -0.021128 + 520 -0.000766 -0.000153 0.007009 + 521 0.009064 -0.003223 0.017921 + 522 0.000864 -0.000043 0.007876 + 523 -0.001025 0.001319 -0.006573 + 524 -0.006395 0.000755 -0.002686 + 525 -0.032670 0.007943 0.004175 + 526 0.002953 0.006520 0.004065 + 527 0.009139 -0.008077 -0.010889 + 528 -0.002820 0.012454 -0.005504 + 529 -0.008727 0.003418 0.002451 + 530 -0.007112 -0.005703 0.023446 + 531 -0.011285 0.014165 -0.019563 + 532 -0.002562 0.003192 -0.002295 + 533 -0.003618 0.007211 0.002298 + 534 0.010325 0.001834 0.002853 + 535 0.002563 0.000345 -0.002878 + 536 0.002396 0.022293 -0.006961 + 537 0.001693 -0.002677 0.010576 + 538 -0.001561 0.000734 0.001793 + 539 -0.008542 0.015338 0.007321 + 540 -0.015880 0.015140 0.014642 + 541 0.001092 0.000090 0.000997 + 542 -0.004522 -0.004004 0.003687 + 543 0.003258 -0.006156 0.000500 + 544 -0.001608 0.002026 0.003790 + 545 -0.010430 -0.004583 0.015482 + 546 0.002628 0.011416 0.004923 + 547 -0.002068 0.005845 0.001850 + 548 0.001194 0.007931 0.007672 + 549 -0.020261 -0.007195 -0.008896 + 550 0.005399 0.001999 0.000211 + 551 0.004420 0.012603 0.006214 + 552 0.007790 0.005534 0.000006 + 553 -0.004249 0.001186 -0.000260 + 554 0.006385 -0.014925 0.000020 + 555 0.009902 0.016988 -0.004080 + 556 0.006637 -0.003469 0.000450 + 557 -0.002010 0.011423 -0.004361 + 558 -0.009074 0.013716 -0.002539 + 559 0.003243 -0.003710 -0.002565 + 560 -0.000480 -0.009433 0.000267 + 561 0.002981 -0.005587 -0.010088 + 562 0.002665 0.008169 0.002667 + 563 -0.001817 0.009035 0.022525 + 564 0.005689 0.010678 0.000603 + 565 0.003217 0.002617 0.001072 + 566 0.025108 0.001061 -0.027288 + 567 -0.003091 0.028727 0.028529 + 568 0.003991 -0.002246 0.002528 + 569 0.011195 -0.007917 0.010511 + 570 -0.006686 -0.007088 -0.000640 + 571 0.005302 0.003751 0.001484 + 572 0.001250 0.007658 -0.006666 + 573 0.018145 -0.005375 0.000139 + 574 -0.003857 0.003583 0.000238 + 575 0.006752 0.001063 0.004538 + 576 -0.006479 0.014326 -0.017669 + 577 0.001793 0.003661 0.002509 + 578 0.010186 -0.003147 0.008687 + 579 -0.001160 -0.005645 -0.003812 + 580 -0.002296 0.006997 0.000837 + 581 -0.031138 0.017223 0.000984 + 582 0.002587 -0.007480 0.015277 + 583 0.000288 -0.000668 0.001548 + 584 0.016041 -0.004051 0.004629 + 585 -0.025116 0.003224 0.009356 + 586 -0.000853 0.003188 0.004014 + 587 -0.001700 -0.004491 0.006716 + 588 -0.008947 -0.009004 -0.023328 + 589 0.005432 -0.003893 -0.001000 + 590 -0.019524 0.021049 -0.035976 + 591 0.009404 0.004475 -0.004525 + 592 -0.006508 -0.002709 0.000481 + 593 0.010852 -0.015643 0.005754 + 594 0.006526 0.026156 0.009018 + 595 -0.004611 -0.001841 0.002205 + 596 -0.013411 -0.011893 -0.011510 + 597 -0.002150 -0.000804 -0.006730 + 598 -0.002593 -0.000356 0.003104 + 599 0.009483 0.002951 -0.001362 + 600 -0.015523 -0.003843 0.010828 + 601 -0.001229 0.003953 0.000471 + 602 -0.017788 0.002114 0.033354 + 603 0.015187 -0.017947 -0.007994 + 604 -0.001335 -0.000196 0.007281 + 605 0.015188 0.007448 0.005030 + 606 -0.001538 0.002386 -0.009662 + 607 -0.001172 0.004261 0.002894 + 608 -0.002229 0.015661 0.009134 + 609 0.017428 0.004976 0.006974 + 610 -0.001490 0.003604 0.004586 + 611 -0.017720 0.006222 -0.023144 + 612 0.010016 -0.015847 -0.004678 + 613 -0.002648 0.000934 0.000698 + 614 -0.011832 0.016782 0.007626 + 615 -0.005427 0.001385 0.015386 + 616 0.003669 -0.001949 0.003946 + 617 0.005164 0.000243 0.009975 + 618 -0.000161 0.003111 0.001353 + 619 0.002976 -0.004733 0.001868 + 620 -0.002832 -0.014197 -0.023534 + 621 -0.003347 -0.011551 0.000693 + 622 0.004912 0.001701 -0.000793 + 623 0.013809 0.007164 -0.016905 + 624 0.024958 -0.010962 -0.008428 + 625 0.007422 -0.002948 -0.001308 + 626 -0.016590 -0.032000 -0.001025 + 627 0.011367 0.004098 0.010259 + 628 -0.002045 -0.000742 0.000577 + 629 -0.030845 0.001448 0.030396 + 630 0.001781 -0.017639 0.014980 + 631 0.002233 -0.004427 -0.002429 + 632 0.018586 -0.001402 0.006993 + 633 -0.012356 0.003736 0.007796 + 634 -0.004338 0.007766 0.000310 + 635 0.001990 0.000209 0.007107 + 636 -0.006343 0.005190 -0.018263 + 637 -0.005455 0.000492 -0.002847 + 638 0.000522 0.006495 0.003755 + 639 -0.001841 -0.009429 -0.001507 + 640 -0.002314 -0.002516 -0.005613 + 641 0.018652 0.002237 -0.015930 + 642 -0.002326 -0.000776 -0.003132 + 643 -0.005512 -0.000623 -0.000619 + 644 -0.001015 0.005882 0.003225 + 645 0.000586 0.023218 -0.004529 + 646 -0.001138 0.000800 0.002687 + 647 0.003627 0.013371 -0.016172 + 648 0.018968 0.017228 -0.000038 + 649 -0.002086 -0.000112 -0.007393 + 650 0.016103 0.035588 0.008775 + 651 -0.038516 0.012158 -0.009536 + 652 0.002958 0.004862 -0.007554 + 653 0.024333 0.013052 -0.023133 + 654 0.002379 -0.000049 -0.006601 + 655 0.003804 -0.003076 -0.001112 + 656 -0.004763 0.002283 -0.025897 + 657 -0.036538 -0.010672 -0.010599 + 658 -0.000713 0.003957 0.002151 + 659 -0.016531 0.001472 0.004862 + 660 -0.009287 0.028134 0.010480 + 661 0.004192 -0.003835 0.000568 + 662 0.011523 0.002433 0.036479 + 663 -0.009197 -0.041577 0.000393 + 664 0.000280 -0.002373 -0.004460 + 665 0.002206 -0.003211 0.000957 + 666 0.006211 0.013469 -0.005353 + 667 -0.000522 0.001664 -0.004748 + 668 0.004459 -0.024042 -0.023029 + 669 0.011377 0.013403 0.030836 + 670 0.003382 -0.002813 0.000451 + 671 0.000766 0.000074 -0.006820 + 672 0.013252 -0.015598 0.024274 + 673 -0.003243 0.006406 -0.002570 + 674 0.019962 -0.008888 -0.019769 + 675 -0.027628 -0.005508 -0.000297 + 676 -0.007770 -0.003882 0.002155 + 677 -0.001777 0.012358 0.000036 + 678 -0.024978 0.005564 -0.015024 + 679 0.000188 0.001017 0.004117 + 680 -0.006440 -0.003105 0.019733 + 681 -0.016780 0.005575 -0.004078 + 682 0.000151 0.001697 -0.001387 + 683 -0.002925 0.000955 -0.004378 + 684 0.000826 0.008069 0.003052 + 685 -0.003543 -0.000321 -0.000587 + 686 -0.012205 0.000432 -0.005990 + 687 0.004010 0.009678 -0.003793 + 688 0.001940 -0.000340 0.003900 + 689 0.005837 0.014815 -0.005621 + 690 -0.008710 -0.017653 0.020395 + 691 -0.001931 -0.003975 -0.002577 + 692 -0.003368 -0.014386 -0.006878 + 693 -0.013782 -0.002984 0.003522 + 694 0.004968 -0.000283 -0.003322 + 695 0.019160 0.006665 -0.007077 + 696 0.022604 -0.000847 -0.016983 + 697 0.002571 0.000550 -0.007379 + 698 -0.001443 -0.002487 -0.007727 + 699 -0.011487 -0.013883 0.019460 + 700 0.001096 -0.004750 0.003965 + 701 -0.016603 -0.010473 0.014272 + 702 0.023559 -0.001392 -0.008500 + 703 -0.002022 -0.005262 -0.004485 + 704 0.002332 -0.014942 -0.004917 + 705 -0.009402 0.006267 -0.002020 + 706 -0.000288 0.003264 -0.003564 + 707 0.004565 0.033122 -0.006655 + 708 -0.018922 -0.009521 0.000208 + 709 -0.003485 0.003285 -0.000556 + 710 0.004587 -0.002798 -0.000984 + 711 -0.006054 0.007231 -0.001425 + 712 0.004718 0.000201 -0.003948 + 713 -0.014114 0.009800 -0.004955 + 714 -0.008099 -0.004168 0.008689 + 715 0.000410 -0.000654 0.009605 + 716 0.008711 0.018707 0.002740 + 717 0.003459 -0.008185 0.010239 + 718 0.003479 0.000757 0.004467 + 719 0.000433 -0.000495 0.007710 + 720 0.012945 0.003286 -0.002052 + 721 -0.010010 -0.003567 0.006956 + 722 0.005307 -0.001615 -0.002198 + 723 -0.012515 0.011984 0.016669 + 724 0.001378 -0.002186 -0.001614 + 725 0.012587 -0.019891 0.012237 + 726 0.012601 0.007024 0.014776 + 727 -0.002983 -0.001722 -0.004228 + 728 0.015268 -0.011359 -0.002815 + 729 -0.003967 0.028638 0.000653 + 730 -0.000313 -0.000495 0.001546 + 731 -0.030938 -0.009463 -0.008649 + 732 -0.033474 -0.019299 0.015331 + 733 0.000845 -0.003919 -0.003202 + 734 -0.027178 0.011071 -0.026350 + 735 -0.007741 0.001470 -0.016184 + 736 -0.001239 0.001989 -0.002789 + 737 0.011285 0.001382 -0.006222 + 738 0.022813 -0.006205 -0.006536 + 739 0.003987 -0.004190 -0.005010 + 740 -0.007915 0.002670 -0.013878 + 741 0.004194 0.006086 -0.010350 + 742 0.006539 -0.005074 0.002196 + 743 0.015306 0.008181 0.005081 + 744 0.007865 0.003022 -0.004716 + 745 -0.001784 -0.010062 0.004309 + 746 -0.002378 -0.011275 0.006933 + 747 -0.008336 -0.001053 0.004620 + 748 -0.002979 0.004768 -0.002497 + 749 -0.000959 0.004004 -0.002600 + 750 -0.019512 -0.002978 0.005044 + 751 -0.004903 -0.000550 0.000659 + 752 -0.005086 0.005639 -0.022167 + 753 -0.008131 0.001631 -0.018889 + 754 -0.001761 -0.001628 0.000503 + 755 -0.003957 -0.007199 -0.006609 + 756 0.003155 -0.001306 0.005143 + 757 0.000937 0.008247 -0.008723 + 758 0.028994 0.004889 0.007225 + 759 -0.000469 -0.025903 0.001925 + 760 -0.001834 -0.000370 -0.001605 + 761 0.007234 -0.001225 -0.019036 + 762 -0.003442 -0.001966 0.000209 + 763 0.000445 0.007510 0.001158 + 764 -0.008348 0.004439 -0.007776 + 765 -0.012793 0.011539 0.019680 + 766 0.000065 -0.000962 -0.004032 + 767 -0.002013 -0.005477 0.003901 + 768 0.003529 0.021570 0.007224 + 769 -0.002661 0.002604 -0.003268 + 770 0.005668 -0.003962 -0.004196 + 771 -0.003633 0.008263 -0.012842 + 772 0.001811 0.001915 0.002764 + 773 0.007995 -0.017893 0.012738 + 774 -0.018466 -0.002519 -0.001997 + 775 -0.002231 0.000080 0.000338 + 776 -0.020092 -0.012422 0.010443 + 777 0.017610 0.006562 -0.019411 + 778 -0.001733 0.005494 0.004582 + 779 0.013495 0.017522 0.004058 + 780 0.014733 0.026971 -0.010419 + 781 0.001950 0.000577 -0.000870 + 782 -0.025830 0.001269 0.005271 + 783 0.007534 -0.015453 0.006553 + 784 0.004959 0.000931 -0.005022 + 785 -0.008754 0.005835 0.049441 + 786 0.010447 0.012462 0.001546 + 787 -0.001107 0.002522 0.000433 + 788 0.009871 0.011686 0.008446 + 789 -0.006988 0.002247 0.021211 + 790 0.004245 0.001822 -0.000253 + 791 0.000153 -0.002603 0.008675 + 792 0.006252 0.003177 -0.013109 + 793 -0.002534 0.003863 0.000617 + 794 -0.000057 0.004391 -0.016346 + 795 0.005974 -0.000584 -0.004834 + 796 0.001827 -0.002339 -0.002010 + 797 -0.023150 0.007693 0.012507 + 798 0.012203 0.000464 -0.020004 + 799 -0.000293 -0.001883 -0.002470 + 800 -0.004248 0.006084 0.002613 + 801 -0.013517 0.015693 0.003574 + 802 -0.009450 0.005229 -0.003400 + 803 -0.015058 -0.007700 0.001796 + 804 -0.000196 -0.003546 0.002537 + 805 0.008758 -0.003257 0.005431 + 806 0.012998 -0.011952 -0.017276 + 807 0.008558 -0.002765 0.006723 + 808 -0.001470 -0.000539 0.002965 + 809 0.024028 -0.019423 -0.012788 + 810 0.003892 0.003966 -0.001573 + 811 0.000254 0.001510 0.000089 + 812 0.024395 0.007424 -0.013783 + 813 0.006830 0.017138 0.017010 + 814 -0.001535 -0.003749 -0.001708 + 815 0.013748 -0.018314 -0.006646 + 816 0.003900 0.002047 0.006451 + 817 0.006585 0.003832 -0.000629 + 818 0.021540 0.003252 0.001280 + 819 0.007897 0.007247 -0.003727 + 820 -0.002115 -0.002434 -0.005025 + 821 -0.016735 0.003360 -0.019137 + 822 0.003237 -0.017804 -0.004111 + 823 -0.003907 0.002878 -0.003988 + 824 -0.005419 -0.002010 -0.004476 + 825 -0.006449 0.003104 -0.002766 + 826 -0.013638 -0.002258 -0.002448 + 827 -0.007838 0.000023 -0.005866 + 828 -0.006633 0.001312 -0.008943 + 829 0.001696 0.003761 -0.002125 + 830 -0.001113 -0.010288 -0.008692 + 831 0.010380 0.008838 -0.015548 + 832 -0.003164 0.004544 -0.002070 + 833 -0.001495 -0.013094 -0.000890 + 834 0.011945 -0.015741 -0.003378 + 835 -0.008802 -0.001939 -0.005442 + 836 -0.002949 -0.007279 -0.004665 + 837 0.008414 -0.021459 -0.000948 + 838 0.001330 0.000622 0.000916 + 839 -0.001965 0.001331 0.006138 + 840 0.003081 -0.004825 0.007272 + 841 0.001557 -0.005770 -0.001563 + 842 0.014285 0.020628 -0.029634 + 843 -0.006815 0.003616 0.008747 + 844 0.001116 -0.003881 -0.003556 + 845 0.008316 -0.005783 -0.005256 + 846 -0.011615 0.015346 0.026431 + 847 0.004309 0.003546 -0.004311 + 848 0.007868 -0.013572 0.000073 + 849 -0.011699 0.005875 0.003604 + 850 0.000505 -0.004069 -0.002113 + 851 0.001211 -0.005770 -0.003436 + 852 -0.004651 0.001028 0.007154 + 853 -0.003913 -0.006795 -0.004733 + 854 -0.004339 -0.014527 -0.023555 + 855 -0.006756 -0.006056 -0.008714 + 856 0.007493 0.001588 -0.006408 + 857 0.020526 0.022065 -0.006921 + 858 0.010862 0.004031 -0.001655 + 859 0.003459 -0.001125 -0.001494 + 860 -0.000710 0.004855 0.022662 + 861 -0.000022 0.009082 0.012428 + 862 -0.000591 0.002648 0.002517 + 863 0.017910 0.003993 0.005847 + 864 -0.004999 0.014284 -0.016199 + 865 -0.001700 -0.002300 0.001206 + 866 -0.016994 -0.008747 -0.012103 + 867 -0.008118 -0.008616 0.003715 + 868 -0.002056 -0.003732 -0.006667 + 869 -0.002586 -0.005666 -0.002032 + 870 -0.002179 -0.001361 -0.001378 + 871 0.001952 0.000747 -0.004175 + 872 -0.000006 -0.004573 0.003592 + 873 -0.004377 -0.012174 0.000091 + 874 -0.006945 -0.004708 0.004295 + 875 -0.011724 -0.010397 0.002368 + 876 0.006805 0.012734 0.019238 + 877 0.004959 0.005871 -0.001277 + 878 -0.012228 -0.000867 -0.006672 + 879 0.014516 0.032640 0.025985 + 880 0.000767 -0.000179 0.004816 + 881 0.006242 0.002132 0.007465 + 882 0.006812 0.003103 0.007707 + 883 0.005120 -0.003059 -0.001062 + 884 -0.008255 -0.016076 -0.002362 + 885 -0.001789 -0.014152 -0.001194 + 886 -0.009000 0.001340 0.001690 + 887 -0.020559 -0.017599 0.000329 + 888 -0.003544 -0.006539 0.004087 + 889 -0.000933 0.000538 -0.001999 + 890 0.032797 0.013397 0.000525 + 891 -0.012354 -0.008526 -0.038077 + 892 0.002953 -0.002317 -0.004454 + 893 -0.029479 -0.014864 0.005868 + 894 0.019223 0.000709 -0.013773 + 895 0.002346 -0.003694 -0.004486 + 896 -0.005275 -0.001221 -0.010755 + 897 0.010883 0.001918 -0.002099 + 898 -0.000263 -0.000830 0.005518 + 899 0.000399 -0.005578 0.011643 + 900 -0.007207 -0.006080 -0.006632 + 901 -0.000868 0.002637 -0.000416 + 902 -0.003601 0.001456 0.001019 + 903 0.003465 0.009000 0.002627 + 904 -0.005492 0.001153 0.005034 + 905 0.008501 0.009963 0.005133 + 906 0.002740 0.005510 0.005387 + 907 0.001230 0.003701 -0.010904 + 908 0.005640 0.000943 -0.026378 + 909 -0.001655 0.006661 0.001080 + 910 0.000417 -0.004485 0.000899 + 911 0.004051 -0.003590 0.002016 + 912 0.010109 -0.002124 0.001500 + 913 0.002439 0.006335 0.003103 + 914 -0.006325 0.005901 0.006397 + 915 0.008058 0.002545 0.004591 + 916 -0.001774 -0.003954 -0.005522 + 917 -0.001697 -0.002110 -0.006988 + 918 0.000641 -0.012660 -0.001878 + 919 0.000840 0.002158 -0.002127 + 920 -0.006972 -0.005865 -0.019536 + 921 -0.009078 -0.009093 0.005319 + 922 -0.002466 0.001612 -0.002348 + 923 -0.007997 0.000173 -0.007016 + 924 -0.005167 0.000122 -0.004809 + 925 0.000182 0.007626 -0.005820 + 926 -0.000187 0.006758 -0.004766 + 927 -0.005146 0.010941 -0.001145 + 928 -0.001035 0.003329 -0.000156 + 929 -0.002925 0.005286 0.005381 + 930 -0.007353 0.014383 0.015446 + 931 0.001566 0.003779 -0.001844 + 932 0.014111 -0.006162 0.016836 + 933 -0.008051 -0.000942 0.006114 + 934 0.000472 0.000581 0.003898 + 935 0.010438 -0.015336 0.026259 + 936 -0.009803 0.018803 -0.011113 + 937 -0.002622 0.001845 -0.004649 + 938 0.000192 0.006195 -0.003034 + 939 -0.004379 0.004856 -0.008876 + 940 0.005312 -0.005320 -0.000644 + 941 0.004197 0.002434 0.005873 + 942 0.001054 -0.002144 -0.009156 + 943 0.001818 0.002764 0.000410 + 944 0.002489 0.005354 -0.014128 + 945 0.003819 0.010472 0.007403 + 946 0.005262 -0.000699 0.001191 + 947 -0.002052 -0.008290 0.017377 + 948 -0.012921 -0.009037 0.007720 + 949 0.002875 -0.000206 -0.005514 + 950 0.004620 -0.003924 -0.007344 + 951 0.004396 0.015332 -0.008395 + 952 -0.001773 -0.005567 0.004807 + 953 0.014650 -0.004337 0.011316 + 954 0.007355 -0.004603 0.004796 + 955 0.001050 0.002663 -0.000049 + 956 -0.000422 0.019759 -0.003121 + 957 -0.011736 0.001700 0.005445 + 958 0.002314 -0.007359 0.001422 + 959 0.000226 -0.009157 0.011161 + 960 0.002971 -0.007641 -0.001658 + 961 0.002025 0.003310 0.000085 + 962 0.003783 0.005544 -0.002440 + 963 -0.003390 -0.001680 0.007759 + 964 -0.000259 -0.001517 -0.001671 + 965 -0.009891 -0.000275 0.002930 + 966 -0.004798 -0.018121 0.000493 + 967 0.002742 0.002196 0.002639 + 968 -0.032110 0.008681 0.017593 + 969 -0.005767 -0.003804 -0.003447 + 970 -0.001025 -0.001901 0.007377 + 971 -0.025416 -0.005633 -0.009650 + 972 -0.002448 -0.002342 0.009184 + 973 0.000510 -0.004313 0.003297 + 974 -0.004244 -0.006185 -0.015114 + 975 0.002817 0.008222 0.025232 + 976 -0.005979 0.000432 0.003264 + 977 0.000348 0.000126 0.007237 + 978 -0.031461 0.008376 -0.002490 + 979 -0.003066 -0.005264 0.001528 + 980 0.000500 -0.005194 -0.000082 + 981 -0.006145 0.003915 -0.013465 + 982 -0.002081 -0.001596 0.001268 + 983 0.004918 -0.004802 -0.009499 + 984 -0.008729 0.005751 0.010881 + 985 0.002456 -0.001947 -0.001558 + 986 -0.006566 -0.000024 0.003315 + 987 0.007532 0.005898 -0.002575 + 988 -0.004247 -0.003264 -0.000409 + 989 0.002165 -0.007499 0.004990 + 990 -0.000419 0.003692 -0.004472 + 991 -0.001571 -0.000159 -0.000431 + 992 0.005413 0.009517 0.004397 + 993 -0.002643 -0.002292 -0.001478 + 994 -0.003884 0.005066 -0.000457 + 995 0.006816 0.009263 -0.003376 + 996 -0.007273 0.011919 0.000514 + 997 0.000030 0.001409 0.005477 + 998 0.005334 -0.020033 0.004464 + 999 0.016228 0.009598 -0.007106 + 1000 -0.002283 -0.004481 0.001317 + 1001 -0.002631 -0.006631 -0.004233 + 1002 0.004184 0.000805 0.014756 + 1003 0.000408 -0.003693 0.003308 + 1004 0.004530 -0.006410 -0.006453 + 1005 -0.004928 -0.003846 0.015168 + 1006 0.003101 -0.001511 0.005308 + 1007 0.014081 -0.002443 0.012313 + 1008 0.002846 0.010440 -0.000376 + 1009 0.003569 -0.002175 -0.006662 + 1010 -0.008368 -0.011644 -0.006989 + 1011 0.019824 -0.004949 -0.018661 + 1012 0.003202 -0.011850 0.003160 + 1013 0.014918 -0.009378 0.018579 + 1014 -0.002594 0.004575 -0.001959 + 1015 -0.002298 0.000413 -0.003910 + 1016 0.012837 -0.003799 -0.015681 + 1017 -0.005955 -0.000660 0.004171 + 1018 0.001582 0.000975 0.000146 + 1019 0.006776 -0.014144 -0.007821 + 1020 0.004234 -0.001693 -0.007198 + 1021 -0.001802 -0.002656 0.003257 + 1022 0.028537 0.012512 0.005966 + 1023 -0.000026 -0.011732 -0.013572 + 1024 0.006685 0.008417 -0.002619 + 1025 -0.018380 0.006240 0.006444 + 1026 0.014195 0.009753 -0.004447 + 1027 -0.000769 -0.006799 -0.003510 + 1028 -0.003532 0.013774 -0.009337 + 1029 0.005263 0.018084 -0.010946 + 1030 0.004102 0.004262 -0.002426 + 1031 -0.003256 -0.005354 0.003498 + 1032 -0.021894 -0.003478 0.016467 + 1033 0.001456 -0.004355 -0.002070 + 1034 -0.005859 -0.004113 -0.005871 + 1035 -0.005758 -0.006886 -0.016585 + 1036 0.001562 0.006459 -0.000209 + 1037 0.001331 0.004667 0.000892 + 1038 0.012898 0.027063 -0.008125 + 1039 0.002117 0.007131 0.002457 + 1040 0.026605 0.010046 0.019045 + 1041 -0.017364 0.007077 -0.014953 + 1042 -0.000452 0.009291 0.004625 + 1043 -0.011059 0.009571 0.015357 + 1044 0.027928 -0.000208 0.009437 + 1045 0.003475 -0.004274 -0.000546 + 1046 0.012160 -0.001385 -0.006922 + 1047 -0.016274 -0.008100 -0.006675 + 1048 -0.003853 -0.003278 -0.001388 + 1049 0.014697 -0.003341 -0.007454 + 1050 0.011346 -0.009086 -0.006461 + 1051 -0.001161 -0.003940 -0.002833 + 1052 0.011182 0.001281 -0.000803 + 1053 -0.001345 -0.002375 -0.003580 + 1054 0.004028 0.002256 0.000990 + 1055 0.013302 0.008212 -0.007566 + 1056 0.029179 -0.014499 0.008878 + 1057 0.000706 0.001652 0.001826 + 1058 0.000498 -0.007266 0.024956 + 1059 0.001324 -0.008155 0.011295 + 1060 0.000971 -0.006253 -0.004688 + 1061 -0.004746 -0.005680 -0.016047 + 1062 -0.000356 -0.009050 -0.006561 + 1063 -0.000866 0.005460 0.000045 + 1064 -0.006882 0.011747 0.020163 + 1065 -0.000733 0.001409 -0.010900 + 1066 -0.003804 0.003558 0.001444 + 1067 0.004513 0.002071 -0.017536 + 1068 -0.000869 -0.002704 -0.014336 + 1069 -0.003015 0.003241 -0.002075 + 1070 0.003734 -0.005456 -0.000879 + 1071 -0.006686 -0.008010 -0.008654 + 1072 -0.000541 -0.003669 -0.004373 + 1073 0.003151 -0.002513 -0.013951 + 1074 0.003979 -0.005557 0.002931 + 1075 -0.005175 -0.004387 0.000228 + 1076 -0.005613 -0.012392 -0.029351 + 1077 0.009704 0.009953 -0.015680 + 1078 -0.000915 0.003660 -0.003078 + 1079 0.002529 0.001465 0.006987 + 1080 0.000880 0.001866 -0.004217 + 1081 0.000835 -0.000410 0.000029 + 1082 0.003324 -0.009356 0.012151 + 1083 -0.000797 0.009753 -0.012613 + 1084 0.004557 -0.006851 0.000257 + 1085 0.014378 -0.010986 -0.004036 + 1086 0.001889 0.001865 0.000904 + 1087 0.003881 0.000306 -0.000266 + 1088 0.006043 -0.030376 0.018797 + 1089 -0.001012 -0.002296 0.000324 + 1090 0.007042 0.008682 0.007323 + 1091 0.010016 0.002442 -0.028255 + 1092 -0.004827 0.009414 -0.012200 + 1093 0.002178 0.003272 0.000190 + 1094 0.003486 0.001815 -0.002585 + 1095 0.006020 0.002953 -0.010998 + 1096 0.002573 -0.000704 0.002051 + 1097 -0.010233 0.004335 0.005568 + 1098 0.003397 0.002649 0.010631 + 1099 -0.000367 -0.008657 0.004003 + 1100 0.006810 -0.008282 0.003316 + 1101 -0.008301 -0.011638 -0.006525 + 1102 -0.001900 -0.008810 0.001531 + 1103 0.003628 0.008111 0.009571 + 1104 0.017147 0.000173 0.003988 + 1105 0.006161 0.005444 0.001389 + 1106 -0.033784 0.028714 -0.002486 + 1107 0.022179 0.015181 0.025221 + 1108 0.002935 0.001125 -0.009560 + 1109 0.013392 0.009490 0.002655 + 1110 0.015380 -0.002935 -0.004728 + 1111 0.002760 -0.001052 0.002516 + 1112 -0.006737 0.002302 0.012384 + 1113 -0.004649 -0.009652 -0.009326 + 1114 -0.003333 0.004385 -0.006004 + 1115 -0.014175 0.007089 0.000199 + 1116 0.009875 0.004925 0.012791 + 1117 -0.004828 0.000366 0.001718 + 1118 0.009618 -0.007069 -0.012330 + 1119 -0.021489 -0.009155 -0.001603 + 1120 -0.001360 0.002089 -0.003585 + 1121 0.003530 -0.001847 0.010254 + 1122 0.016468 0.005240 -0.014692 + 1123 0.001989 -0.000949 0.003286 + 1124 0.022107 -0.012110 -0.007316 + 1125 0.012518 -0.010337 0.015891 + 1126 0.000850 -0.001413 -0.001737 + 1127 -0.014943 0.000360 -0.000490 + 1128 -0.027983 -0.005206 0.004037 + 1129 0.011232 0.000349 -0.006679 + 1130 -0.005484 -0.003095 -0.004430 + 1131 -0.005050 -0.002005 -0.015837 + 1132 -0.000470 0.001924 0.001131 + 1133 -0.016506 0.005240 0.008171 + 1134 0.011977 -0.012388 0.003671 + 1135 -0.000818 0.001081 0.001571 + 1136 0.009956 -0.006601 -0.002667 + 1137 -0.013344 0.009962 -0.000602 + 1138 -0.004379 0.004681 0.005655 + 1139 -0.022717 0.009805 -0.016911 + 1140 -0.017223 0.002867 0.018671 + 1141 -0.000339 -0.000149 -0.001276 + 1142 0.002292 0.016872 -0.004987 + 1143 -0.012964 -0.000693 -0.007140 + 1144 -0.002149 0.004008 -0.001355 + 1145 0.012575 0.018012 -0.011467 + 1146 -0.018572 0.011663 -0.005755 + 1147 0.000951 -0.000232 0.005705 + 1148 0.001030 -0.002411 0.005162 + 1149 -0.004871 0.010528 0.006213 + 1150 -0.003431 0.005236 0.003321 + 1151 -0.006083 0.008172 0.003730 + 1152 0.021201 0.002738 -0.026021 + 1153 -0.000559 -0.001274 0.002074 + 1154 -0.000342 -0.008595 -0.003314 + 1155 -0.004563 0.013150 0.001114 + 1156 0.002547 -0.003346 0.000793 + 1157 -0.004000 0.002915 0.001908 + 1158 0.008526 -0.013385 0.001263 + 1159 0.003331 -0.001629 -0.001592 + 1160 0.012216 0.004263 0.001290 + 1161 -0.024729 0.027722 0.012828 + 1162 -0.004556 0.005331 -0.000790 + 1163 -0.001260 0.004809 0.012624 + 1164 0.009151 0.007740 0.005908 + 1165 0.006739 -0.002486 0.000962 + 1166 0.002801 -0.001010 0.007063 + 1167 0.006266 -0.009780 0.000447 + 1168 -0.001756 -0.006121 -0.000399 + 1169 0.002128 0.011752 0.003187 + 1170 -0.000744 -0.004455 -0.001624 + 1171 -0.003120 -0.007987 0.008768 + 1172 -0.001279 -0.014309 0.014916 + 1173 -0.003496 -0.005392 0.006518 + 1174 -0.005252 -0.000094 0.002610 + 1175 -0.004319 0.000327 0.003799 + 1176 0.014469 -0.001407 -0.023557 + 1177 -0.001733 0.011173 0.001097 + 1178 0.019607 0.000729 -0.008577 + 1179 -0.013430 0.021297 -0.011104 + 1180 0.005550 -0.002953 -0.004489 + 1181 -0.021164 -0.004283 0.009224 + 1182 0.020762 -0.011806 0.008058 + 1183 -0.003934 -0.006346 0.000789 + 1184 -0.004154 -0.012917 -0.000804 + 1185 0.001834 -0.003234 0.006486 + 1186 -0.003359 -0.000166 0.000482 + 1187 -0.010938 -0.009570 0.011838 + 1188 -0.006339 -0.002743 -0.017319 + 1189 -0.002008 -0.000238 -0.002842 + 1190 0.009730 0.002797 -0.000255 + 1191 0.004802 0.018470 -0.005529 + 1192 0.002978 0.003254 0.000406 + 1193 0.001762 -0.016118 0.017481 + 1194 0.009625 0.005549 -0.002833 + 1195 -0.005277 -0.000015 -0.004247 + 1196 0.008535 -0.018189 -0.023760 + 1197 -0.020839 0.008581 0.007193 + 1198 0.001976 -0.001531 0.001386 + 1199 -0.012488 -0.005613 0.004418 + 1200 0.012387 0.001324 -0.002579 + 1201 0.004612 0.001574 0.002430 + 1202 0.004011 0.024078 0.008286 + 1203 0.028635 -0.001749 -0.000378 + 1204 -0.001292 -0.004163 0.001688 + 1205 0.018917 -0.005327 -0.022863 + 1206 -0.021498 0.026796 -0.015481 + 1207 -0.004360 -0.003023 -0.007483 + 1208 0.015222 -0.007834 -0.014901 + 1209 -0.015487 -0.004003 -0.024684 + 1210 0.000162 -0.000232 -0.002511 + 1211 0.005663 0.001759 0.003041 + 1212 -0.026577 0.001752 0.009499 + 1213 -0.002118 -0.004800 0.002106 + 1214 0.012772 0.013880 -0.004149 + 1215 0.008831 0.004495 0.004278 + 1216 -0.001002 0.000396 0.000450 + 1217 0.001493 -0.000300 0.006615 + 1218 0.022789 -0.011336 -0.001626 + 1219 -0.002165 0.002305 -0.004399 + 1220 -0.001727 0.010653 0.006150 + 1221 0.001799 -0.000399 -0.015101 + 1222 -0.002535 -0.001664 0.000167 + 1223 -0.007939 0.009699 -0.003581 + 1224 -0.009214 -0.009452 -0.003331 + 1225 -0.002745 0.003249 0.011490 + 1226 0.010727 -0.015563 0.011870 + 1227 -0.003771 0.013856 -0.015486 + 1228 -0.000932 0.001513 0.000721 + 1229 -0.002528 0.000192 0.015301 + 1230 -0.027023 -0.007231 0.009659 + 1231 -0.005525 0.001099 -0.001369 + 1232 -0.002318 -0.008510 -0.009719 + 1233 -0.005945 -0.008347 0.009845 + 1234 -0.000817 -0.006097 -0.001394 + 1235 0.026844 0.005400 -0.013998 + 1236 -0.019837 0.017329 -0.010038 + 1237 -0.002691 -0.005371 -0.000786 + 1238 -0.007304 -0.006372 0.007409 + 1239 -0.014066 -0.005252 0.014237 + 1240 -0.000660 -0.004157 -0.007445 + 1241 -0.015343 -0.015681 0.000525 + 1242 -0.004856 0.008296 -0.020506 + 1243 -0.000451 -0.006253 0.005274 + 1244 -0.016626 -0.024128 0.003146 + 1245 0.003430 -0.001516 0.006995 + 1246 0.002369 0.000761 -0.000692 + 1247 -0.011034 0.017913 -0.003576 + 1248 0.014886 0.005052 0.010870 + 1249 0.000976 0.003044 0.004043 + 1250 0.002084 0.009119 -0.003484 + 1251 -0.004682 -0.003095 0.024419 + 1252 -0.001872 0.005519 -0.003878 + 1253 0.014045 0.004474 0.006660 + 1254 -0.006683 -0.012923 -0.006357 + 1255 -0.007125 -0.002296 0.002894 + 1256 -0.009126 -0.000293 0.008175 + 1257 -0.005668 -0.002902 -0.000640 + 1258 -0.009805 0.000500 -0.001546 + 1259 -0.007254 -0.007274 0.010849 + 1260 0.005786 0.004719 0.004479 + 1261 0.000767 -0.007091 -0.002809 + 1262 -0.010861 -0.024470 -0.006678 + 1263 0.010352 0.003874 -0.018616 + 1264 -0.001332 -0.000776 -0.001533 + 1265 0.005055 -0.002761 -0.000154 + 1266 0.001293 -0.010766 0.003695 + 1267 0.004101 0.005423 0.004161 + 1268 -0.006495 -0.001645 0.007645 + 1269 0.024277 0.000761 0.018148 + 1270 0.000384 -0.004677 0.001777 + 1271 -0.000305 -0.022286 0.006378 + 1272 0.014900 -0.009298 0.005029 + 1273 -0.002201 -0.002422 -0.001266 + 1274 0.002419 0.000621 -0.006170 + 1275 0.002242 -0.003567 -0.006329 + 1276 0.001155 0.006214 -0.002164 + 1277 -0.025679 0.011598 0.001775 + 1278 -0.016652 0.005061 0.002255 + 1279 -0.000163 0.000193 -0.001041 + 1280 -0.002822 -0.004131 -0.007696 + 1281 -0.007029 0.005316 -0.012422 + 1282 -0.001259 -0.001443 0.001295 + 1283 -0.000992 -0.027820 -0.000474 + 1284 -0.012190 -0.043729 -0.008054 + 1285 -0.001840 -0.001572 0.001104 + 1286 0.008311 0.001263 -0.001841 + 1287 0.001277 0.000429 -0.007113 + 1288 -0.005029 -0.002280 -0.002761 + 1289 -0.024723 0.012515 -0.012864 + 1290 -0.013845 -0.020399 0.001674 + 1291 -0.000161 0.002303 0.004199 + 1292 -0.010956 -0.010528 0.017163 + 1293 0.023554 -0.006815 0.021159 + 1294 0.000772 -0.000829 0.004462 + 1295 0.024106 -0.007189 -0.017980 + 1296 -0.011795 0.000225 0.018351 + 1297 -0.002503 0.000288 -0.000931 + 1298 -0.001901 -0.006775 -0.001166 + 1299 -0.002626 0.004209 -0.000596 + 1300 -0.003248 -0.009856 0.001496 + 1301 -0.008616 0.000206 -0.000660 + 1302 0.012991 -0.001944 0.010735 + 1303 0.000183 0.003767 -0.002207 + 1304 0.002875 0.006021 0.006091 + 1305 -0.003343 -0.008883 0.015455 + 1306 -0.003761 0.009400 -0.007147 + 1307 -0.002601 -0.012510 0.005900 + 1308 -0.013464 0.021935 0.006364 + 1309 0.007717 -0.006568 -0.004280 + 1310 0.004551 -0.013432 0.001741 + 1311 0.016676 -0.009730 -0.005415 + 1312 -0.003518 -0.000115 0.000120 + 1313 -0.018566 -0.004441 0.007076 + 1314 0.011422 0.004168 0.013848 + 1315 -0.002232 0.003004 -0.005210 + 1316 -0.004985 -0.000655 -0.007286 + 1317 -0.004756 0.005461 -0.010032 + 1318 0.003296 -0.000345 0.003797 + 1319 0.000013 0.003387 0.009258 + 1320 -0.001175 0.009021 0.016554 + 1321 0.004610 0.000563 0.001890 + 1322 0.001511 0.004957 0.010795 + 1323 -0.000517 0.009529 0.012695 + 1324 0.003561 -0.002127 -0.002139 + 1325 -0.016355 -0.004573 0.011414 + 1326 0.002437 -0.000969 0.003958 + 1327 -0.003191 0.002772 0.003706 + 1328 0.002188 0.004078 0.024902 + 1329 0.005804 0.008997 0.000514 + 1330 0.000169 -0.001823 0.006601 + 1331 -0.012837 0.016738 0.032499 + 1332 -0.003787 -0.003993 0.005792 + 1333 -0.006500 -0.001952 -0.005568 + 1334 0.004632 0.002607 -0.001417 + 1335 0.007826 -0.018417 0.003893 + 1336 0.001400 0.000629 -0.002329 + 1337 -0.026090 -0.010827 -0.007428 + 1338 0.014757 0.003359 0.005866 + 1339 0.005344 0.002452 0.000637 + 1340 0.002304 0.001516 0.008371 + 1341 0.003116 0.003502 0.000920 + 1342 0.000219 0.006872 -0.006361 + 1343 0.004872 0.004948 -0.015461 + 1344 0.002293 0.008990 -0.007103 + 1345 -0.000248 -0.001405 -0.000404 + 1346 0.016050 0.005473 0.014883 + 1347 0.000661 0.010958 0.009762 + 1348 0.002507 0.004854 0.004016 + 1349 -0.000026 0.005865 -0.004933 + 1350 -0.003541 0.012071 0.011984 + 1351 -0.000388 -0.001662 -0.002624 + 1352 -0.008781 0.002236 0.005933 + 1353 -0.002303 0.010321 -0.013971 + 1354 0.000266 0.005381 0.006218 + 1355 -0.030793 -0.017551 0.006520 + 1356 -0.001710 0.006198 0.003481 + 1357 -0.000575 0.000387 0.003498 + 1358 0.011844 0.006387 0.013823 + 1359 -0.004149 -0.001630 0.001064 + 1360 0.002966 -0.001211 -0.000529 + 1361 0.011026 0.001160 0.001568 + 1362 0.015143 -0.001234 0.000065 + 1363 0.000976 0.001952 -0.002769 + 1364 0.013527 0.011152 0.001594 + 1365 -0.000179 -0.000211 -0.002554 + 1366 -0.005351 -0.004969 -0.002979 + 1367 -0.006889 0.021662 -0.005435 + 1368 -0.002462 0.016113 0.008657 + 1369 -0.000975 0.000751 -0.000755 + 1370 -0.003243 0.006738 -0.001393 + 1371 -0.002267 -0.000779 0.003167 + 1372 0.001566 -0.003190 -0.000583 + 1373 -0.002018 -0.005136 0.012563 + 1374 -0.006828 0.007134 0.011132 + 1375 0.005244 -0.004715 -0.003319 + 1376 -0.010064 -0.001392 0.024842 + 1377 -0.003331 -0.012180 0.011450 + 1378 0.005044 -0.003538 0.000197 + 1379 0.014932 -0.005316 0.014871 + 1380 0.002959 -0.015155 -0.010790 + 1381 0.004288 0.003508 0.003045 + 1382 0.010516 0.006731 0.001181 + 1383 0.003157 0.002004 0.039661 + 1384 -0.003464 -0.000341 -0.002519 + 1385 0.000767 -0.010574 0.002375 + 1386 0.012132 0.009405 0.005728 + 1387 -0.002537 0.005096 -0.000141 + 1388 0.008455 -0.000335 0.003398 + 1389 0.000567 0.012932 0.006368 + 1390 0.007440 -0.002304 0.001444 + 1391 0.003946 0.007849 -0.005030 + 1392 0.012038 -0.016280 0.007159 + 1393 -0.001061 -0.002610 -0.000083 + 1394 0.010905 -0.006613 -0.001941 + 1395 -0.013885 -0.027620 0.005494 + 1396 0.013746 0.003525 0.007163 + 1397 0.003586 0.002644 -0.010792 + 1398 0.018544 0.013850 0.017322 + 1399 0.004571 0.000027 -0.001760 + 1400 0.012220 0.001858 -0.006751 + 1401 0.009850 -0.002003 0.019339 + 1402 -0.001383 0.002281 -0.007042 + 1403 -0.003363 0.001654 -0.017801 + 1404 0.011330 0.009635 0.005470 + 1405 0.000650 -0.001098 -0.005942 + 1406 0.005198 -0.008028 -0.003832 + 1407 0.017668 -0.005738 0.026099 + 1408 -0.001891 0.001162 0.003476 + 1409 -0.003537 0.018838 0.000972 + 1410 0.007980 0.016250 0.030292 + 1411 -0.001348 0.000197 0.004181 + 1412 -0.002255 -0.008393 -0.001355 + 1413 -0.008567 -0.008184 -0.000151 + 1414 -0.001145 0.001777 -0.004250 + 1415 -0.002565 -0.000609 -0.002622 + 1416 0.017182 0.009342 -0.008899 + 1417 -0.000336 -0.000833 -0.006619 + 1418 0.006594 -0.014023 -0.011705 + 1419 -0.010047 -0.002912 -0.003804 + 1420 0.005759 0.000406 0.005233 + 1421 -0.013174 -0.018780 -0.002966 + 1422 -0.003551 -0.005212 0.011087 + 1423 -0.001811 -0.005836 -0.002120 + 1424 -0.008296 0.022099 0.012646 + 1425 0.010130 0.006059 0.033707 + 1426 0.001039 -0.001025 -0.000459 + 1427 0.004468 0.000527 0.001539 + 1428 -0.001728 -0.005304 0.003140 + 1429 -0.000141 -0.003112 0.003400 + 1430 0.007530 -0.026022 0.005020 + 1431 -0.011982 0.032142 -0.001998 + 1432 -0.001642 0.003923 -0.003350 + 1433 0.016086 -0.002664 -0.005695 + 1434 -0.010354 0.000136 0.021071 + 1435 0.001502 -0.001507 0.005856 + 1436 -0.003359 -0.017617 -0.013060 + 1437 -0.001621 -0.013764 -0.008355 + 1438 -0.006074 0.001165 0.001910 + 1439 -0.004946 0.003618 0.011324 + 1440 -0.007761 0.002697 -0.006763 + 1441 -0.009332 0.000898 0.000750 + 1442 -0.017083 -0.010335 0.011191 + 1443 0.020780 0.013466 -0.015083 + 1444 -0.008140 -0.008032 -0.000180 + 1445 -0.001836 -0.008988 0.003973 + 1446 -0.008280 -0.004548 -0.003224 + 1447 0.000996 -0.002062 -0.001184 + 1448 -0.001863 -0.012096 0.003957 + 1449 -0.027050 0.007989 0.002157 + 1450 -0.001321 -0.000325 0.001355 + 1451 -0.006885 -0.000536 -0.022446 + 1452 0.008792 -0.007975 0.003329 + 1453 -0.003682 -0.004782 -0.002567 + 1454 -0.001180 -0.009011 0.018662 + 1455 -0.000958 -0.004899 0.013723 + 1456 0.000545 0.011919 -0.001753 + 1457 0.023799 0.010298 -0.002649 + 1458 0.014717 0.007757 -0.005400 + 1459 -0.004576 -0.007691 0.001365 + 1460 -0.006577 -0.016846 -0.022862 + 1461 -0.005206 0.003687 0.012428 + 1462 0.001923 -0.004758 -0.001993 + 1463 0.006600 0.017503 0.006935 + 1464 -0.006747 -0.003482 -0.000067 + 1465 0.000613 0.004580 0.004038 + 1466 -0.001945 0.022605 -0.000652 + 1467 0.017624 -0.001392 0.003829 + 1468 -0.003065 -0.003003 -0.000747 + 1469 -0.012664 -0.016566 -0.007030 + 1470 0.008660 -0.008358 0.004763 + 1471 -0.004008 0.000421 -0.006040 + 1472 0.003555 0.008566 -0.015842 + 1473 -0.001032 0.001700 -0.010204 + 1474 -0.000556 0.000599 0.003074 + 1475 0.001542 0.002939 0.005269 + 1476 -0.005281 -0.001944 0.003338 + 1477 -0.000195 -0.000293 -0.001004 + 1478 -0.009991 -0.005354 -0.013386 + 1479 -0.000476 -0.017594 0.007900 + 1480 0.000550 -0.000431 0.001422 + 1481 0.018094 -0.005183 0.016234 + 1482 0.010706 0.011668 -0.017772 + 1483 0.001291 0.006499 0.000951 + 1484 0.009985 -0.016962 0.009714 + 1485 0.020849 0.018365 -0.008351 + 1486 0.006940 0.004692 -0.002409 + 1487 0.022308 0.010182 -0.022897 + 1488 0.000269 0.008847 0.011834 + 1489 0.002051 0.007334 -0.000125 + 1490 -0.023048 0.013759 -0.030276 + 1491 0.023523 -0.005817 0.007754 + 1492 -0.001269 0.002979 0.001311 + 1493 -0.005596 0.006174 0.011007 + 1494 -0.009061 0.022719 0.002133 + 1495 -0.001128 0.004307 -0.002381 + 1496 -0.004340 0.013891 -0.003505 + 1497 0.001822 -0.005505 -0.001135 + 1498 -0.000910 0.001437 0.000165 + 1499 0.004510 -0.000360 -0.006425 + 1500 0.003993 0.000498 0.007321 + 1501 -0.002868 -0.000316 -0.000509 + 1502 0.000620 0.011286 0.008461 + 1503 -0.013079 -0.008157 0.007561 + 1504 -0.003002 0.003413 0.004968 + 1505 0.015262 -0.005133 0.012052 + 1506 -0.003968 -0.003643 0.003514 + 1507 0.005087 -0.001882 -0.000518 + 1508 0.000932 -0.002238 0.000800 + 1509 -0.008149 0.000695 -0.000827 + 1510 -0.001261 -0.003375 0.000333 + 1511 -0.001224 -0.004135 -0.003080 + 1512 0.009246 -0.010372 0.026354 + 1513 0.000697 -0.003200 0.001222 + 1514 -0.002319 0.003800 0.022860 + 1515 -0.018205 0.011600 -0.011416 + 1516 -0.001731 -0.001076 0.002612 + 1517 -0.004661 -0.010783 -0.001505 + 1518 0.016208 0.002810 0.004482 + 1519 0.003508 -0.001750 0.002537 + 1520 0.024576 -0.026041 -0.004083 + 1521 -0.019140 0.000844 0.001909 + 1522 -0.000341 0.001152 0.001967 + 1523 -0.020076 0.003364 0.001315 + 1524 -0.000942 0.000692 -0.003283 + 1525 -0.006519 -0.000419 0.000991 + 1526 -0.004033 0.006531 0.004791 + 1527 0.005626 0.012187 -0.014266 + 1528 0.001113 -0.004253 0.011930 + 1529 -0.010144 0.003567 0.009059 + 1530 -0.003464 0.001115 0.011591 + 1531 0.000006 0.000074 0.005751 + 1532 0.003604 0.008464 0.010627 + 1533 -0.004351 -0.009621 -0.000453 + 1534 -0.000196 -0.001160 0.002795 + 1535 -0.006855 0.001414 0.005552 + 1536 -0.000894 -0.002102 0.005053 + 1537 -0.002040 -0.005887 -0.003590 + 1538 -0.006852 -0.011947 -0.023080 + 1539 -0.016070 0.000160 0.010390 + 1540 0.004712 0.002848 -0.002998 + 1541 -0.004259 0.007840 0.008142 + 1542 -0.004861 0.004263 0.011728 + 1543 0.006968 -0.004871 0.004119 + 1544 -0.016558 -0.002046 -0.006090 + 1545 -0.006229 0.004475 0.001436 + 1546 -0.002341 -0.004733 -0.003946 + 1547 0.003563 0.004733 0.009615 + 1548 -0.013018 0.004747 -0.004733 + 1549 0.001703 -0.000331 0.003605 + 1550 0.005459 -0.002653 -0.012447 + 1551 0.013689 0.008625 -0.003301 + 1552 0.003195 0.001205 -0.000779 + 1553 -0.003336 -0.011439 -0.004979 + 1554 0.001015 0.018568 -0.007361 + 1555 -0.001647 -0.003759 0.001214 + 1556 0.015583 -0.016961 0.000384 + 1557 -0.011138 -0.013161 -0.015913 + 1558 0.005848 -0.002193 -0.007682 + 1559 0.009577 -0.005765 0.010025 + 1560 0.006984 0.005858 -0.020668 + 1561 -0.005040 0.001396 0.001932 + 1562 0.007071 0.009231 0.007700 + 1563 0.001743 0.005137 0.005850 + 1564 0.001857 0.002145 -0.004455 + 1565 -0.007462 0.014047 -0.012730 + 1566 0.013730 -0.006385 0.009586 + 1567 -0.002000 0.003453 -0.001882 + 1568 -0.009622 -0.007424 -0.003371 + 1569 -0.006993 -0.018224 -0.006858 + 1570 0.001461 0.001281 -0.002568 + 1571 0.018901 0.002357 0.001811 + 1572 -0.001592 0.019333 -0.002732 + 1573 -0.001308 -0.005730 -0.002519 + 1574 -0.014074 0.007287 0.021518 + 1575 -0.017324 -0.018775 -0.005647 + 1576 0.002340 -0.001593 0.004994 + 1577 -0.000516 0.003608 0.002676 + 1578 -0.014840 -0.017283 -0.001508 + 1579 -0.001557 -0.002471 -0.002555 + 1580 0.016654 -0.033672 0.006595 + 1581 0.013351 -0.030070 0.003443 + 1582 0.003752 0.001449 0.001862 + 1583 -0.011257 -0.002704 0.007355 + 1584 0.002139 0.006577 0.012771 + 1585 0.002251 0.002492 -0.002180 + 1586 0.010691 -0.005615 -0.001517 + 1587 -0.018738 0.016070 0.006914 + 1588 -0.001600 0.000180 0.001378 + 1589 0.004891 -0.007732 -0.013906 + 1590 -0.015149 0.011285 0.002913 + 1591 0.003944 -0.001162 -0.002407 + 1592 -0.013220 -0.006427 -0.006873 + 1593 -0.008388 0.022805 -0.011588 + 1594 0.000621 -0.004836 0.005509 + 1595 0.006148 -0.013451 0.002326 + 1596 -0.001161 -0.012639 -0.002024 + 1597 -0.005042 0.000613 0.003072 + 1598 -0.002560 -0.009516 -0.007164 + 1599 -0.007736 0.003315 0.007824 + 1600 -0.002409 -0.002549 -0.003082 + 1601 -0.002839 0.004415 -0.008830 + 1602 -0.006633 -0.001003 -0.004060 + 1603 -0.004810 -0.007495 -0.004047 + 1604 0.005200 -0.017270 0.009101 + 1605 0.000670 -0.009280 -0.012848 + 1606 -0.003830 0.001924 -0.002728 + 1607 -0.035525 0.007821 -0.020602 + 1608 0.016575 -0.019547 -0.006176 + 1609 0.003828 0.000099 -0.002605 + 1610 0.017387 0.007652 0.014875 + 1611 0.012190 0.014852 0.016071 + 1612 -0.003436 0.002187 -0.001035 + 1613 -0.005586 -0.003901 0.006033 + 1614 -0.005884 -0.005331 -0.011796 + 1615 -0.001799 -0.005019 0.004011 + 1616 0.002094 -0.028579 0.008471 + 1617 0.023334 0.020189 0.016696 + 1618 -0.000653 -0.003079 -0.001689 + 1619 -0.005925 -0.004542 -0.007489 + 1620 0.003980 0.000361 0.005598 + 1621 -0.000999 0.004025 -0.003724 + 1622 0.000058 0.024442 0.006515 + 1623 0.011473 -0.013431 0.004073 + 1624 0.002923 -0.003314 0.001931 + 1625 0.003377 -0.006029 -0.008704 + 1626 0.002413 0.015094 0.010447 + 1627 0.003654 -0.000619 -0.001261 + 1628 -0.004232 -0.000930 0.001384 + 1629 0.019160 0.000313 -0.006734 + 1630 0.003534 0.002394 -0.000501 + 1631 -0.008068 0.002953 0.008451 + 1632 0.014612 0.006975 -0.004278 + 1633 0.001620 0.003004 0.003226 + 1634 -0.007605 -0.007788 0.011245 + 1635 0.020296 -0.014907 -0.003043 + 1636 -0.002678 -0.006261 0.001869 + 1637 -0.007968 -0.013586 -0.003793 + 1638 -0.015202 -0.007224 -0.014352 + 1639 -0.005816 -0.003019 0.006480 + 1640 -0.001607 -0.004084 0.006246 + 1641 0.008520 -0.008049 0.002824 + 1642 -0.000658 -0.004008 -0.000300 + 1643 -0.000444 0.000650 -0.012168 + 1644 -0.006399 -0.006883 0.005254 + 1645 -0.001317 0.006093 0.001522 + 1646 -0.010770 -0.004270 -0.010989 + 1647 -0.005520 0.020979 0.012203 + 1648 -0.004763 0.001957 0.003649 + 1649 -0.010531 0.001095 0.022741 + 1650 0.001695 -0.009764 -0.029750 + 1651 0.000561 0.003660 0.004562 + 1652 0.004814 -0.011887 -0.011791 + 1653 0.015151 -0.017660 -0.020515 + 1654 -0.003720 -0.008154 0.002101 + 1655 -0.006836 0.005342 0.006830 + 1656 -0.008891 -0.005752 0.002656 + 1657 -0.004211 -0.006534 0.001470 + 1658 0.024344 -0.009232 0.001415 + 1659 -0.010793 -0.032076 -0.013330 + 1660 -0.000393 0.010082 -0.000260 + 1661 -0.003386 0.024037 -0.002341 + 1662 0.005231 -0.007154 0.002310 + 1663 0.004778 0.000685 -0.001247 + 1664 0.006845 -0.000146 -0.002439 + 1665 0.002831 0.001509 -0.001312 + 1666 -0.004575 0.002015 0.002231 + 1667 -0.008714 0.004773 0.019310 + 1668 -0.009036 0.006437 0.017025 + 1669 -0.001102 -0.003004 0.003294 + 1670 0.004690 0.016121 0.007181 + 1671 -0.000881 -0.003815 0.001639 + 1672 -0.000053 -0.001708 0.002633 + 1673 -0.004620 0.003536 0.000715 + 1674 -0.002636 -0.005429 0.007498 + 1675 0.002307 0.001406 0.002665 + 1676 -0.005270 -0.001969 0.007587 + 1677 0.001417 -0.009022 -0.021912 + 1678 0.000203 0.002930 -0.002177 + 1679 0.003819 0.012652 -0.002939 + 1680 -0.001040 0.005171 0.022221 + 1681 -0.001765 0.004140 -0.001020 + 1682 0.015888 -0.002384 -0.000464 + 1683 -0.019573 0.014814 -0.003047 + 1684 -0.002840 -0.000626 0.000097 + 1685 0.019011 -0.004434 -0.031132 + 1686 -0.011722 0.011711 0.019623 + 1687 -0.000720 0.008278 0.001232 + 1688 -0.000014 -0.005707 0.005722 + 1689 0.006445 -0.004607 0.004541 + 1690 -0.008451 -0.005406 -0.003097 + 1691 -0.025859 -0.004092 0.011942 + 1692 0.003198 0.017013 -0.015979 + 1693 0.001237 0.005482 0.001012 + 1694 -0.003233 0.012773 -0.012817 + 1695 -0.013658 -0.008102 0.007350 + 1696 0.004867 0.002547 -0.001769 + 1697 0.019074 -0.004173 0.005165 + 1698 0.008487 0.001064 0.000080 + 1699 0.002766 -0.001251 -0.001561 + 1700 -0.019200 0.027169 -0.007481 + 1701 0.006036 -0.028485 -0.009388 + 1702 -0.005460 0.002563 0.001784 + 1703 -0.017462 0.006398 0.005231 + 1704 -0.014453 0.005484 0.004388 + 1705 0.002956 -0.001348 0.006512 + 1706 0.009654 0.004653 0.025184 + 1707 0.006226 -0.001478 -0.018062 + 1708 0.003757 -0.000921 -0.000401 + 1709 0.004307 -0.009700 -0.007768 + 1710 0.003780 -0.012914 0.008582 + 1711 0.004846 -0.002032 -0.000808 + 1712 -0.000823 -0.002500 -0.004619 + 1713 0.014769 -0.010350 0.008970 + 1714 -0.001580 -0.000837 0.000021 + 1715 -0.002003 -0.002972 -0.000158 + 1716 -0.004469 -0.000404 0.001257 + 1717 -0.001782 0.001231 -0.003624 + 1718 -0.009550 0.008477 -0.006010 + 1719 -0.003240 -0.001801 -0.002707 + 1720 -0.003131 -0.002749 -0.002782 + 1721 -0.003319 -0.008008 -0.009572 + 1722 -0.003280 -0.008289 -0.009069 + 1723 -0.006776 0.001807 0.000809 + 1724 0.000630 0.005359 0.003033 + 1725 0.016012 0.013546 0.014364 + 1726 -0.005383 0.003683 -0.001052 + 1727 -0.000343 -0.021814 -0.000655 + 1728 0.015975 0.004809 -0.015863 + 1729 -0.002843 0.002136 0.000031 + 1730 0.008511 0.002265 -0.002748 + 1731 -0.026285 -0.002274 -0.004757 + 1732 0.005294 -0.003565 0.004694 + 1733 -0.002668 0.001103 -0.001112 + 1734 -0.009429 0.006969 -0.008965 + 1735 -0.001634 0.000110 0.001819 + 1736 -0.004942 0.001203 -0.007254 + 1737 -0.002655 0.002573 -0.003610 + 1738 -0.004831 0.005860 0.001407 + 1739 -0.014232 0.009476 0.016389 + 1740 -0.017895 0.005674 -0.009379 + 1741 0.003013 -0.002508 -0.001228 + 1742 0.000746 0.006449 -0.005992 + 1743 0.006650 -0.002762 0.000152 + 1744 0.002550 -0.008457 0.001324 + 1745 -0.001868 -0.010233 -0.023525 + 1746 0.003968 -0.007880 0.008439 + 1747 -0.000591 0.004322 -0.003592 + 1748 -0.014424 0.009132 0.003708 + 1749 0.012052 -0.004950 -0.011581 + 1750 0.001849 0.003842 -0.009164 + 1751 0.009453 -0.005684 -0.004817 + 1752 0.001564 0.018776 -0.004831 + 1753 0.000794 0.000968 -0.001710 + 1754 -0.003816 -0.004723 -0.000498 + 1755 -0.011972 0.005633 -0.006975 + 1756 -0.004635 0.005064 -0.004764 + 1757 -0.010722 0.012077 -0.027297 + 1758 -0.003376 0.000707 0.006078 + 1759 0.001092 0.005159 -0.000557 + 1760 0.014326 0.002844 -0.021424 + 1761 0.019579 -0.002405 -0.009532 + 1762 -0.000565 0.006632 0.002294 + 1763 -0.025047 0.006219 0.001583 + 1764 -0.004637 -0.007484 0.007079 + 1765 0.002563 -0.001616 -0.003316 + 1766 -0.001239 0.014897 -0.002355 + 1767 -0.001256 -0.009226 0.009450 + 1768 0.001056 0.005329 -0.003831 + 1769 -0.012555 0.037676 0.021233 + 1770 -0.005969 -0.003116 -0.014248 + 1771 0.000691 0.001302 0.002405 + 1772 -0.015733 0.001224 -0.004288 + 1773 0.006783 0.015986 -0.003342 + 1774 0.002355 0.002897 -0.002965 + 1775 -0.000435 0.005789 0.007980 + 1776 0.014211 0.000855 -0.014841 + 1777 -0.004596 -0.002169 0.000774 + 1778 0.002630 -0.027237 0.012553 + 1779 -0.000727 -0.003394 -0.009924 + 1780 0.001821 -0.001310 0.000540 + 1781 0.005476 -0.002057 0.001588 + 1782 0.008060 0.013457 -0.013767 + 1783 0.003078 -0.007047 0.009501 + 1784 -0.004392 -0.004982 0.015684 + 1785 -0.021173 -0.003917 -0.003013 + 1786 0.001492 -0.007162 -0.003460 + 1787 0.020179 0.025050 0.005018 + 1788 -0.018378 -0.021938 0.007656 + 1789 -0.000363 0.004076 -0.003991 + 1790 0.012179 0.023942 -0.003853 + 1791 0.002207 0.011773 0.006443 + 1792 0.001993 0.000538 0.002365 + 1793 0.008602 -0.013779 -0.007218 + 1794 0.007374 0.001122 0.001108 + 1795 0.003207 -0.011319 -0.004081 + 1796 0.010332 -0.007827 -0.001929 + 1797 0.001869 0.022609 0.012256 + 1798 0.001101 0.003835 0.002357 + 1799 -0.003624 0.011759 0.002745 + 1800 0.001557 -0.002337 -0.004179 + 1801 0.003327 -0.001910 -0.005250 + 1802 0.011996 0.003017 0.013309 + 1803 -0.013682 -0.002775 -0.008939 + 1804 -0.002064 -0.000934 0.000427 + 1805 -0.012146 0.024406 -0.015171 + 1806 0.005030 -0.019570 0.004311 + 1807 0.003003 0.004365 0.002257 + 1808 0.000823 0.000086 -0.005161 + 1809 -0.003001 0.001206 0.008241 + 1810 0.005602 -0.001423 0.002945 + 1811 0.000330 0.001483 -0.011075 + 1812 0.003652 0.009252 -0.000166 + 1813 0.004531 -0.000860 -0.000170 + 1814 0.018728 0.013621 0.031510 + 1815 0.011579 -0.009257 -0.004100 + 1816 0.002862 0.000330 -0.002342 + 1817 -0.003456 -0.001426 -0.004566 + 1818 -0.006589 0.018593 0.018322 + 1819 -0.001663 0.002113 0.003120 + 1820 0.002523 0.005185 0.010725 + 1821 -0.006456 -0.005159 0.018366 + 1822 -0.000677 -0.000638 0.005530 + 1823 0.006499 0.011396 0.003392 + 1824 0.000945 -0.008826 -0.007441 + 1825 -0.002582 0.001006 0.000170 + 1826 -0.000739 0.010378 -0.012944 + 1827 -0.004082 -0.009693 0.012271 + 1828 -0.002259 -0.002179 0.001812 + 1829 0.004365 0.028602 0.007523 + 1830 -0.001047 0.006781 -0.010318 + 1831 0.003053 0.002227 0.004523 + 1832 -0.004297 -0.007295 0.001900 + 1833 0.002925 0.002066 0.004473 + 1834 0.003171 0.000025 0.002189 + 1835 0.001188 0.002838 0.001014 + 1836 0.006142 0.003073 -0.003689 + 1837 0.009818 0.005253 0.006222 + 1838 0.013907 -0.003607 0.006764 + 1839 -0.000327 0.015573 -0.010930 + 1840 -0.003110 -0.005538 0.000400 + 1841 0.006244 -0.021206 -0.003853 + 1842 -0.010299 0.008474 0.021147 + 1843 -0.001053 -0.000598 0.004581 + 1844 -0.013621 0.002557 -0.003175 + 1845 -0.002495 0.000789 0.011106 + 1846 -0.000137 -0.004006 -0.000014 + 1847 -0.017819 -0.013981 0.011316 + 1848 -0.005844 -0.000863 -0.025248 + 1849 -0.002799 0.002996 -0.002499 + 1850 -0.012455 0.012490 -0.004469 + 1851 0.010514 0.009490 -0.009495 + 1852 -0.000560 -0.004144 -0.000656 + 1853 -0.007255 0.002559 0.003817 + 1854 0.004602 -0.007276 0.003469 + 1855 0.000128 0.001144 -0.008402 + 1856 0.008157 0.001721 -0.014464 + 1857 -0.004034 0.002739 -0.008982 + 1858 0.002856 0.004731 -0.003812 + 1859 0.008481 -0.004184 -0.015612 + 1860 -0.004966 0.006658 -0.006541 + 1861 0.005415 -0.007185 0.002622 + 1862 -0.000791 0.004294 0.012806 + 1863 0.006266 -0.008943 0.000048 + 1864 -0.004891 -0.000259 0.002435 + 1865 0.000775 -0.012600 0.009738 + 1866 -0.000239 0.020688 0.014963 + 1867 0.007752 0.006605 0.003522 + 1868 0.005559 0.005449 0.004823 + 1869 0.001382 0.020031 -0.009484 + 1870 0.000269 -0.000837 -0.001948 + 1871 -0.015324 0.006379 0.032972 + 1872 -0.010895 -0.006739 0.002233 + 1873 0.002406 -0.005817 -0.007929 + 1874 0.011974 0.013774 0.020789 + 1875 -0.005616 -0.012309 -0.023698 + 1876 -0.002712 -0.000118 0.000894 + 1877 -0.000559 -0.018665 -0.005699 + 1878 -0.022904 -0.016730 0.007620 + 1879 -0.006235 -0.000119 -0.005440 + 1880 -0.008616 0.001720 0.002602 + 1881 -0.019263 0.001295 0.018377 + 1882 -0.002493 0.002824 -0.002915 + 1883 0.007384 0.000692 0.003462 + 1884 -0.019228 -0.005451 0.005676 + 1885 0.002956 0.004628 -0.002177 + 1886 0.005617 0.021792 -0.005623 + 1887 -0.010771 -0.007154 -0.002600 + 1888 -0.006932 -0.006388 0.001795 + 1889 -0.026638 0.002211 0.017012 + 1890 -0.006429 -0.013703 0.021233 + 1891 0.004179 0.001508 -0.002942 + 1892 -0.015358 0.009799 -0.025507 + 1893 -0.009827 0.001263 -0.015038 + 1894 0.002515 0.004808 -0.006083 + 1895 -0.001395 -0.005178 0.010798 + 1896 0.005498 0.001296 -0.013456 + 1897 -0.006679 0.000004 0.000833 + 1898 -0.006339 0.003210 0.000555 + 1899 -0.007815 -0.000155 0.006317 + 1900 -0.003334 -0.000730 -0.000139 + 1901 -0.003197 -0.021225 -0.009098 + 1902 0.003310 -0.008203 -0.004863 + 1903 -0.007379 0.001152 -0.003847 + 1904 -0.008175 0.003836 -0.004939 + 1905 -0.007216 0.002039 -0.012076 + 1906 -0.002751 -0.006050 -0.001404 + 1907 -0.005827 0.008129 0.005351 + 1908 0.010377 0.010628 0.018761 + 1909 -0.002571 -0.007065 0.006215 + 1910 -0.004848 -0.014622 0.001577 + 1911 -0.004351 -0.002361 0.020679 + 1912 0.006139 0.001291 0.002464 + 1913 0.004939 0.003608 0.002097 + 1914 0.004274 0.000152 0.002451 + 1915 0.002989 0.000832 -0.000352 + 1916 -0.014159 -0.000914 0.002187 + 1917 0.012237 -0.003167 0.009134 + 1918 -0.004575 -0.001662 0.000082 + 1919 -0.007883 -0.002056 0.002571 + 1920 -0.003336 -0.001305 -0.000658 + 1921 0.004366 0.000439 0.001158 + 1922 -0.000155 0.003368 0.010592 + 1923 -0.014972 -0.009424 -0.018312 + 1924 -0.000613 -0.002374 0.000797 + 1925 0.007460 -0.016336 -0.000977 + 1926 -0.006787 0.004573 0.010255 + 1927 -0.002452 -0.000122 0.000124 + 1928 -0.015584 -0.009431 -0.007285 + 1929 -0.000101 0.008080 -0.015191 + 1930 0.002197 0.002310 -0.001612 + 1931 0.016237 -0.005090 0.018070 + 1932 0.001709 -0.003220 -0.011865 + 1933 -0.001150 0.000898 0.004173 + 1934 0.000323 -0.000312 -0.014495 + 1935 0.000516 -0.000491 -0.011422 + 1936 -0.005815 -0.002965 0.000187 + 1937 0.008195 0.018425 -0.027236 + 1938 -0.010921 -0.007575 -0.002217 + 1939 -0.004740 0.002745 0.006330 + 1940 0.002035 0.006523 0.010880 + 1941 -0.012191 0.004818 0.006605 + 1942 -0.003197 -0.004418 -0.003375 + 1943 0.003590 -0.017196 0.008070 + 1944 0.004548 0.006106 0.016045 + 1945 0.005444 0.002200 0.004561 + 1946 0.004448 0.009092 -0.001577 + 1947 -0.000522 0.006033 0.006559 + 1948 0.005450 0.001267 0.002269 + 1949 0.027952 -0.012604 0.001935 + 1950 -0.004826 -0.018174 0.014813 + 1951 0.005498 -0.000626 0.001156 + 1952 0.001428 -0.010472 0.000805 + 1953 -0.010198 -0.005573 -0.014564 + 1954 0.001605 -0.006572 0.005587 + 1955 -0.002403 -0.004981 0.000460 + 1956 0.010287 -0.003414 0.005774 + 1957 -0.005679 0.003540 -0.003175 + 1958 -0.005054 0.005203 -0.002733 + 1959 -0.006462 0.003843 0.002657 + 1960 -0.006606 -0.002499 -0.001538 + 1961 0.027567 -0.002565 0.034908 + 1962 0.001905 -0.003739 -0.001134 + 1963 -0.000871 0.002779 0.006534 + 1964 -0.013473 -0.002631 0.001200 + 1965 -0.008136 0.003625 0.001725 + 1966 0.002375 -0.002767 -0.000214 + 1967 0.015603 0.001192 0.006785 + 1968 -0.008229 0.002751 0.010337 + 1969 -0.002111 -0.006139 0.006236 + 1970 0.025783 -0.003684 0.015052 + 1971 -0.008026 -0.018580 0.028847 + 1972 -0.001966 -0.005103 0.002533 + 1973 0.025504 -0.012928 0.014439 + 1974 0.015919 0.008653 -0.013047 + 1975 -0.002145 -0.003853 -0.002353 + 1976 0.020573 0.023626 0.033600 + 1977 0.002418 -0.000127 0.000258 + 1978 -0.000168 -0.002747 0.002505 + 1979 0.011847 0.007945 0.003222 + 1980 0.002222 -0.001343 0.005437 + 1981 -0.004734 0.003071 -0.000955 + 1982 0.003752 -0.001882 -0.005052 + 1983 -0.008195 0.007844 0.004577 + 1984 0.007575 0.002209 -0.000466 + 1985 -0.005510 0.009650 -0.004399 + 1986 0.018263 0.019292 -0.008157 + 1987 -0.005098 -0.001581 -0.000328 + 1988 -0.004522 -0.021884 -0.005509 + 1989 -0.001598 -0.001668 0.002704 + 1990 -0.000494 0.002205 0.012458 + 1991 0.003153 0.001522 0.015672 + 1992 -0.000092 -0.002603 0.010098 + 1993 0.001919 -0.007389 0.001539 + 1994 -0.002690 -0.003376 -0.009963 + 1995 -0.005006 0.002932 -0.001670 + 1996 -0.003089 -0.005736 0.003689 + 1997 0.010713 -0.027613 -0.023000 + 1998 -0.006878 0.009457 0.006998 + 1999 -0.001817 0.000266 -0.004238 + 2000 -0.010974 0.005190 0.000117 + 2001 -0.008937 -0.003277 0.004337 + 2002 -0.000987 -0.001334 -0.004265 + 2003 -0.022280 -0.011677 -0.018343 + 2004 -0.010076 -0.005729 -0.026032 + +Bonds + + 1 3 1 7 + 2 2 1 3 + 3 1 1 2 + 4 4 2 5 + 5 4 2 6 + 6 4 2 4 + 7 6 7 19 + 8 5 7 8 + 9 1 8 9 + 10 7 8 11 + 11 8 8 20 + 12 3 9 28 + 13 2 9 10 + 14 10 11 21 + 15 9 11 12 + 16 10 11 22 + 17 11 12 14 + 18 11 12 13 + 19 12 13 23 + 20 11 13 15 + 21 12 14 24 + 22 11 14 16 + 23 11 15 17 + 24 12 15 25 + 25 11 16 17 + 26 12 16 26 + 27 13 17 18 + 28 14 18 27 + 29 5 28 29 + 30 6 28 32 + 31 1 29 30 + 32 8 29 33 + 33 8 29 34 + 34 3 30 35 + 35 2 30 31 + 36 5 35 36 + 37 6 35 39 + 38 1 36 37 + 39 8 36 40 + 40 8 36 41 + 41 2 37 38 + 42 3 37 42 + 43 6 42 53 + 44 5 42 43 + 45 1 43 44 + 46 7 43 46 + 47 8 43 54 + 48 3 44 62 + 49 2 44 45 + 50 10 46 56 + 51 10 46 55 + 52 9 46 47 + 53 11 47 48 + 54 11 47 49 + 55 11 48 50 + 56 12 48 57 + 57 11 49 51 + 58 12 49 58 + 59 11 50 52 + 60 12 50 59 + 61 11 51 52 + 62 12 51 60 + 63 12 52 61 + 64 6 62 70 + 65 5 62 63 + 66 7 63 66 + 67 1 63 64 + 68 8 63 71 + 69 2 64 65 + 70 3 64 79 + 71 15 66 67 + 72 10 66 73 + 73 10 66 72 + 74 10 67 75 + 75 10 67 74 + 76 16 67 68 + 77 17 68 69 + 78 4 69 76 + 79 4 69 78 + 80 4 69 77 + 81 5 79 80 + 82 6 79 81 + 83 4 80 84 + 84 4 80 83 + 85 4 80 82 + 86 18 85 86 + 87 18 85 87 + 88 18 88 90 + 89 18 88 89 + 90 18 91 93 + 91 18 91 92 + 92 18 94 96 + 93 18 94 95 + 94 18 97 98 + 95 18 97 99 + 96 18 100 101 + 97 18 100 102 + 98 18 103 104 + 99 18 103 105 + 100 18 106 107 + 101 18 106 108 + 102 18 109 111 + 103 18 109 110 + 104 18 112 114 + 105 18 112 113 + 106 18 115 116 + 107 18 115 117 + 108 18 118 120 + 109 18 118 119 + 110 18 121 123 + 111 18 121 122 + 112 18 124 126 + 113 18 124 125 + 114 18 127 128 + 115 18 127 129 + 116 18 130 132 + 117 18 130 131 + 118 18 133 134 + 119 18 133 135 + 120 18 136 137 + 121 18 136 138 + 122 18 139 140 + 123 18 139 141 + 124 18 142 144 + 125 18 142 143 + 126 18 145 147 + 127 18 145 146 + 128 18 148 150 + 129 18 148 149 + 130 18 151 152 + 131 18 151 153 + 132 18 154 156 + 133 18 154 155 + 134 18 157 159 + 135 18 157 158 + 136 18 160 162 + 137 18 160 161 + 138 18 163 164 + 139 18 163 165 + 140 18 166 168 + 141 18 166 167 + 142 18 169 171 + 143 18 169 170 + 144 18 172 174 + 145 18 172 173 + 146 18 175 177 + 147 18 175 176 + 148 18 178 180 + 149 18 178 179 + 150 18 181 182 + 151 18 181 183 + 152 18 184 186 + 153 18 184 185 + 154 18 187 188 + 155 18 187 189 + 156 18 190 191 + 157 18 190 192 + 158 18 193 194 + 159 18 193 195 + 160 18 196 197 + 161 18 196 198 + 162 18 199 201 + 163 18 199 200 + 164 18 202 204 + 165 18 202 203 + 166 18 205 206 + 167 18 205 207 + 168 18 208 210 + 169 18 208 209 + 170 18 211 212 + 171 18 211 213 + 172 18 214 215 + 173 18 214 216 + 174 18 217 219 + 175 18 217 218 + 176 18 220 222 + 177 18 220 221 + 178 18 223 224 + 179 18 223 225 + 180 18 226 228 + 181 18 226 227 + 182 18 229 231 + 183 18 229 230 + 184 18 232 233 + 185 18 232 234 + 186 18 235 236 + 187 18 235 237 + 188 18 238 240 + 189 18 238 239 + 190 18 241 242 + 191 18 241 243 + 192 18 244 246 + 193 18 244 245 + 194 18 247 248 + 195 18 247 249 + 196 18 250 251 + 197 18 250 252 + 198 18 253 254 + 199 18 253 255 + 200 18 256 257 + 201 18 256 258 + 202 18 259 261 + 203 18 259 260 + 204 18 262 264 + 205 18 262 263 + 206 18 265 266 + 207 18 265 267 + 208 18 268 269 + 209 18 268 270 + 210 18 271 272 + 211 18 271 273 + 212 18 274 275 + 213 18 274 276 + 214 18 277 279 + 215 18 277 278 + 216 18 280 282 + 217 18 280 281 + 218 18 283 284 + 219 18 283 285 + 220 18 286 287 + 221 18 286 288 + 222 18 289 290 + 223 18 289 291 + 224 18 292 294 + 225 18 292 293 + 226 18 295 296 + 227 18 295 297 + 228 18 298 299 + 229 18 298 300 + 230 18 301 303 + 231 18 301 302 + 232 18 304 305 + 233 18 304 306 + 234 18 307 309 + 235 18 307 308 + 236 18 310 311 + 237 18 310 312 + 238 18 313 314 + 239 18 313 315 + 240 18 316 317 + 241 18 316 318 + 242 18 319 321 + 243 18 319 320 + 244 18 322 323 + 245 18 322 324 + 246 18 325 327 + 247 18 325 326 + 248 18 328 329 + 249 18 328 330 + 250 18 331 332 + 251 18 331 333 + 252 18 334 335 + 253 18 334 336 + 254 18 337 339 + 255 18 337 338 + 256 18 340 341 + 257 18 340 342 + 258 18 343 344 + 259 18 343 345 + 260 18 346 347 + 261 18 346 348 + 262 18 349 350 + 263 18 349 351 + 264 18 352 353 + 265 18 352 354 + 266 18 355 356 + 267 18 355 357 + 268 18 358 359 + 269 18 358 360 + 270 18 361 362 + 271 18 361 363 + 272 18 364 365 + 273 18 364 366 + 274 18 367 369 + 275 18 367 368 + 276 18 370 372 + 277 18 370 371 + 278 18 373 374 + 279 18 373 375 + 280 18 376 378 + 281 18 376 377 + 282 18 379 381 + 283 18 379 380 + 284 18 382 383 + 285 18 382 384 + 286 18 385 386 + 287 18 385 387 + 288 18 388 390 + 289 18 388 389 + 290 18 391 393 + 291 18 391 392 + 292 18 394 395 + 293 18 394 396 + 294 18 397 399 + 295 18 397 398 + 296 18 400 402 + 297 18 400 401 + 298 18 403 405 + 299 18 403 404 + 300 18 406 407 + 301 18 406 408 + 302 18 409 411 + 303 18 409 410 + 304 18 412 413 + 305 18 412 414 + 306 18 415 417 + 307 18 415 416 + 308 18 418 420 + 309 18 418 419 + 310 18 421 422 + 311 18 421 423 + 312 18 424 425 + 313 18 424 426 + 314 18 427 428 + 315 18 427 429 + 316 18 430 432 + 317 18 430 431 + 318 18 433 435 + 319 18 433 434 + 320 18 436 437 + 321 18 436 438 + 322 18 439 440 + 323 18 439 441 + 324 18 442 443 + 325 18 442 444 + 326 18 445 447 + 327 18 445 446 + 328 18 448 449 + 329 18 448 450 + 330 18 451 453 + 331 18 451 452 + 332 18 454 456 + 333 18 454 455 + 334 18 457 458 + 335 18 457 459 + 336 18 460 462 + 337 18 460 461 + 338 18 463 465 + 339 18 463 464 + 340 18 466 467 + 341 18 466 468 + 342 18 469 470 + 343 18 469 471 + 344 18 472 473 + 345 18 472 474 + 346 18 475 476 + 347 18 475 477 + 348 18 478 479 + 349 18 478 480 + 350 18 481 482 + 351 18 481 483 + 352 18 484 485 + 353 18 484 486 + 354 18 487 489 + 355 18 487 488 + 356 18 490 492 + 357 18 490 491 + 358 18 493 495 + 359 18 493 494 + 360 18 496 497 + 361 18 496 498 + 362 18 499 501 + 363 18 499 500 + 364 18 502 503 + 365 18 502 504 + 366 18 505 507 + 367 18 505 506 + 368 18 508 509 + 369 18 508 510 + 370 18 511 513 + 371 18 511 512 + 372 18 514 516 + 373 18 514 515 + 374 18 517 518 + 375 18 517 519 + 376 18 520 521 + 377 18 520 522 + 378 18 523 525 + 379 18 523 524 + 380 18 526 528 + 381 18 526 527 + 382 18 529 530 + 383 18 529 531 + 384 18 532 533 + 385 18 532 534 + 386 18 535 536 + 387 18 535 537 + 388 18 538 540 + 389 18 538 539 + 390 18 541 542 + 391 18 541 543 + 392 18 544 546 + 393 18 544 545 + 394 18 547 549 + 395 18 547 548 + 396 18 550 551 + 397 18 550 552 + 398 18 553 555 + 399 18 553 554 + 400 18 556 557 + 401 18 556 558 + 402 18 559 561 + 403 18 559 560 + 404 18 562 563 + 405 18 562 564 + 406 18 565 567 + 407 18 565 566 + 408 18 568 570 + 409 18 568 569 + 410 18 571 573 + 411 18 571 572 + 412 18 574 575 + 413 18 574 576 + 414 18 577 579 + 415 18 577 578 + 416 18 580 581 + 417 18 580 582 + 418 18 583 585 + 419 18 583 584 + 420 18 586 588 + 421 18 586 587 + 422 18 589 590 + 423 18 589 591 + 424 18 592 594 + 425 18 592 593 + 426 18 595 597 + 427 18 595 596 + 428 18 598 600 + 429 18 598 599 + 430 18 601 602 + 431 18 601 603 + 432 18 604 606 + 433 18 604 605 + 434 18 607 609 + 435 18 607 608 + 436 18 610 611 + 437 18 610 612 + 438 18 613 615 + 439 18 613 614 + 440 18 616 618 + 441 18 616 617 + 442 18 619 620 + 443 18 619 621 + 444 18 622 623 + 445 18 622 624 + 446 18 625 627 + 447 18 625 626 + 448 18 628 629 + 449 18 628 630 + 450 18 631 632 + 451 18 631 633 + 452 18 634 635 + 453 18 634 636 + 454 18 637 639 + 455 18 637 638 + 456 18 640 642 + 457 18 640 641 + 458 18 643 644 + 459 18 643 645 + 460 18 646 647 + 461 18 646 648 + 462 18 649 650 + 463 18 649 651 + 464 18 652 653 + 465 18 652 654 + 466 18 655 657 + 467 18 655 656 + 468 18 658 660 + 469 18 658 659 + 470 18 661 663 + 471 18 661 662 + 472 18 664 665 + 473 18 664 666 + 474 18 667 669 + 475 18 667 668 + 476 18 670 672 + 477 18 670 671 + 478 18 673 674 + 479 18 673 675 + 480 18 676 677 + 481 18 676 678 + 482 18 679 681 + 483 18 679 680 + 484 18 682 684 + 485 18 682 683 + 486 18 685 686 + 487 18 685 687 + 488 18 688 690 + 489 18 688 689 + 490 18 691 693 + 491 18 691 692 + 492 18 694 695 + 493 18 694 696 + 494 18 697 698 + 495 18 697 699 + 496 18 700 701 + 497 18 700 702 + 498 18 703 704 + 499 18 703 705 + 500 18 706 707 + 501 18 706 708 + 502 18 709 710 + 503 18 709 711 + 504 18 712 714 + 505 18 712 713 + 506 18 715 716 + 507 18 715 717 + 508 18 718 719 + 509 18 718 720 + 510 18 721 722 + 511 18 721 723 + 512 18 724 726 + 513 18 724 725 + 514 18 727 728 + 515 18 727 729 + 516 18 730 731 + 517 18 730 732 + 518 18 733 735 + 519 18 733 734 + 520 18 736 737 + 521 18 736 738 + 522 18 739 741 + 523 18 739 740 + 524 18 742 743 + 525 18 742 744 + 526 18 745 746 + 527 18 745 747 + 528 18 748 750 + 529 18 748 749 + 530 18 751 753 + 531 18 751 752 + 532 18 754 756 + 533 18 754 755 + 534 18 757 758 + 535 18 757 759 + 536 18 760 762 + 537 18 760 761 + 538 18 763 764 + 539 18 763 765 + 540 18 766 767 + 541 18 766 768 + 542 18 769 770 + 543 18 769 771 + 544 18 772 774 + 545 18 772 773 + 546 18 775 777 + 547 18 775 776 + 548 18 778 780 + 549 18 778 779 + 550 18 781 783 + 551 18 781 782 + 552 18 784 786 + 553 18 784 785 + 554 18 787 789 + 555 18 787 788 + 556 18 790 791 + 557 18 790 792 + 558 18 793 795 + 559 18 793 794 + 560 18 796 797 + 561 18 796 798 + 562 18 799 801 + 563 18 799 800 + 564 18 802 803 + 565 18 802 804 + 566 18 805 806 + 567 18 805 807 + 568 18 808 809 + 569 18 808 810 + 570 18 811 813 + 571 18 811 812 + 572 18 814 815 + 573 18 814 816 + 574 18 817 818 + 575 18 817 819 + 576 18 820 821 + 577 18 820 822 + 578 18 823 824 + 579 18 823 825 + 580 18 826 828 + 581 18 826 827 + 582 18 829 830 + 583 18 829 831 + 584 18 832 834 + 585 18 832 833 + 586 18 835 837 + 587 18 835 836 + 588 18 838 839 + 589 18 838 840 + 590 18 841 842 + 591 18 841 843 + 592 18 844 845 + 593 18 844 846 + 594 18 847 848 + 595 18 847 849 + 596 18 850 852 + 597 18 850 851 + 598 18 853 854 + 599 18 853 855 + 600 18 856 858 + 601 18 856 857 + 602 18 859 861 + 603 18 859 860 + 604 18 862 863 + 605 18 862 864 + 606 18 865 866 + 607 18 865 867 + 608 18 868 869 + 609 18 868 870 + 610 18 871 873 + 611 18 871 872 + 612 18 874 875 + 613 18 874 876 + 614 18 877 878 + 615 18 877 879 + 616 18 880 882 + 617 18 880 881 + 618 18 883 884 + 619 18 883 885 + 620 18 886 887 + 621 18 886 888 + 622 18 889 891 + 623 18 889 890 + 624 18 892 894 + 625 18 892 893 + 626 18 895 896 + 627 18 895 897 + 628 18 898 899 + 629 18 898 900 + 630 18 901 903 + 631 18 901 902 + 632 18 904 905 + 633 18 904 906 + 634 18 907 908 + 635 18 907 909 + 636 18 910 911 + 637 18 910 912 + 638 18 913 915 + 639 18 913 914 + 640 18 916 917 + 641 18 916 918 + 642 18 919 920 + 643 18 919 921 + 644 18 922 924 + 645 18 922 923 + 646 18 925 927 + 647 18 925 926 + 648 18 928 930 + 649 18 928 929 + 650 18 931 932 + 651 18 931 933 + 652 18 934 935 + 653 18 934 936 + 654 18 937 939 + 655 18 937 938 + 656 18 940 942 + 657 18 940 941 + 658 18 943 945 + 659 18 943 944 + 660 18 946 948 + 661 18 946 947 + 662 18 949 950 + 663 18 949 951 + 664 18 952 953 + 665 18 952 954 + 666 18 955 956 + 667 18 955 957 + 668 18 958 960 + 669 18 958 959 + 670 18 961 963 + 671 18 961 962 + 672 18 964 965 + 673 18 964 966 + 674 18 967 969 + 675 18 967 968 + 676 18 970 972 + 677 18 970 971 + 678 18 973 975 + 679 18 973 974 + 680 18 976 978 + 681 18 976 977 + 682 18 979 981 + 683 18 979 980 + 684 18 982 983 + 685 18 982 984 + 686 18 985 987 + 687 18 985 986 + 688 18 988 989 + 689 18 988 990 + 690 18 991 993 + 691 18 991 992 + 692 18 994 996 + 693 18 994 995 + 694 18 997 998 + 695 18 997 999 + 696 18 1000 1001 + 697 18 1000 1002 + 698 18 1003 1005 + 699 18 1003 1004 + 700 18 1006 1007 + 701 18 1006 1008 + 702 18 1009 1011 + 703 18 1009 1010 + 704 18 1012 1013 + 705 18 1012 1014 + 706 18 1015 1017 + 707 18 1015 1016 + 708 18 1018 1020 + 709 18 1018 1019 + 710 18 1021 1023 + 711 18 1021 1022 + 712 18 1024 1025 + 713 18 1024 1026 + 714 18 1027 1028 + 715 18 1027 1029 + 716 18 1030 1032 + 717 18 1030 1031 + 718 18 1033 1034 + 719 18 1033 1035 + 720 18 1036 1037 + 721 18 1036 1038 + 722 18 1039 1041 + 723 18 1039 1040 + 724 18 1042 1043 + 725 18 1042 1044 + 726 18 1045 1046 + 727 18 1045 1047 + 728 18 1048 1050 + 729 18 1048 1049 + 730 18 1051 1053 + 731 18 1051 1052 + 732 18 1054 1056 + 733 18 1054 1055 + 734 18 1057 1058 + 735 18 1057 1059 + 736 18 1060 1062 + 737 18 1060 1061 + 738 18 1063 1064 + 739 18 1063 1065 + 740 18 1066 1068 + 741 18 1066 1067 + 742 18 1069 1071 + 743 18 1069 1070 + 744 18 1072 1074 + 745 18 1072 1073 + 746 18 1075 1077 + 747 18 1075 1076 + 748 18 1078 1079 + 749 18 1078 1080 + 750 18 1081 1082 + 751 18 1081 1083 + 752 18 1084 1085 + 753 18 1084 1086 + 754 18 1087 1089 + 755 18 1087 1088 + 756 18 1090 1092 + 757 18 1090 1091 + 758 18 1093 1095 + 759 18 1093 1094 + 760 18 1096 1097 + 761 18 1096 1098 + 762 18 1099 1100 + 763 18 1099 1101 + 764 18 1102 1103 + 765 18 1102 1104 + 766 18 1105 1107 + 767 18 1105 1106 + 768 18 1108 1110 + 769 18 1108 1109 + 770 18 1111 1112 + 771 18 1111 1113 + 772 18 1114 1116 + 773 18 1114 1115 + 774 18 1117 1119 + 775 18 1117 1118 + 776 18 1120 1121 + 777 18 1120 1122 + 778 18 1123 1124 + 779 18 1123 1125 + 780 18 1126 1128 + 781 18 1126 1127 + 782 18 1129 1130 + 783 18 1129 1131 + 784 18 1132 1133 + 785 18 1132 1134 + 786 18 1135 1137 + 787 18 1135 1136 + 788 18 1138 1140 + 789 18 1138 1139 + 790 18 1141 1142 + 791 18 1141 1143 + 792 18 1144 1146 + 793 18 1144 1145 + 794 18 1147 1149 + 795 18 1147 1148 + 796 18 1150 1152 + 797 18 1150 1151 + 798 18 1153 1155 + 799 18 1153 1154 + 800 18 1156 1158 + 801 18 1156 1157 + 802 18 1159 1160 + 803 18 1159 1161 + 804 18 1162 1164 + 805 18 1162 1163 + 806 18 1165 1166 + 807 18 1165 1167 + 808 18 1168 1170 + 809 18 1168 1169 + 810 18 1171 1172 + 811 18 1171 1173 + 812 18 1174 1175 + 813 18 1174 1176 + 814 18 1177 1179 + 815 18 1177 1178 + 816 18 1180 1182 + 817 18 1180 1181 + 818 18 1183 1185 + 819 18 1183 1184 + 820 18 1186 1187 + 821 18 1186 1188 + 822 18 1189 1190 + 823 18 1189 1191 + 824 18 1192 1194 + 825 18 1192 1193 + 826 18 1195 1196 + 827 18 1195 1197 + 828 18 1198 1199 + 829 18 1198 1200 + 830 18 1201 1202 + 831 18 1201 1203 + 832 18 1204 1205 + 833 18 1204 1206 + 834 18 1207 1209 + 835 18 1207 1208 + 836 18 1210 1212 + 837 18 1210 1211 + 838 18 1213 1214 + 839 18 1213 1215 + 840 18 1216 1218 + 841 18 1216 1217 + 842 18 1219 1221 + 843 18 1219 1220 + 844 18 1222 1224 + 845 18 1222 1223 + 846 18 1225 1226 + 847 18 1225 1227 + 848 18 1228 1229 + 849 18 1228 1230 + 850 18 1231 1232 + 851 18 1231 1233 + 852 18 1234 1236 + 853 18 1234 1235 + 854 18 1237 1239 + 855 18 1237 1238 + 856 18 1240 1242 + 857 18 1240 1241 + 858 18 1243 1244 + 859 18 1243 1245 + 860 18 1246 1248 + 861 18 1246 1247 + 862 18 1249 1250 + 863 18 1249 1251 + 864 18 1252 1254 + 865 18 1252 1253 + 866 18 1255 1256 + 867 18 1255 1257 + 868 18 1258 1259 + 869 18 1258 1260 + 870 18 1261 1263 + 871 18 1261 1262 + 872 18 1264 1265 + 873 18 1264 1266 + 874 18 1267 1268 + 875 18 1267 1269 + 876 18 1270 1271 + 877 18 1270 1272 + 878 18 1273 1274 + 879 18 1273 1275 + 880 18 1276 1277 + 881 18 1276 1278 + 882 18 1279 1280 + 883 18 1279 1281 + 884 18 1282 1283 + 885 18 1282 1284 + 886 18 1285 1286 + 887 18 1285 1287 + 888 18 1288 1289 + 889 18 1288 1290 + 890 18 1291 1293 + 891 18 1291 1292 + 892 18 1294 1295 + 893 18 1294 1296 + 894 18 1297 1299 + 895 18 1297 1298 + 896 18 1300 1302 + 897 18 1300 1301 + 898 18 1303 1304 + 899 18 1303 1305 + 900 18 1306 1308 + 901 18 1306 1307 + 902 18 1309 1311 + 903 18 1309 1310 + 904 18 1312 1314 + 905 18 1312 1313 + 906 18 1315 1317 + 907 18 1315 1316 + 908 18 1318 1320 + 909 18 1318 1319 + 910 18 1321 1323 + 911 18 1321 1322 + 912 18 1324 1325 + 913 18 1324 1326 + 914 18 1327 1329 + 915 18 1327 1328 + 916 18 1330 1332 + 917 18 1330 1331 + 918 18 1333 1334 + 919 18 1333 1335 + 920 18 1336 1337 + 921 18 1336 1338 + 922 18 1339 1340 + 923 18 1339 1341 + 924 18 1342 1344 + 925 18 1342 1343 + 926 18 1345 1347 + 927 18 1345 1346 + 928 18 1348 1350 + 929 18 1348 1349 + 930 18 1351 1352 + 931 18 1351 1353 + 932 18 1354 1355 + 933 18 1354 1356 + 934 18 1357 1358 + 935 18 1357 1359 + 936 18 1360 1362 + 937 18 1360 1361 + 938 18 1363 1365 + 939 18 1363 1364 + 940 18 1366 1368 + 941 18 1366 1367 + 942 18 1369 1370 + 943 18 1369 1371 + 944 18 1372 1373 + 945 18 1372 1374 + 946 18 1375 1377 + 947 18 1375 1376 + 948 18 1378 1379 + 949 18 1378 1380 + 950 18 1381 1382 + 951 18 1381 1383 + 952 18 1384 1385 + 953 18 1384 1386 + 954 18 1387 1388 + 955 18 1387 1389 + 956 18 1390 1392 + 957 18 1390 1391 + 958 18 1393 1395 + 959 18 1393 1394 + 960 18 1396 1397 + 961 18 1396 1398 + 962 18 1399 1401 + 963 18 1399 1400 + 964 18 1402 1403 + 965 18 1402 1404 + 966 18 1405 1406 + 967 18 1405 1407 + 968 18 1408 1409 + 969 18 1408 1410 + 970 18 1411 1412 + 971 18 1411 1413 + 972 18 1414 1416 + 973 18 1414 1415 + 974 18 1417 1419 + 975 18 1417 1418 + 976 18 1420 1422 + 977 18 1420 1421 + 978 18 1423 1425 + 979 18 1423 1424 + 980 18 1426 1428 + 981 18 1426 1427 + 982 18 1429 1430 + 983 18 1429 1431 + 984 18 1432 1434 + 985 18 1432 1433 + 986 18 1435 1436 + 987 18 1435 1437 + 988 18 1438 1439 + 989 18 1438 1440 + 990 18 1441 1442 + 991 18 1441 1443 + 992 18 1444 1445 + 993 18 1444 1446 + 994 18 1447 1448 + 995 18 1447 1449 + 996 18 1450 1451 + 997 18 1450 1452 + 998 18 1453 1455 + 999 18 1453 1454 + 1000 18 1456 1457 + 1001 18 1456 1458 + 1002 18 1459 1461 + 1003 18 1459 1460 + 1004 18 1462 1463 + 1005 18 1462 1464 + 1006 18 1465 1466 + 1007 18 1465 1467 + 1008 18 1468 1470 + 1009 18 1468 1469 + 1010 18 1471 1472 + 1011 18 1471 1473 + 1012 18 1474 1476 + 1013 18 1474 1475 + 1014 18 1477 1478 + 1015 18 1477 1479 + 1016 18 1480 1482 + 1017 18 1480 1481 + 1018 18 1483 1485 + 1019 18 1483 1484 + 1020 18 1486 1488 + 1021 18 1486 1487 + 1022 18 1489 1491 + 1023 18 1489 1490 + 1024 18 1492 1493 + 1025 18 1492 1494 + 1026 18 1495 1496 + 1027 18 1495 1497 + 1028 18 1498 1499 + 1029 18 1498 1500 + 1030 18 1501 1502 + 1031 18 1501 1503 + 1032 18 1504 1505 + 1033 18 1504 1506 + 1034 18 1507 1509 + 1035 18 1507 1508 + 1036 18 1510 1512 + 1037 18 1510 1511 + 1038 18 1513 1515 + 1039 18 1513 1514 + 1040 18 1516 1518 + 1041 18 1516 1517 + 1042 18 1519 1520 + 1043 18 1519 1521 + 1044 18 1522 1524 + 1045 18 1522 1523 + 1046 18 1525 1526 + 1047 18 1525 1527 + 1048 18 1528 1529 + 1049 18 1528 1530 + 1050 18 1531 1533 + 1051 18 1531 1532 + 1052 18 1534 1536 + 1053 18 1534 1535 + 1054 18 1537 1539 + 1055 18 1537 1538 + 1056 18 1540 1541 + 1057 18 1540 1542 + 1058 18 1543 1545 + 1059 18 1543 1544 + 1060 18 1546 1547 + 1061 18 1546 1548 + 1062 18 1549 1551 + 1063 18 1549 1550 + 1064 18 1552 1553 + 1065 18 1552 1554 + 1066 18 1555 1557 + 1067 18 1555 1556 + 1068 18 1558 1559 + 1069 18 1558 1560 + 1070 18 1561 1562 + 1071 18 1561 1563 + 1072 18 1564 1565 + 1073 18 1564 1566 + 1074 18 1567 1569 + 1075 18 1567 1568 + 1076 18 1570 1571 + 1077 18 1570 1572 + 1078 18 1573 1575 + 1079 18 1573 1574 + 1080 18 1576 1578 + 1081 18 1576 1577 + 1082 18 1579 1581 + 1083 18 1579 1580 + 1084 18 1582 1584 + 1085 18 1582 1583 + 1086 18 1585 1586 + 1087 18 1585 1587 + 1088 18 1588 1590 + 1089 18 1588 1589 + 1090 18 1591 1592 + 1091 18 1591 1593 + 1092 18 1594 1596 + 1093 18 1594 1595 + 1094 18 1597 1598 + 1095 18 1597 1599 + 1096 18 1600 1602 + 1097 18 1600 1601 + 1098 18 1603 1605 + 1099 18 1603 1604 + 1100 18 1606 1608 + 1101 18 1606 1607 + 1102 18 1609 1610 + 1103 18 1609 1611 + 1104 18 1612 1614 + 1105 18 1612 1613 + 1106 18 1615 1617 + 1107 18 1615 1616 + 1108 18 1618 1620 + 1109 18 1618 1619 + 1110 18 1621 1623 + 1111 18 1621 1622 + 1112 18 1624 1625 + 1113 18 1624 1626 + 1114 18 1627 1629 + 1115 18 1627 1628 + 1116 18 1630 1631 + 1117 18 1630 1632 + 1118 18 1633 1635 + 1119 18 1633 1634 + 1120 18 1636 1637 + 1121 18 1636 1638 + 1122 18 1639 1641 + 1123 18 1639 1640 + 1124 18 1642 1643 + 1125 18 1642 1644 + 1126 18 1645 1646 + 1127 18 1645 1647 + 1128 18 1648 1650 + 1129 18 1648 1649 + 1130 18 1651 1653 + 1131 18 1651 1652 + 1132 18 1654 1656 + 1133 18 1654 1655 + 1134 18 1657 1658 + 1135 18 1657 1659 + 1136 18 1660 1661 + 1137 18 1660 1662 + 1138 18 1663 1664 + 1139 18 1663 1665 + 1140 18 1666 1668 + 1141 18 1666 1667 + 1142 18 1669 1670 + 1143 18 1669 1671 + 1144 18 1672 1674 + 1145 18 1672 1673 + 1146 18 1675 1676 + 1147 18 1675 1677 + 1148 18 1678 1680 + 1149 18 1678 1679 + 1150 18 1681 1683 + 1151 18 1681 1682 + 1152 18 1684 1685 + 1153 18 1684 1686 + 1154 18 1687 1688 + 1155 18 1687 1689 + 1156 18 1690 1691 + 1157 18 1690 1692 + 1158 18 1693 1695 + 1159 18 1693 1694 + 1160 18 1696 1697 + 1161 18 1696 1698 + 1162 18 1699 1701 + 1163 18 1699 1700 + 1164 18 1702 1703 + 1165 18 1702 1704 + 1166 18 1705 1707 + 1167 18 1705 1706 + 1168 18 1708 1709 + 1169 18 1708 1710 + 1170 18 1711 1712 + 1171 18 1711 1713 + 1172 18 1714 1716 + 1173 18 1714 1715 + 1174 18 1717 1718 + 1175 18 1717 1719 + 1176 18 1720 1721 + 1177 18 1720 1722 + 1178 18 1723 1724 + 1179 18 1723 1725 + 1180 18 1726 1727 + 1181 18 1726 1728 + 1182 18 1729 1730 + 1183 18 1729 1731 + 1184 18 1732 1734 + 1185 18 1732 1733 + 1186 18 1735 1737 + 1187 18 1735 1736 + 1188 18 1738 1740 + 1189 18 1738 1739 + 1190 18 1741 1743 + 1191 18 1741 1742 + 1192 18 1744 1745 + 1193 18 1744 1746 + 1194 18 1747 1749 + 1195 18 1747 1748 + 1196 18 1750 1751 + 1197 18 1750 1752 + 1198 18 1753 1755 + 1199 18 1753 1754 + 1200 18 1756 1758 + 1201 18 1756 1757 + 1202 18 1759 1760 + 1203 18 1759 1761 + 1204 18 1762 1764 + 1205 18 1762 1763 + 1206 18 1765 1767 + 1207 18 1765 1766 + 1208 18 1768 1769 + 1209 18 1768 1770 + 1210 18 1771 1773 + 1211 18 1771 1772 + 1212 18 1774 1776 + 1213 18 1774 1775 + 1214 18 1777 1779 + 1215 18 1777 1778 + 1216 18 1780 1781 + 1217 18 1780 1782 + 1218 18 1783 1784 + 1219 18 1783 1785 + 1220 18 1786 1787 + 1221 18 1786 1788 + 1222 18 1789 1790 + 1223 18 1789 1791 + 1224 18 1792 1793 + 1225 18 1792 1794 + 1226 18 1795 1796 + 1227 18 1795 1797 + 1228 18 1798 1799 + 1229 18 1798 1800 + 1230 18 1801 1803 + 1231 18 1801 1802 + 1232 18 1804 1806 + 1233 18 1804 1805 + 1234 18 1807 1809 + 1235 18 1807 1808 + 1236 18 1810 1812 + 1237 18 1810 1811 + 1238 18 1813 1815 + 1239 18 1813 1814 + 1240 18 1816 1818 + 1241 18 1816 1817 + 1242 18 1819 1821 + 1243 18 1819 1820 + 1244 18 1822 1823 + 1245 18 1822 1824 + 1246 18 1825 1827 + 1247 18 1825 1826 + 1248 18 1828 1830 + 1249 18 1828 1829 + 1250 18 1831 1832 + 1251 18 1831 1833 + 1252 18 1834 1835 + 1253 18 1834 1836 + 1254 18 1837 1838 + 1255 18 1837 1839 + 1256 18 1840 1842 + 1257 18 1840 1841 + 1258 18 1843 1845 + 1259 18 1843 1844 + 1260 18 1846 1848 + 1261 18 1846 1847 + 1262 18 1849 1851 + 1263 18 1849 1850 + 1264 18 1852 1854 + 1265 18 1852 1853 + 1266 18 1855 1856 + 1267 18 1855 1857 + 1268 18 1858 1859 + 1269 18 1858 1860 + 1270 18 1861 1862 + 1271 18 1861 1863 + 1272 18 1864 1866 + 1273 18 1864 1865 + 1274 18 1867 1869 + 1275 18 1867 1868 + 1276 18 1870 1871 + 1277 18 1870 1872 + 1278 18 1873 1874 + 1279 18 1873 1875 + 1280 18 1876 1877 + 1281 18 1876 1878 + 1282 18 1879 1881 + 1283 18 1879 1880 + 1284 18 1882 1883 + 1285 18 1882 1884 + 1286 18 1885 1886 + 1287 18 1885 1887 + 1288 18 1888 1890 + 1289 18 1888 1889 + 1290 18 1891 1892 + 1291 18 1891 1893 + 1292 18 1894 1896 + 1293 18 1894 1895 + 1294 18 1897 1898 + 1295 18 1897 1899 + 1296 18 1900 1902 + 1297 18 1900 1901 + 1298 18 1903 1905 + 1299 18 1903 1904 + 1300 18 1906 1908 + 1301 18 1906 1907 + 1302 18 1909 1911 + 1303 18 1909 1910 + 1304 18 1912 1913 + 1305 18 1912 1914 + 1306 18 1915 1916 + 1307 18 1915 1917 + 1308 18 1918 1920 + 1309 18 1918 1919 + 1310 18 1921 1923 + 1311 18 1921 1922 + 1312 18 1924 1926 + 1313 18 1924 1925 + 1314 18 1927 1929 + 1315 18 1927 1928 + 1316 18 1930 1932 + 1317 18 1930 1931 + 1318 18 1933 1935 + 1319 18 1933 1934 + 1320 18 1936 1937 + 1321 18 1936 1938 + 1322 18 1939 1940 + 1323 18 1939 1941 + 1324 18 1942 1944 + 1325 18 1942 1943 + 1326 18 1945 1947 + 1327 18 1945 1946 + 1328 18 1948 1950 + 1329 18 1948 1949 + 1330 18 1951 1953 + 1331 18 1951 1952 + 1332 18 1954 1955 + 1333 18 1954 1956 + 1334 18 1957 1959 + 1335 18 1957 1958 + 1336 18 1960 1961 + 1337 18 1960 1962 + 1338 18 1963 1965 + 1339 18 1963 1964 + 1340 18 1966 1967 + 1341 18 1966 1968 + 1342 18 1969 1970 + 1343 18 1969 1971 + 1344 18 1972 1974 + 1345 18 1972 1973 + 1346 18 1975 1977 + 1347 18 1975 1976 + 1348 18 1978 1979 + 1349 18 1978 1980 + 1350 18 1981 1982 + 1351 18 1981 1983 + 1352 18 1984 1986 + 1353 18 1984 1985 + 1354 18 1987 1988 + 1355 18 1987 1989 + 1356 18 1990 1992 + 1357 18 1990 1991 + 1358 18 1993 1995 + 1359 18 1993 1994 + 1360 18 1996 1998 + 1361 18 1996 1997 + 1362 18 1999 2000 + 1363 18 1999 2001 + 1364 18 2002 2004 + 1365 18 2002 2003 + +Angles + + 1 5 2 1 7 + 2 4 2 1 3 + 3 6 3 1 7 + 4 7 4 2 5 + 5 7 5 2 6 + 6 1 1 2 5 + 7 1 1 2 6 + 8 1 1 2 4 + 9 7 4 2 6 + 10 2 1 7 8 + 11 3 1 7 19 + 12 11 8 7 19 + 13 9 7 8 11 + 14 8 7 8 9 + 15 16 11 8 20 + 16 15 9 8 20 + 17 14 9 8 11 + 18 10 7 8 20 + 19 5 8 9 28 + 20 4 8 9 10 + 21 6 10 9 28 + 22 18 12 11 22 + 23 23 21 11 22 + 24 12 8 11 12 + 25 13 8 11 21 + 26 18 12 11 21 + 27 13 8 11 22 + 28 19 13 12 14 + 29 17 11 12 14 + 30 17 11 12 13 + 31 20 15 13 23 + 32 20 12 13 23 + 33 19 12 13 15 + 34 20 12 14 24 + 35 20 16 14 24 + 36 19 12 14 16 + 37 20 13 15 25 + 38 20 17 15 25 + 39 19 13 15 17 + 40 20 14 16 26 + 41 19 14 16 17 + 42 20 17 16 26 + 43 21 15 17 18 + 44 19 15 17 16 + 45 21 16 17 18 + 46 22 17 18 27 + 47 2 9 28 29 + 48 3 9 28 32 + 49 11 29 28 32 + 50 15 30 29 34 + 51 10 28 29 33 + 52 10 28 29 34 + 53 15 30 29 33 + 54 24 33 29 34 + 55 8 28 29 30 + 56 6 31 30 35 + 57 5 29 30 35 + 58 4 29 30 31 + 59 2 30 35 36 + 60 3 30 35 39 + 61 11 36 35 39 + 62 8 35 36 37 + 63 10 35 36 41 + 64 10 35 36 40 + 65 24 40 36 41 + 66 15 37 36 40 + 67 15 37 36 41 + 68 6 38 37 42 + 69 5 36 37 42 + 70 4 36 37 38 + 71 11 43 42 53 + 72 2 37 42 43 + 73 3 37 42 53 + 74 10 42 43 54 + 75 16 46 43 54 + 76 14 44 43 46 + 77 9 42 43 46 + 78 8 42 43 44 + 79 15 44 43 54 + 80 5 43 44 62 + 81 6 45 44 62 + 82 4 43 44 45 + 83 13 43 46 55 + 84 13 43 46 56 + 85 12 43 46 47 + 86 23 55 46 56 + 87 18 47 46 56 + 88 18 47 46 55 + 89 17 46 47 49 + 90 17 46 47 48 + 91 19 48 47 49 + 92 20 50 48 57 + 93 19 47 48 50 + 94 20 47 48 57 + 95 20 51 49 58 + 96 19 47 49 51 + 97 20 47 49 58 + 98 20 48 50 59 + 99 19 48 50 52 + 100 20 52 50 59 + 101 20 52 51 60 + 102 20 49 51 60 + 103 19 49 51 52 + 104 20 50 52 61 + 105 19 50 52 51 + 106 20 51 52 61 + 107 2 44 62 63 + 108 3 44 62 70 + 109 11 63 62 70 + 110 16 66 63 71 + 111 15 64 63 71 + 112 14 64 63 66 + 113 10 62 63 71 + 114 9 62 63 66 + 115 8 62 63 64 + 116 4 63 64 65 + 117 6 65 64 79 + 118 5 63 64 79 + 119 23 72 66 73 + 120 27 67 66 73 + 121 27 67 66 72 + 122 25 63 66 67 + 123 13 63 66 73 + 124 13 63 66 72 + 125 29 68 67 75 + 126 23 74 67 75 + 127 29 68 67 74 + 128 26 66 67 68 + 129 27 66 67 74 + 130 27 66 67 75 + 131 28 67 68 69 + 132 29 68 69 76 + 133 29 68 69 77 + 134 29 68 69 78 + 135 7 76 69 78 + 136 7 76 69 77 + 137 7 77 69 78 + 138 3 64 79 81 + 139 2 64 79 80 + 140 11 80 79 81 + 141 7 83 80 84 + 142 30 79 80 84 + 143 7 82 80 83 + 144 30 79 80 83 + 145 30 79 80 82 + 146 7 82 80 84 + 147 31 86 85 87 + 148 31 89 88 90 + 149 31 92 91 93 + 150 31 95 94 96 + 151 31 98 97 99 + 152 31 101 100 102 + 153 31 104 103 105 + 154 31 107 106 108 + 155 31 110 109 111 + 156 31 113 112 114 + 157 31 116 115 117 + 158 31 119 118 120 + 159 31 122 121 123 + 160 31 125 124 126 + 161 31 128 127 129 + 162 31 131 130 132 + 163 31 134 133 135 + 164 31 137 136 138 + 165 31 140 139 141 + 166 31 143 142 144 + 167 31 146 145 147 + 168 31 149 148 150 + 169 31 152 151 153 + 170 31 155 154 156 + 171 31 158 157 159 + 172 31 161 160 162 + 173 31 164 163 165 + 174 31 167 166 168 + 175 31 170 169 171 + 176 31 173 172 174 + 177 31 176 175 177 + 178 31 179 178 180 + 179 31 182 181 183 + 180 31 185 184 186 + 181 31 188 187 189 + 182 31 191 190 192 + 183 31 194 193 195 + 184 31 197 196 198 + 185 31 200 199 201 + 186 31 203 202 204 + 187 31 206 205 207 + 188 31 209 208 210 + 189 31 212 211 213 + 190 31 215 214 216 + 191 31 218 217 219 + 192 31 221 220 222 + 193 31 224 223 225 + 194 31 227 226 228 + 195 31 230 229 231 + 196 31 233 232 234 + 197 31 236 235 237 + 198 31 239 238 240 + 199 31 242 241 243 + 200 31 245 244 246 + 201 31 248 247 249 + 202 31 251 250 252 + 203 31 254 253 255 + 204 31 257 256 258 + 205 31 260 259 261 + 206 31 263 262 264 + 207 31 266 265 267 + 208 31 269 268 270 + 209 31 272 271 273 + 210 31 275 274 276 + 211 31 278 277 279 + 212 31 281 280 282 + 213 31 284 283 285 + 214 31 287 286 288 + 215 31 290 289 291 + 216 31 293 292 294 + 217 31 296 295 297 + 218 31 299 298 300 + 219 31 302 301 303 + 220 31 305 304 306 + 221 31 308 307 309 + 222 31 311 310 312 + 223 31 314 313 315 + 224 31 317 316 318 + 225 31 320 319 321 + 226 31 323 322 324 + 227 31 326 325 327 + 228 31 329 328 330 + 229 31 332 331 333 + 230 31 335 334 336 + 231 31 338 337 339 + 232 31 341 340 342 + 233 31 344 343 345 + 234 31 347 346 348 + 235 31 350 349 351 + 236 31 353 352 354 + 237 31 356 355 357 + 238 31 359 358 360 + 239 31 362 361 363 + 240 31 365 364 366 + 241 31 368 367 369 + 242 31 371 370 372 + 243 31 374 373 375 + 244 31 377 376 378 + 245 31 380 379 381 + 246 31 383 382 384 + 247 31 386 385 387 + 248 31 389 388 390 + 249 31 392 391 393 + 250 31 395 394 396 + 251 31 398 397 399 + 252 31 401 400 402 + 253 31 404 403 405 + 254 31 407 406 408 + 255 31 410 409 411 + 256 31 413 412 414 + 257 31 416 415 417 + 258 31 419 418 420 + 259 31 422 421 423 + 260 31 425 424 426 + 261 31 428 427 429 + 262 31 431 430 432 + 263 31 434 433 435 + 264 31 437 436 438 + 265 31 440 439 441 + 266 31 443 442 444 + 267 31 446 445 447 + 268 31 449 448 450 + 269 31 452 451 453 + 270 31 455 454 456 + 271 31 458 457 459 + 272 31 461 460 462 + 273 31 464 463 465 + 274 31 467 466 468 + 275 31 470 469 471 + 276 31 473 472 474 + 277 31 476 475 477 + 278 31 479 478 480 + 279 31 482 481 483 + 280 31 485 484 486 + 281 31 488 487 489 + 282 31 491 490 492 + 283 31 494 493 495 + 284 31 497 496 498 + 285 31 500 499 501 + 286 31 503 502 504 + 287 31 506 505 507 + 288 31 509 508 510 + 289 31 512 511 513 + 290 31 515 514 516 + 291 31 518 517 519 + 292 31 521 520 522 + 293 31 524 523 525 + 294 31 527 526 528 + 295 31 530 529 531 + 296 31 533 532 534 + 297 31 536 535 537 + 298 31 539 538 540 + 299 31 542 541 543 + 300 31 545 544 546 + 301 31 548 547 549 + 302 31 551 550 552 + 303 31 554 553 555 + 304 31 557 556 558 + 305 31 560 559 561 + 306 31 563 562 564 + 307 31 566 565 567 + 308 31 569 568 570 + 309 31 572 571 573 + 310 31 575 574 576 + 311 31 578 577 579 + 312 31 581 580 582 + 313 31 584 583 585 + 314 31 587 586 588 + 315 31 590 589 591 + 316 31 593 592 594 + 317 31 596 595 597 + 318 31 599 598 600 + 319 31 602 601 603 + 320 31 605 604 606 + 321 31 608 607 609 + 322 31 611 610 612 + 323 31 614 613 615 + 324 31 617 616 618 + 325 31 620 619 621 + 326 31 623 622 624 + 327 31 626 625 627 + 328 31 629 628 630 + 329 31 632 631 633 + 330 31 635 634 636 + 331 31 638 637 639 + 332 31 641 640 642 + 333 31 644 643 645 + 334 31 647 646 648 + 335 31 650 649 651 + 336 31 653 652 654 + 337 31 656 655 657 + 338 31 659 658 660 + 339 31 662 661 663 + 340 31 665 664 666 + 341 31 668 667 669 + 342 31 671 670 672 + 343 31 674 673 675 + 344 31 677 676 678 + 345 31 680 679 681 + 346 31 683 682 684 + 347 31 686 685 687 + 348 31 689 688 690 + 349 31 692 691 693 + 350 31 695 694 696 + 351 31 698 697 699 + 352 31 701 700 702 + 353 31 704 703 705 + 354 31 707 706 708 + 355 31 710 709 711 + 356 31 713 712 714 + 357 31 716 715 717 + 358 31 719 718 720 + 359 31 722 721 723 + 360 31 725 724 726 + 361 31 728 727 729 + 362 31 731 730 732 + 363 31 734 733 735 + 364 31 737 736 738 + 365 31 740 739 741 + 366 31 743 742 744 + 367 31 746 745 747 + 368 31 749 748 750 + 369 31 752 751 753 + 370 31 755 754 756 + 371 31 758 757 759 + 372 31 761 760 762 + 373 31 764 763 765 + 374 31 767 766 768 + 375 31 770 769 771 + 376 31 773 772 774 + 377 31 776 775 777 + 378 31 779 778 780 + 379 31 782 781 783 + 380 31 785 784 786 + 381 31 788 787 789 + 382 31 791 790 792 + 383 31 794 793 795 + 384 31 797 796 798 + 385 31 800 799 801 + 386 31 803 802 804 + 387 31 806 805 807 + 388 31 809 808 810 + 389 31 812 811 813 + 390 31 815 814 816 + 391 31 818 817 819 + 392 31 821 820 822 + 393 31 824 823 825 + 394 31 827 826 828 + 395 31 830 829 831 + 396 31 833 832 834 + 397 31 836 835 837 + 398 31 839 838 840 + 399 31 842 841 843 + 400 31 845 844 846 + 401 31 848 847 849 + 402 31 851 850 852 + 403 31 854 853 855 + 404 31 857 856 858 + 405 31 860 859 861 + 406 31 863 862 864 + 407 31 866 865 867 + 408 31 869 868 870 + 409 31 872 871 873 + 410 31 875 874 876 + 411 31 878 877 879 + 412 31 881 880 882 + 413 31 884 883 885 + 414 31 887 886 888 + 415 31 890 889 891 + 416 31 893 892 894 + 417 31 896 895 897 + 418 31 899 898 900 + 419 31 902 901 903 + 420 31 905 904 906 + 421 31 908 907 909 + 422 31 911 910 912 + 423 31 914 913 915 + 424 31 917 916 918 + 425 31 920 919 921 + 426 31 923 922 924 + 427 31 926 925 927 + 428 31 929 928 930 + 429 31 932 931 933 + 430 31 935 934 936 + 431 31 938 937 939 + 432 31 941 940 942 + 433 31 944 943 945 + 434 31 947 946 948 + 435 31 950 949 951 + 436 31 953 952 954 + 437 31 956 955 957 + 438 31 959 958 960 + 439 31 962 961 963 + 440 31 965 964 966 + 441 31 968 967 969 + 442 31 971 970 972 + 443 31 974 973 975 + 444 31 977 976 978 + 445 31 980 979 981 + 446 31 983 982 984 + 447 31 986 985 987 + 448 31 989 988 990 + 449 31 992 991 993 + 450 31 995 994 996 + 451 31 998 997 999 + 452 31 1001 1000 1002 + 453 31 1004 1003 1005 + 454 31 1007 1006 1008 + 455 31 1010 1009 1011 + 456 31 1013 1012 1014 + 457 31 1016 1015 1017 + 458 31 1019 1018 1020 + 459 31 1022 1021 1023 + 460 31 1025 1024 1026 + 461 31 1028 1027 1029 + 462 31 1031 1030 1032 + 463 31 1034 1033 1035 + 464 31 1037 1036 1038 + 465 31 1040 1039 1041 + 466 31 1043 1042 1044 + 467 31 1046 1045 1047 + 468 31 1049 1048 1050 + 469 31 1052 1051 1053 + 470 31 1055 1054 1056 + 471 31 1058 1057 1059 + 472 31 1061 1060 1062 + 473 31 1064 1063 1065 + 474 31 1067 1066 1068 + 475 31 1070 1069 1071 + 476 31 1073 1072 1074 + 477 31 1076 1075 1077 + 478 31 1079 1078 1080 + 479 31 1082 1081 1083 + 480 31 1085 1084 1086 + 481 31 1088 1087 1089 + 482 31 1091 1090 1092 + 483 31 1094 1093 1095 + 484 31 1097 1096 1098 + 485 31 1100 1099 1101 + 486 31 1103 1102 1104 + 487 31 1106 1105 1107 + 488 31 1109 1108 1110 + 489 31 1112 1111 1113 + 490 31 1115 1114 1116 + 491 31 1118 1117 1119 + 492 31 1121 1120 1122 + 493 31 1124 1123 1125 + 494 31 1127 1126 1128 + 495 31 1130 1129 1131 + 496 31 1133 1132 1134 + 497 31 1136 1135 1137 + 498 31 1139 1138 1140 + 499 31 1142 1141 1143 + 500 31 1145 1144 1146 + 501 31 1148 1147 1149 + 502 31 1151 1150 1152 + 503 31 1154 1153 1155 + 504 31 1157 1156 1158 + 505 31 1160 1159 1161 + 506 31 1163 1162 1164 + 507 31 1166 1165 1167 + 508 31 1169 1168 1170 + 509 31 1172 1171 1173 + 510 31 1175 1174 1176 + 511 31 1178 1177 1179 + 512 31 1181 1180 1182 + 513 31 1184 1183 1185 + 514 31 1187 1186 1188 + 515 31 1190 1189 1191 + 516 31 1193 1192 1194 + 517 31 1196 1195 1197 + 518 31 1199 1198 1200 + 519 31 1202 1201 1203 + 520 31 1205 1204 1206 + 521 31 1208 1207 1209 + 522 31 1211 1210 1212 + 523 31 1214 1213 1215 + 524 31 1217 1216 1218 + 525 31 1220 1219 1221 + 526 31 1223 1222 1224 + 527 31 1226 1225 1227 + 528 31 1229 1228 1230 + 529 31 1232 1231 1233 + 530 31 1235 1234 1236 + 531 31 1238 1237 1239 + 532 31 1241 1240 1242 + 533 31 1244 1243 1245 + 534 31 1247 1246 1248 + 535 31 1250 1249 1251 + 536 31 1253 1252 1254 + 537 31 1256 1255 1257 + 538 31 1259 1258 1260 + 539 31 1262 1261 1263 + 540 31 1265 1264 1266 + 541 31 1268 1267 1269 + 542 31 1271 1270 1272 + 543 31 1274 1273 1275 + 544 31 1277 1276 1278 + 545 31 1280 1279 1281 + 546 31 1283 1282 1284 + 547 31 1286 1285 1287 + 548 31 1289 1288 1290 + 549 31 1292 1291 1293 + 550 31 1295 1294 1296 + 551 31 1298 1297 1299 + 552 31 1301 1300 1302 + 553 31 1304 1303 1305 + 554 31 1307 1306 1308 + 555 31 1310 1309 1311 + 556 31 1313 1312 1314 + 557 31 1316 1315 1317 + 558 31 1319 1318 1320 + 559 31 1322 1321 1323 + 560 31 1325 1324 1326 + 561 31 1328 1327 1329 + 562 31 1331 1330 1332 + 563 31 1334 1333 1335 + 564 31 1337 1336 1338 + 565 31 1340 1339 1341 + 566 31 1343 1342 1344 + 567 31 1346 1345 1347 + 568 31 1349 1348 1350 + 569 31 1352 1351 1353 + 570 31 1355 1354 1356 + 571 31 1358 1357 1359 + 572 31 1361 1360 1362 + 573 31 1364 1363 1365 + 574 31 1367 1366 1368 + 575 31 1370 1369 1371 + 576 31 1373 1372 1374 + 577 31 1376 1375 1377 + 578 31 1379 1378 1380 + 579 31 1382 1381 1383 + 580 31 1385 1384 1386 + 581 31 1388 1387 1389 + 582 31 1391 1390 1392 + 583 31 1394 1393 1395 + 584 31 1397 1396 1398 + 585 31 1400 1399 1401 + 586 31 1403 1402 1404 + 587 31 1406 1405 1407 + 588 31 1409 1408 1410 + 589 31 1412 1411 1413 + 590 31 1415 1414 1416 + 591 31 1418 1417 1419 + 592 31 1421 1420 1422 + 593 31 1424 1423 1425 + 594 31 1427 1426 1428 + 595 31 1430 1429 1431 + 596 31 1433 1432 1434 + 597 31 1436 1435 1437 + 598 31 1439 1438 1440 + 599 31 1442 1441 1443 + 600 31 1445 1444 1446 + 601 31 1448 1447 1449 + 602 31 1451 1450 1452 + 603 31 1454 1453 1455 + 604 31 1457 1456 1458 + 605 31 1460 1459 1461 + 606 31 1463 1462 1464 + 607 31 1466 1465 1467 + 608 31 1469 1468 1470 + 609 31 1472 1471 1473 + 610 31 1475 1474 1476 + 611 31 1478 1477 1479 + 612 31 1481 1480 1482 + 613 31 1484 1483 1485 + 614 31 1487 1486 1488 + 615 31 1490 1489 1491 + 616 31 1493 1492 1494 + 617 31 1496 1495 1497 + 618 31 1499 1498 1500 + 619 31 1502 1501 1503 + 620 31 1505 1504 1506 + 621 31 1508 1507 1509 + 622 31 1511 1510 1512 + 623 31 1514 1513 1515 + 624 31 1517 1516 1518 + 625 31 1520 1519 1521 + 626 31 1523 1522 1524 + 627 31 1526 1525 1527 + 628 31 1529 1528 1530 + 629 31 1532 1531 1533 + 630 31 1535 1534 1536 + 631 31 1538 1537 1539 + 632 31 1541 1540 1542 + 633 31 1544 1543 1545 + 634 31 1547 1546 1548 + 635 31 1550 1549 1551 + 636 31 1553 1552 1554 + 637 31 1556 1555 1557 + 638 31 1559 1558 1560 + 639 31 1562 1561 1563 + 640 31 1565 1564 1566 + 641 31 1568 1567 1569 + 642 31 1571 1570 1572 + 643 31 1574 1573 1575 + 644 31 1577 1576 1578 + 645 31 1580 1579 1581 + 646 31 1583 1582 1584 + 647 31 1586 1585 1587 + 648 31 1589 1588 1590 + 649 31 1592 1591 1593 + 650 31 1595 1594 1596 + 651 31 1598 1597 1599 + 652 31 1601 1600 1602 + 653 31 1604 1603 1605 + 654 31 1607 1606 1608 + 655 31 1610 1609 1611 + 656 31 1613 1612 1614 + 657 31 1616 1615 1617 + 658 31 1619 1618 1620 + 659 31 1622 1621 1623 + 660 31 1625 1624 1626 + 661 31 1628 1627 1629 + 662 31 1631 1630 1632 + 663 31 1634 1633 1635 + 664 31 1637 1636 1638 + 665 31 1640 1639 1641 + 666 31 1643 1642 1644 + 667 31 1646 1645 1647 + 668 31 1649 1648 1650 + 669 31 1652 1651 1653 + 670 31 1655 1654 1656 + 671 31 1658 1657 1659 + 672 31 1661 1660 1662 + 673 31 1664 1663 1665 + 674 31 1667 1666 1668 + 675 31 1670 1669 1671 + 676 31 1673 1672 1674 + 677 31 1676 1675 1677 + 678 31 1679 1678 1680 + 679 31 1682 1681 1683 + 680 31 1685 1684 1686 + 681 31 1688 1687 1689 + 682 31 1691 1690 1692 + 683 31 1694 1693 1695 + 684 31 1697 1696 1698 + 685 31 1700 1699 1701 + 686 31 1703 1702 1704 + 687 31 1706 1705 1707 + 688 31 1709 1708 1710 + 689 31 1712 1711 1713 + 690 31 1715 1714 1716 + 691 31 1718 1717 1719 + 692 31 1721 1720 1722 + 693 31 1724 1723 1725 + 694 31 1727 1726 1728 + 695 31 1730 1729 1731 + 696 31 1733 1732 1734 + 697 31 1736 1735 1737 + 698 31 1739 1738 1740 + 699 31 1742 1741 1743 + 700 31 1745 1744 1746 + 701 31 1748 1747 1749 + 702 31 1751 1750 1752 + 703 31 1754 1753 1755 + 704 31 1757 1756 1758 + 705 31 1760 1759 1761 + 706 31 1763 1762 1764 + 707 31 1766 1765 1767 + 708 31 1769 1768 1770 + 709 31 1772 1771 1773 + 710 31 1775 1774 1776 + 711 31 1778 1777 1779 + 712 31 1781 1780 1782 + 713 31 1784 1783 1785 + 714 31 1787 1786 1788 + 715 31 1790 1789 1791 + 716 31 1793 1792 1794 + 717 31 1796 1795 1797 + 718 31 1799 1798 1800 + 719 31 1802 1801 1803 + 720 31 1805 1804 1806 + 721 31 1808 1807 1809 + 722 31 1811 1810 1812 + 723 31 1814 1813 1815 + 724 31 1817 1816 1818 + 725 31 1820 1819 1821 + 726 31 1823 1822 1824 + 727 31 1826 1825 1827 + 728 31 1829 1828 1830 + 729 31 1832 1831 1833 + 730 31 1835 1834 1836 + 731 31 1838 1837 1839 + 732 31 1841 1840 1842 + 733 31 1844 1843 1845 + 734 31 1847 1846 1848 + 735 31 1850 1849 1851 + 736 31 1853 1852 1854 + 737 31 1856 1855 1857 + 738 31 1859 1858 1860 + 739 31 1862 1861 1863 + 740 31 1865 1864 1866 + 741 31 1868 1867 1869 + 742 31 1871 1870 1872 + 743 31 1874 1873 1875 + 744 31 1877 1876 1878 + 745 31 1880 1879 1881 + 746 31 1883 1882 1884 + 747 31 1886 1885 1887 + 748 31 1889 1888 1890 + 749 31 1892 1891 1893 + 750 31 1895 1894 1896 + 751 31 1898 1897 1899 + 752 31 1901 1900 1902 + 753 31 1904 1903 1905 + 754 31 1907 1906 1908 + 755 31 1910 1909 1911 + 756 31 1913 1912 1914 + 757 31 1916 1915 1917 + 758 31 1919 1918 1920 + 759 31 1922 1921 1923 + 760 31 1925 1924 1926 + 761 31 1928 1927 1929 + 762 31 1931 1930 1932 + 763 31 1934 1933 1935 + 764 31 1937 1936 1938 + 765 31 1940 1939 1941 + 766 31 1943 1942 1944 + 767 31 1946 1945 1947 + 768 31 1949 1948 1950 + 769 31 1952 1951 1953 + 770 31 1955 1954 1956 + 771 31 1958 1957 1959 + 772 31 1961 1960 1962 + 773 31 1964 1963 1965 + 774 31 1967 1966 1968 + 775 31 1970 1969 1971 + 776 31 1973 1972 1974 + 777 31 1976 1975 1977 + 778 31 1979 1978 1980 + 779 31 1982 1981 1983 + 780 31 1985 1984 1986 + 781 31 1988 1987 1989 + 782 31 1991 1990 1992 + 783 31 1994 1993 1995 + 784 31 1997 1996 1998 + 785 31 2000 1999 2001 + 786 31 2003 2002 2004 + +Dihedrals + + 1 6 3 1 7 8 + 2 6 2 1 7 19 + 3 4 2 1 7 8 + 4 5 2 1 7 8 + 5 6 3 1 7 19 + 6 3 3 1 2 4 + 7 3 3 1 2 6 + 8 3 3 1 2 5 + 9 3 5 2 1 7 + 10 3 4 2 1 7 + 11 3 6 2 1 7 + 12 3 19 7 8 20 + 13 1 1 7 8 9 + 14 3 1 7 8 20 + 15 2 1 7 8 11 + 16 8 9 8 11 22 + 17 3 7 8 9 10 + 18 7 7 8 9 28 + 19 8 7 8 11 21 + 20 8 7 8 11 12 + 21 3 9 8 7 19 + 22 3 11 8 9 28 + 23 8 7 8 11 22 + 24 3 11 8 7 19 + 25 10 9 8 11 12 + 26 3 20 8 9 28 + 27 8 9 8 11 21 + 28 8 20 8 11 22 + 29 8 20 8 11 21 + 30 4 8 9 28 29 + 31 5 8 9 28 29 + 32 6 10 9 28 29 + 33 11 10 9 8 11 + 34 6 10 9 28 32 + 35 3 10 9 8 20 + 36 6 8 9 28 32 + 37 9 8 11 12 13 + 38 8 12 11 8 20 + 39 9 8 11 12 14 + 40 14 14 12 13 15 + 41 13 13 12 14 24 + 42 3 13 12 11 22 + 43 14 13 12 14 16 + 44 3 14 12 11 22 + 45 3 13 12 11 21 + 46 13 11 12 14 24 + 47 12 11 12 14 16 + 48 3 14 12 11 21 + 49 13 11 12 13 23 + 50 13 14 12 13 23 + 51 12 11 12 13 15 + 52 16 23 13 15 25 + 53 13 12 13 15 25 + 54 14 12 13 15 17 + 55 14 12 14 16 17 + 56 13 12 14 16 26 + 57 16 24 14 16 26 + 58 12 13 15 17 18 + 59 13 17 15 13 23 + 60 14 13 15 17 16 + 61 12 14 16 17 18 + 62 13 17 16 14 24 + 63 14 14 16 17 15 + 64 15 16 17 18 27 + 65 13 15 17 16 26 + 66 13 18 17 15 25 + 67 15 15 17 18 27 + 68 13 16 17 15 25 + 69 13 18 17 16 26 + 70 1 9 28 29 30 + 71 3 32 28 29 33 + 72 3 9 28 29 33 + 73 3 9 28 29 34 + 74 3 32 28 29 34 + 75 3 33 29 30 35 + 76 3 30 29 28 32 + 77 3 34 29 30 35 + 78 7 28 29 30 35 + 79 3 28 29 30 31 + 80 6 29 30 35 39 + 81 4 29 30 35 36 + 82 5 29 30 35 36 + 83 3 31 30 29 34 + 84 3 31 30 29 33 + 85 6 31 30 35 39 + 86 6 31 30 35 36 + 87 1 30 35 36 37 + 88 3 39 35 36 41 + 89 3 30 35 36 40 + 90 3 30 35 36 41 + 91 3 39 35 36 40 + 92 3 40 36 37 42 + 93 3 41 36 37 42 + 94 7 35 36 37 42 + 95 3 35 36 37 38 + 96 3 37 36 35 39 + 97 6 38 37 42 53 + 98 3 38 37 36 40 + 99 6 38 37 42 43 + 100 4 36 37 42 43 + 101 6 36 37 42 53 + 102 5 36 37 42 43 + 103 3 38 37 36 41 + 104 3 37 42 43 54 + 105 1 37 42 43 44 + 106 3 53 42 43 54 + 107 2 37 42 43 46 + 108 10 44 43 46 47 + 109 3 44 43 42 53 + 110 8 42 43 46 56 + 111 8 42 43 46 55 + 112 8 42 43 46 47 + 113 3 46 43 42 53 + 114 8 44 43 46 55 + 115 8 54 43 46 56 + 116 7 42 43 44 62 + 117 3 42 43 44 45 + 118 3 46 43 44 62 + 119 3 54 43 44 62 + 120 8 54 43 46 55 + 121 8 44 43 46 56 + 122 5 43 44 62 63 + 123 6 45 44 62 70 + 124 6 43 44 62 70 + 125 4 43 44 62 63 + 126 11 45 44 43 46 + 127 3 45 44 43 54 + 128 6 45 44 62 63 + 129 9 43 46 47 48 + 130 8 47 46 43 54 + 131 9 43 46 47 49 + 132 3 49 47 46 55 + 133 13 46 47 48 57 + 134 14 49 47 48 50 + 135 3 49 47 46 56 + 136 12 46 47 48 50 + 137 12 46 47 49 51 + 138 14 48 47 49 51 + 139 13 46 47 49 58 + 140 3 48 47 46 55 + 141 3 48 47 46 56 + 142 13 48 47 49 58 + 143 13 49 47 48 57 + 144 14 47 48 50 52 + 145 16 57 48 50 59 + 146 13 47 48 50 59 + 147 16 58 49 51 60 + 148 13 47 49 51 60 + 149 14 47 49 51 52 + 150 13 48 50 52 61 + 151 14 48 50 52 51 + 152 16 59 50 52 61 + 153 13 52 50 48 57 + 154 14 49 51 52 50 + 155 13 49 51 52 61 + 156 13 52 51 49 58 + 157 16 60 51 52 61 + 158 13 51 52 50 59 + 159 13 50 52 51 60 + 160 3 70 62 63 71 + 161 2 44 62 63 66 + 162 1 44 62 63 64 + 163 3 44 62 63 71 + 164 8 62 63 66 72 + 165 8 62 63 66 67 + 166 3 71 63 64 79 + 167 3 62 63 64 65 + 168 3 64 63 62 70 + 169 8 62 63 66 73 + 170 7 62 63 64 79 + 171 8 64 63 66 67 + 172 3 66 63 64 79 + 173 8 64 63 66 72 + 174 3 66 63 62 70 + 175 8 71 63 66 73 + 176 8 64 63 66 73 + 177 8 71 63 66 72 + 178 6 63 64 79 81 + 179 6 65 64 79 80 + 180 3 65 64 63 71 + 181 4 63 64 79 80 + 182 6 65 64 79 81 + 183 5 63 64 79 80 + 184 11 65 64 63 66 + 185 8 67 66 63 71 + 186 17 63 66 67 74 + 187 17 72 66 67 75 + 188 17 63 66 67 75 + 189 17 63 66 67 68 + 190 17 73 66 67 74 + 191 17 73 66 67 75 + 192 17 72 66 67 74 + 193 19 66 67 68 69 + 194 21 68 67 66 72 + 195 18 66 67 68 69 + 196 21 68 67 66 73 + 197 20 69 68 67 74 + 198 20 69 68 67 75 + 199 20 67 68 69 77 + 200 20 67 68 69 76 + 201 20 67 68 69 78 + 202 3 81 79 80 83 + 203 3 81 79 80 84 + 204 3 64 79 80 84 + 205 3 81 79 80 82 + 206 3 64 79 80 83 + 207 3 64 79 80 82 + +Impropers + + 1 2 7 1 8 19 + 2 1 1 2 7 3 + 3 1 9 8 28 10 + 4 2 28 9 29 32 + 5 1 30 29 35 31 + 6 2 35 30 36 39 + 7 1 37 36 42 38 + 8 2 42 37 43 53 + 9 1 44 43 62 45 + 10 2 62 44 63 70 + 11 1 64 63 79 65 + 12 2 79 64 80 81 diff --git a/examples/USER/plumed/in.peptide-plumed b/examples/USER/plumed/in.peptide-plumed new file mode 100644 index 0000000000..40657d987e --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed @@ -0,0 +1,40 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 + +fix 2 all plumed plumedfile plumed.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 + + +run 100 diff --git a/examples/USER/plumed/plumed.dat b/examples/USER/plumed/plumed.dat new file mode 100644 index 0000000000..cab1b923f4 --- /dev/null +++ b/examples/USER/plumed/plumed.dat @@ -0,0 +1,6 @@ +c1: COM ATOMS=2,4,5,6 +c2: COM ATOMS=80,82,83,84 +d1: DISTANCE ATOMS=c1,37 +d2: DISTANCE ATOMS=c2,37 +h_pot: RESTRAINT ARG=d1,d2 CENTER=1.0,1.0 KAPPA=10,10 +PRINT ARG=d1,d2,h_pot.* From 2c5f2a668398f4d74bf192010df1094a60d8c974 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 2 Jul 2018 10:22:23 +0100 Subject: [PATCH 04/72] Added running example of PLUMED + LAMMPS Not sure if this has been done correctly. I add both the input and the output --- examples/USER/plumed/colvar | 102 ++++++++++++++++++++++++++++++++ examples/USER/plumed/p.log | 64 ++++++++++++++++++++ examples/USER/plumed/plumed.dat | 4 +- src/USER-PLUMED/fix_plumed.cpp | 18 +++--- src/USER-PLUMED/fix_plumed.h | 2 +- 5 files changed, 178 insertions(+), 12 deletions(-) create mode 100644 examples/USER/plumed/colvar create mode 100644 examples/USER/plumed/p.log diff --git a/examples/USER/plumed/colvar b/examples/USER/plumed/colvar new file mode 100644 index 0000000000..b909300108 --- /dev/null +++ b/examples/USER/plumed/colvar @@ -0,0 +1,102 @@ +#! FIELDS time d1 d2 h_pot.bias h_pot.force2 + 0.000000 0.993491 0.758366 0.292146 5.842921 + 0.002000 0.995476 0.759311 0.289757 5.795146 + 0.004000 0.997617 0.760436 0.286982 5.739638 + 0.006000 0.999849 0.761714 0.283902 5.678045 + 0.008000 1.002126 0.763111 0.280604 5.612077 + 0.010000 1.004429 0.764614 0.277132 5.542631 + 0.012000 1.006758 0.766228 0.273476 5.469523 + 0.014000 1.009119 0.767975 0.269594 5.391885 + 0.016000 1.011514 0.769873 0.265455 5.309099 + 0.018000 1.013929 0.771911 0.261093 5.221860 + 0.020000 1.016331 0.774032 0.256641 5.132826 + 0.022000 1.018671 0.776135 0.252321 5.046430 + 0.024000 1.020900 0.778094 0.248395 4.967894 + 0.026000 1.022979 0.779791 0.245099 4.901982 + 0.028000 1.024903 0.781143 0.242592 4.851832 + 0.030000 1.026700 0.782129 0.240904 4.818078 + 0.032000 1.028430 0.782795 0.239931 4.798623 + 0.034000 1.030167 0.783248 0.239458 4.789166 + 0.036000 1.031975 0.783621 0.239212 4.784241 + 0.038000 1.033897 0.784047 0.238923 4.778459 + 0.040000 1.035930 0.784627 0.238382 4.767647 + 0.042000 1.038033 0.785407 0.237484 4.749678 + 0.044000 1.040121 0.786369 0.236240 4.724809 + 0.046000 1.042091 0.787439 0.234768 4.695368 + 0.048000 1.043837 0.788511 0.233246 4.664919 + 0.050000 1.045280 0.789471 0.231863 4.637266 + 0.052000 1.046388 0.790226 0.230785 4.615694 + 0.054000 1.047178 0.790712 0.230136 4.602723 + 0.056000 1.047712 0.790891 0.230015 4.600302 + 0.058000 1.048083 0.790742 0.230505 4.610102 + 0.060000 1.048397 0.790252 0.231683 4.633662 + 0.062000 1.048754 0.789414 0.233618 4.672352 + 0.064000 1.049236 0.788230 0.236354 4.727083 + 0.066000 1.049892 0.786723 0.239883 4.797654 + 0.068000 1.050741 0.784954 0.244096 4.881918 + 0.070000 1.051768 0.783036 0.248766 4.975312 + 0.072000 1.052946 0.781120 0.253559 5.071179 + 0.074000 1.054246 0.779374 0.258094 5.161873 + 0.076000 1.055648 0.777949 0.262017 5.240331 + 0.078000 1.057143 0.776950 0.265083 5.301665 + 0.080000 1.058728 0.776406 0.267217 5.344336 + 0.082000 1.060397 0.776265 0.268526 5.370525 + 0.084000 1.062135 0.776403 0.269282 5.385630 + 0.086000 1.063918 0.776650 0.269855 5.397095 + 0.088000 1.065713 0.776818 0.270642 5.412845 + 0.090000 1.067486 0.776746 0.271982 5.439646 + 0.092000 1.069203 0.776331 0.274084 5.481685 + 0.094000 1.070839 0.775547 0.276987 5.539735 + 0.096000 1.072370 0.774448 0.280554 5.611090 + 0.098000 1.073779 0.773153 0.284514 5.690279 + 0.100000 1.075049 0.771810 0.288515 5.770295 + 0.102000 1.076167 0.770572 0.292193 5.843867 + 0.104000 1.077116 0.769571 0.295223 5.904455 + 0.106000 1.077882 0.768908 0.297345 5.946904 + 0.108000 1.078459 0.768648 0.298397 5.967949 + 0.110000 1.078853 0.768806 0.298342 5.966843 + 0.112000 1.079090 0.769340 0.297296 5.945926 + 0.114000 1.079219 0.770158 0.295516 5.910315 + 0.116000 1.079303 0.771141 0.293328 5.866561 + 0.118000 1.079415 0.772170 0.291067 5.821338 + 0.120000 1.079622 0.773135 0.289037 5.780735 + 0.122000 1.079971 0.773942 0.287489 5.749783 + 0.124000 1.080476 0.774515 0.286599 5.731971 + 0.126000 1.081103 0.774812 0.286437 5.728730 + 0.128000 1.081783 0.774828 0.286955 5.739101 + 0.130000 1.082421 0.774602 0.287987 5.759744 + 0.132000 1.082925 0.774217 0.289271 5.785430 + 0.134000 1.083230 0.773787 0.290498 5.809961 + 0.136000 1.083320 0.773437 0.291366 5.827324 + 0.138000 1.083229 0.773283 0.291638 5.832753 + 0.140000 1.083032 0.773417 0.291171 5.823427 + 0.142000 1.082825 0.773886 0.289936 5.798729 + 0.144000 1.082697 0.774694 0.288007 5.760150 + 0.146000 1.082716 0.775795 0.285550 5.710997 + 0.148000 1.082911 0.777098 0.282797 5.655945 + 0.150000 1.083267 0.778482 0.280018 5.600355 + 0.152000 1.083739 0.779816 0.277467 5.549332 + 0.154000 1.084258 0.780984 0.275337 5.506735 + 0.156000 1.084764 0.781917 0.273726 5.474524 + 0.158000 1.085215 0.782595 0.272633 5.452651 + 0.160000 1.085600 0.783050 0.271973 5.439463 + 0.162000 1.085939 0.783349 0.271614 5.432288 + 0.164000 1.086269 0.783582 0.271395 5.427907 + 0.166000 1.086632 0.783845 0.271141 5.422814 + 0.168000 1.087062 0.784236 0.270670 5.413403 + 0.170000 1.087575 0.784841 0.269815 5.396302 + 0.172000 1.088169 0.785721 0.268447 5.368936 + 0.174000 1.088827 0.786902 0.266506 5.330122 + 0.176000 1.089527 0.788366 0.264020 5.280397 + 0.178000 1.090249 0.790062 0.261095 5.221908 + 0.180000 1.090983 0.791909 0.257899 5.157988 + 0.182000 1.091725 0.793812 0.254634 5.092674 + 0.184000 1.092478 0.795671 0.251513 5.030265 + 0.186000 1.093252 0.797384 0.248746 4.974922 + 0.188000 1.094056 0.798864 0.246512 4.930235 + 0.190000 1.094906 0.800048 0.244938 4.898769 + 0.192000 1.095809 0.800909 0.244083 4.881658 + 0.194000 1.096763 0.801455 0.243917 4.878336 + 0.196000 1.097747 0.801731 0.244326 4.886516 + 0.198000 1.098716 0.801809 0.245123 4.902456 + 0.200000 1.099614 0.801777 0.246077 4.921541 diff --git a/examples/USER/plumed/p.log b/examples/USER/plumed/p.log new file mode 100644 index 0000000000..c2f2163c83 --- /dev/null +++ b/examples/USER/plumed/p.log @@ -0,0 +1,64 @@ +PLUMED: PLUMED is starting +PLUMED: Version: 2.5.0-dev (git: a10584333) compiled on Jul 2 2018 at 09:29:02 +PLUMED: Please cite this paper when using PLUMED [1] +PLUMED: For further information see the PLUMED web page at http://www.plumed.org +PLUMED: Root: /data/gt/mycodes/plumed2/ +PLUMED: For installed feature, see /data/gt/mycodes/plumed2//src/config/config.txt +PLUMED: Molecular dynamics engine: LAMMPS +PLUMED: Precision of reals: 8 +PLUMED: Running over 1 node +PLUMED: Number of threads: 1 +PLUMED: Cache line size: 512 +PLUMED: Number of atoms: 2004 +PLUMED: File suffix: +PLUMED: FILE: plumed.dat +PLUMED: Action COM +PLUMED: with label c1 +PLUMED: serial associated to this virtual atom is 2005 +PLUMED: of atoms +PLUMED: 2 4 5 6 +PLUMED: broken molecules will be rebuilt assuming atoms are in the proper order +PLUMED: Action COM +PLUMED: with label c2 +PLUMED: serial associated to this virtual atom is 2006 +PLUMED: of atoms +PLUMED: 80 82 83 84 +PLUMED: broken molecules will be rebuilt assuming atoms are in the proper order +PLUMED: Action DISTANCE +PLUMED: with label d1 +PLUMED: between atoms 2005 37 +PLUMED: using periodic boundary conditions +PLUMED: Action DISTANCE +PLUMED: with label d2 +PLUMED: between atoms 2006 37 +PLUMED: using periodic boundary conditions +PLUMED: Action RESTRAINT +PLUMED: with label h_pot +PLUMED: with arguments d1 d2 +PLUMED: added component to this action: h_pot.bias +PLUMED: at 1.000000 1.000000 +PLUMED: with harmonic force constant 10.000000 10.000000 +PLUMED: and linear force constant 0.000000 0.000000 +PLUMED: added component to this action: h_pot.force2 +PLUMED: Action PRINT +PLUMED: with label @5 +PLUMED: with stride 1 +PLUMED: with arguments d1 d2 h_pot.bias h_pot.force2 +PLUMED: on file colvar +PLUMED: with format %f +PLUMED: END FILE: plumed.dat +PLUMED: Timestep: 0.002000 +PLUMED: KbT has not been set by the MD engine +PLUMED: It should be set by hand where needed +PLUMED: Relevant bibliography: +PLUMED: [1] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) +PLUMED: Please read and cite where appropriate! +PLUMED: Finished setup +PLUMED: Cycles Total Average Minumum Maximum +PLUMED: 1 0.015035 0.015035 0.015035 0.015035 +PLUMED: 1 Prepare dependencies 101 0.000123 0.000001 0.000001 0.000004 +PLUMED: 2 Sharing data 101 0.006837 0.000068 0.000047 0.000891 +PLUMED: 3 Waiting for data 101 0.000967 0.000010 0.000007 0.000041 +PLUMED: 4 Calculating (forward loop) 101 0.001616 0.000016 0.000011 0.000043 +PLUMED: 5 Applying (backward loop) 101 0.002159 0.000021 0.000018 0.000057 +PLUMED: 6 Update 101 0.001059 0.000010 0.000006 0.000086 diff --git a/examples/USER/plumed/plumed.dat b/examples/USER/plumed/plumed.dat index cab1b923f4..d316d4b035 100644 --- a/examples/USER/plumed/plumed.dat +++ b/examples/USER/plumed/plumed.dat @@ -2,5 +2,5 @@ c1: COM ATOMS=2,4,5,6 c2: COM ATOMS=80,82,83,84 d1: DISTANCE ATOMS=c1,37 d2: DISTANCE ATOMS=c2,37 -h_pot: RESTRAINT ARG=d1,d2 CENTER=1.0,1.0 KAPPA=10,10 -PRINT ARG=d1,d2,h_pot.* +h_pot: RESTRAINT ARG=d1,d2 AT=1.0,1.0 KAPPA=10,10 +PRINT ARG=d1,d2,h_pot.* FILE=colvar diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 91afd367b1..15753596a5 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -223,8 +223,8 @@ void FixPlumed::post_force(int vflag) // set up local virial/box. plumed uses full 3x3 matrices - double virial[3][3]; - for(int i=0;i<3;i++) for(int j=0;j<3;j++) virial[i][j]=0.0; + double plmd_virial[3][3]; + for(int i=0;i<3;i++) for(int j=0;j<3;j++) plmd_virial[i][j]=0.0; double box[3][3]; for(int i=0;i<3;i++) for(int j=0;j<3;j++) box[i][j]=0.0; box[0][0]=domain->h[0]; @@ -244,7 +244,7 @@ void FixPlumed::post_force(int vflag) p->cmd("setForces",&atom->f[0][0]); p->cmd("setMasses",&masses[0]); if(atom->q) p->cmd("setCharges",&charges[0]); - p->cmd("setVirial",&virial[0][0]); + p->cmd("setVirial",&plmd_virial[0][0]); p->cmd("getBias",&bias); // pass the energy @@ -265,12 +265,12 @@ void FixPlumed::post_force(int vflag) p->cmd("calc"); // retransform virial to lammps representation: - Fix::virial[0]=-virial[0][0]; - Fix::virial[1]=-virial[1][1]; - Fix::virial[2]=-virial[2][2]; - Fix::virial[3]=-virial[0][1]; - Fix::virial[4]=-virial[0][2]; - Fix::virial[5]=-virial[1][2]; + Fix::virial[0]=-plmd_virial[0][0]; + Fix::virial[1]=-plmd_virial[1][1]; + Fix::virial[2]=-plmd_virial[2][2]; + Fix::virial[3]=-plmd_virial[0][1]; + Fix::virial[4]=-plmd_virial[0][2]; + Fix::virial[5]=-plmd_virial[1][2]; } void FixPlumed::post_force_respa(int vflag, int ilevel, int iloop) diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index 055dc6f1d4..6bd6d59f39 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -11,7 +11,7 @@ FixStyle(plumed,FixPlumed) #include "fix.h" #include "compute.h" // the plumed header that defines the class// -#include "../Plumed.h" +#include "Plumed.h" namespace LAMMPS_NS { From b299bfa821efe38fc761a15f3eded8820ad22d30 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 2 Jul 2018 13:58:38 +0100 Subject: [PATCH 05/72] Started adding tests on PLUMED interface --- examples/USER/plumed/check-plumed.sh | 32 ++++++++ examples/USER/plumed/colvar | 102 ------------------------- examples/USER/plumed/in.peptide-plumed | 7 +- examples/USER/plumed/p.log | 64 ---------------- examples/USER/plumed/plumed.dat | 8 +- src/USER-PLUMED/fix_plumed.cpp | 3 + 6 files changed, 44 insertions(+), 172 deletions(-) create mode 100755 examples/USER/plumed/check-plumed.sh delete mode 100644 examples/USER/plumed/colvar delete mode 100644 examples/USER/plumed/p.log diff --git a/examples/USER/plumed/check-plumed.sh b/examples/USER/plumed/check-plumed.sh new file mode 100755 index 0000000000..584b4d3297 --- /dev/null +++ b/examples/USER/plumed/check-plumed.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Check PLUMED positions +nlines=`paste plumed.xyz lammps.xyz | awk '{if( $2<$6-0.0001 || $2>$6+0.0001 || $3<$7-0.0001 || $3>$7+0.0001 || $4<$8-0.0002 || $4>$8+0.0002 ) if( $5!="Timestep:" && $1!=2004 ) print $0}' | wc -l` +if [ "$nlines" -gt 0 ] ; then + echo ERROR passing positions from LAMMPS to PLUMED + paste plumed.xyz lammps.xyz | awk '{if( $2<$6-0.0001 || $2>$6+0.0001 || $3<$7-0.0001 || $3>$7+0.0001 || $4<$8-0.0002 || $4>$8+0.0002 ) if( $5!="Timestep:" && $1!=2004 ) print $0, $2-$6, $3-$7, $4-$8}' +fi + +# CHECK PLUMED timestep +tstep=`grep timestep in.peptide-plumed | awk '{print $2}'` +tstep=`echo $tstep \* 0.001 \* 10 | bc -l` +nlines=`wc -l plmd_energy | awk '{print $1}'` + +for ((i=3;i<$nlines;i++)); do + told=`head -n $(($i-1)) plmd_energy | tail -n 1 | awk '{print $1}'` + tnew=`head -n $i plmd_energy | tail -n 1 | awk '{print $1}'` + tdiff=`echo \( $tnew - $told - $tstep \) \> 0 | bc -l` + if [ $tdiff -gt 0 ] ; then + echo ERROR passing timestep from LAMMPS to PLUMED + fi +done + +# Check PLUMED energy +tail -n +2 plmd_energy > plmd_energy2 +nlines=`paste lammps_energy plmd_energy2 | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' | wc -l` +if [ "$nlines" -gt 0 ] ; then + echo ERROR passing potential energy from LAMMPS to PLUMED + paste lammps_energy plmd_energy2 | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' +fi +rm -f plmd_energy2 + diff --git a/examples/USER/plumed/colvar b/examples/USER/plumed/colvar deleted file mode 100644 index b909300108..0000000000 --- a/examples/USER/plumed/colvar +++ /dev/null @@ -1,102 +0,0 @@ -#! FIELDS time d1 d2 h_pot.bias h_pot.force2 - 0.000000 0.993491 0.758366 0.292146 5.842921 - 0.002000 0.995476 0.759311 0.289757 5.795146 - 0.004000 0.997617 0.760436 0.286982 5.739638 - 0.006000 0.999849 0.761714 0.283902 5.678045 - 0.008000 1.002126 0.763111 0.280604 5.612077 - 0.010000 1.004429 0.764614 0.277132 5.542631 - 0.012000 1.006758 0.766228 0.273476 5.469523 - 0.014000 1.009119 0.767975 0.269594 5.391885 - 0.016000 1.011514 0.769873 0.265455 5.309099 - 0.018000 1.013929 0.771911 0.261093 5.221860 - 0.020000 1.016331 0.774032 0.256641 5.132826 - 0.022000 1.018671 0.776135 0.252321 5.046430 - 0.024000 1.020900 0.778094 0.248395 4.967894 - 0.026000 1.022979 0.779791 0.245099 4.901982 - 0.028000 1.024903 0.781143 0.242592 4.851832 - 0.030000 1.026700 0.782129 0.240904 4.818078 - 0.032000 1.028430 0.782795 0.239931 4.798623 - 0.034000 1.030167 0.783248 0.239458 4.789166 - 0.036000 1.031975 0.783621 0.239212 4.784241 - 0.038000 1.033897 0.784047 0.238923 4.778459 - 0.040000 1.035930 0.784627 0.238382 4.767647 - 0.042000 1.038033 0.785407 0.237484 4.749678 - 0.044000 1.040121 0.786369 0.236240 4.724809 - 0.046000 1.042091 0.787439 0.234768 4.695368 - 0.048000 1.043837 0.788511 0.233246 4.664919 - 0.050000 1.045280 0.789471 0.231863 4.637266 - 0.052000 1.046388 0.790226 0.230785 4.615694 - 0.054000 1.047178 0.790712 0.230136 4.602723 - 0.056000 1.047712 0.790891 0.230015 4.600302 - 0.058000 1.048083 0.790742 0.230505 4.610102 - 0.060000 1.048397 0.790252 0.231683 4.633662 - 0.062000 1.048754 0.789414 0.233618 4.672352 - 0.064000 1.049236 0.788230 0.236354 4.727083 - 0.066000 1.049892 0.786723 0.239883 4.797654 - 0.068000 1.050741 0.784954 0.244096 4.881918 - 0.070000 1.051768 0.783036 0.248766 4.975312 - 0.072000 1.052946 0.781120 0.253559 5.071179 - 0.074000 1.054246 0.779374 0.258094 5.161873 - 0.076000 1.055648 0.777949 0.262017 5.240331 - 0.078000 1.057143 0.776950 0.265083 5.301665 - 0.080000 1.058728 0.776406 0.267217 5.344336 - 0.082000 1.060397 0.776265 0.268526 5.370525 - 0.084000 1.062135 0.776403 0.269282 5.385630 - 0.086000 1.063918 0.776650 0.269855 5.397095 - 0.088000 1.065713 0.776818 0.270642 5.412845 - 0.090000 1.067486 0.776746 0.271982 5.439646 - 0.092000 1.069203 0.776331 0.274084 5.481685 - 0.094000 1.070839 0.775547 0.276987 5.539735 - 0.096000 1.072370 0.774448 0.280554 5.611090 - 0.098000 1.073779 0.773153 0.284514 5.690279 - 0.100000 1.075049 0.771810 0.288515 5.770295 - 0.102000 1.076167 0.770572 0.292193 5.843867 - 0.104000 1.077116 0.769571 0.295223 5.904455 - 0.106000 1.077882 0.768908 0.297345 5.946904 - 0.108000 1.078459 0.768648 0.298397 5.967949 - 0.110000 1.078853 0.768806 0.298342 5.966843 - 0.112000 1.079090 0.769340 0.297296 5.945926 - 0.114000 1.079219 0.770158 0.295516 5.910315 - 0.116000 1.079303 0.771141 0.293328 5.866561 - 0.118000 1.079415 0.772170 0.291067 5.821338 - 0.120000 1.079622 0.773135 0.289037 5.780735 - 0.122000 1.079971 0.773942 0.287489 5.749783 - 0.124000 1.080476 0.774515 0.286599 5.731971 - 0.126000 1.081103 0.774812 0.286437 5.728730 - 0.128000 1.081783 0.774828 0.286955 5.739101 - 0.130000 1.082421 0.774602 0.287987 5.759744 - 0.132000 1.082925 0.774217 0.289271 5.785430 - 0.134000 1.083230 0.773787 0.290498 5.809961 - 0.136000 1.083320 0.773437 0.291366 5.827324 - 0.138000 1.083229 0.773283 0.291638 5.832753 - 0.140000 1.083032 0.773417 0.291171 5.823427 - 0.142000 1.082825 0.773886 0.289936 5.798729 - 0.144000 1.082697 0.774694 0.288007 5.760150 - 0.146000 1.082716 0.775795 0.285550 5.710997 - 0.148000 1.082911 0.777098 0.282797 5.655945 - 0.150000 1.083267 0.778482 0.280018 5.600355 - 0.152000 1.083739 0.779816 0.277467 5.549332 - 0.154000 1.084258 0.780984 0.275337 5.506735 - 0.156000 1.084764 0.781917 0.273726 5.474524 - 0.158000 1.085215 0.782595 0.272633 5.452651 - 0.160000 1.085600 0.783050 0.271973 5.439463 - 0.162000 1.085939 0.783349 0.271614 5.432288 - 0.164000 1.086269 0.783582 0.271395 5.427907 - 0.166000 1.086632 0.783845 0.271141 5.422814 - 0.168000 1.087062 0.784236 0.270670 5.413403 - 0.170000 1.087575 0.784841 0.269815 5.396302 - 0.172000 1.088169 0.785721 0.268447 5.368936 - 0.174000 1.088827 0.786902 0.266506 5.330122 - 0.176000 1.089527 0.788366 0.264020 5.280397 - 0.178000 1.090249 0.790062 0.261095 5.221908 - 0.180000 1.090983 0.791909 0.257899 5.157988 - 0.182000 1.091725 0.793812 0.254634 5.092674 - 0.184000 1.092478 0.795671 0.251513 5.030265 - 0.186000 1.093252 0.797384 0.248746 4.974922 - 0.188000 1.094056 0.798864 0.246512 4.930235 - 0.190000 1.094906 0.800048 0.244938 4.898769 - 0.192000 1.095809 0.800909 0.244083 4.881658 - 0.194000 1.096763 0.801455 0.243917 4.878336 - 0.196000 1.097747 0.801731 0.244326 4.886516 - 0.198000 1.098716 0.801809 0.245123 4.902456 - 0.200000 1.099614 0.801777 0.246077 4.921541 diff --git a/examples/USER/plumed/in.peptide-plumed b/examples/USER/plumed/in.peptide-plumed index 40657d987e..2f5e8d026f 100644 --- a/examples/USER/plumed/in.peptide-plumed +++ b/examples/USER/plumed/in.peptide-plumed @@ -35,6 +35,9 @@ fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 thermo_style custom step temp etotal pe ke epair ebond f_2 thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy - -run 100 +run 101 diff --git a/examples/USER/plumed/p.log b/examples/USER/plumed/p.log deleted file mode 100644 index c2f2163c83..0000000000 --- a/examples/USER/plumed/p.log +++ /dev/null @@ -1,64 +0,0 @@ -PLUMED: PLUMED is starting -PLUMED: Version: 2.5.0-dev (git: a10584333) compiled on Jul 2 2018 at 09:29:02 -PLUMED: Please cite this paper when using PLUMED [1] -PLUMED: For further information see the PLUMED web page at http://www.plumed.org -PLUMED: Root: /data/gt/mycodes/plumed2/ -PLUMED: For installed feature, see /data/gt/mycodes/plumed2//src/config/config.txt -PLUMED: Molecular dynamics engine: LAMMPS -PLUMED: Precision of reals: 8 -PLUMED: Running over 1 node -PLUMED: Number of threads: 1 -PLUMED: Cache line size: 512 -PLUMED: Number of atoms: 2004 -PLUMED: File suffix: -PLUMED: FILE: plumed.dat -PLUMED: Action COM -PLUMED: with label c1 -PLUMED: serial associated to this virtual atom is 2005 -PLUMED: of atoms -PLUMED: 2 4 5 6 -PLUMED: broken molecules will be rebuilt assuming atoms are in the proper order -PLUMED: Action COM -PLUMED: with label c2 -PLUMED: serial associated to this virtual atom is 2006 -PLUMED: of atoms -PLUMED: 80 82 83 84 -PLUMED: broken molecules will be rebuilt assuming atoms are in the proper order -PLUMED: Action DISTANCE -PLUMED: with label d1 -PLUMED: between atoms 2005 37 -PLUMED: using periodic boundary conditions -PLUMED: Action DISTANCE -PLUMED: with label d2 -PLUMED: between atoms 2006 37 -PLUMED: using periodic boundary conditions -PLUMED: Action RESTRAINT -PLUMED: with label h_pot -PLUMED: with arguments d1 d2 -PLUMED: added component to this action: h_pot.bias -PLUMED: at 1.000000 1.000000 -PLUMED: with harmonic force constant 10.000000 10.000000 -PLUMED: and linear force constant 0.000000 0.000000 -PLUMED: added component to this action: h_pot.force2 -PLUMED: Action PRINT -PLUMED: with label @5 -PLUMED: with stride 1 -PLUMED: with arguments d1 d2 h_pot.bias h_pot.force2 -PLUMED: on file colvar -PLUMED: with format %f -PLUMED: END FILE: plumed.dat -PLUMED: Timestep: 0.002000 -PLUMED: KbT has not been set by the MD engine -PLUMED: It should be set by hand where needed -PLUMED: Relevant bibliography: -PLUMED: [1] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) -PLUMED: Please read and cite where appropriate! -PLUMED: Finished setup -PLUMED: Cycles Total Average Minumum Maximum -PLUMED: 1 0.015035 0.015035 0.015035 0.015035 -PLUMED: 1 Prepare dependencies 101 0.000123 0.000001 0.000001 0.000004 -PLUMED: 2 Sharing data 101 0.006837 0.000068 0.000047 0.000891 -PLUMED: 3 Waiting for data 101 0.000967 0.000010 0.000007 0.000041 -PLUMED: 4 Calculating (forward loop) 101 0.001616 0.000016 0.000011 0.000043 -PLUMED: 5 Applying (backward loop) 101 0.002159 0.000021 0.000018 0.000057 -PLUMED: 6 Update 101 0.001059 0.000010 0.000006 0.000086 diff --git a/examples/USER/plumed/plumed.dat b/examples/USER/plumed/plumed.dat index d316d4b035..27f4d635fb 100644 --- a/examples/USER/plumed/plumed.dat +++ b/examples/USER/plumed/plumed.dat @@ -1,6 +1,6 @@ +UNITS ENERGY=kcal/mol c1: COM ATOMS=2,4,5,6 c2: COM ATOMS=80,82,83,84 -d1: DISTANCE ATOMS=c1,37 -d2: DISTANCE ATOMS=c2,37 -h_pot: RESTRAINT ARG=d1,d2 AT=1.0,1.0 KAPPA=10,10 -PRINT ARG=d1,d2,h_pot.* FILE=colvar +energy: ENERGY +DUMPATOMS ATOMS=1-2004 FILE=plumed.xyz UNITS=A PRECISION=4 STRIDE=10 +PRINT ARG=energy STRIDE=10 FMT=%8.4f FILE=plmd_energy diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 15753596a5..b6af7c691d 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -32,6 +32,9 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : if (!atom->tag_enable) error->all(FLERR,"fix plumed requires atom tags"); // Initialize plumed: p=new PLMD::Plumed; +// Check API version + int api_version; p->cmd("getApiVersion",&api_version); + if( api_version!=6 ) error->all(FLERR,"invalid api version for PLUMED"); // If the -partition option is activated then enable inter-partition communication if (universe->existflag == 1) { From 7f5a83cb1ddc1ce1ef1b0066bcdf7bd10ac39f94 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 2 Jul 2018 17:04:19 +0100 Subject: [PATCH 06/72] Added first go at checks on PLUMED interface to LAMMPS --- examples/USER/plumed/check-plumed.sh | 49 +++++++++++++++++++ examples/USER/plumed/clear-files.sh | 8 +++ examples/USER/plumed/in.peptide-plumed | 1 + .../plumed/in.peptide-plumed-eng-force-plumed | 41 ++++++++++++++++ .../plumed/in.peptide-plumed-engforce-ref | 40 +++++++++++++++ examples/USER/plumed/in.peptide-plumed-expand | 40 +++++++++++++++ .../plumed/in.peptide-plumed-lammps-restraint | 44 +++++++++++++++++ examples/USER/plumed/in.peptide-plumed-npt | 43 ++++++++++++++++ examples/USER/plumed/in.peptide-plumed-npt2 | 43 ++++++++++++++++ .../plumed/in.peptide-plumed-plumed-restraint | 44 +++++++++++++++++ examples/USER/plumed/plumed-eng-ref.dat | 2 + examples/USER/plumed/plumed-engforce.dat | 3 ++ examples/USER/plumed/plumed-expand.dat | 3 ++ examples/USER/plumed/plumed-norestraint.dat | 3 ++ examples/USER/plumed/plumed-restraint.dat | 4 ++ examples/USER/plumed/plumed.dat | 1 + examples/USER/plumed/plumed_npt.dat | 2 + examples/USER/plumed/plumed_npt2.dat | 3 ++ 18 files changed, 374 insertions(+) create mode 100755 examples/USER/plumed/clear-files.sh create mode 100644 examples/USER/plumed/in.peptide-plumed-eng-force-plumed create mode 100644 examples/USER/plumed/in.peptide-plumed-engforce-ref create mode 100644 examples/USER/plumed/in.peptide-plumed-expand create mode 100644 examples/USER/plumed/in.peptide-plumed-lammps-restraint create mode 100644 examples/USER/plumed/in.peptide-plumed-npt create mode 100644 examples/USER/plumed/in.peptide-plumed-npt2 create mode 100644 examples/USER/plumed/in.peptide-plumed-plumed-restraint create mode 100644 examples/USER/plumed/plumed-eng-ref.dat create mode 100644 examples/USER/plumed/plumed-engforce.dat create mode 100644 examples/USER/plumed/plumed-expand.dat create mode 100644 examples/USER/plumed/plumed-norestraint.dat create mode 100644 examples/USER/plumed/plumed-restraint.dat create mode 100644 examples/USER/plumed/plumed_npt.dat create mode 100644 examples/USER/plumed/plumed_npt2.dat diff --git a/examples/USER/plumed/check-plumed.sh b/examples/USER/plumed/check-plumed.sh index 584b4d3297..720bc34400 100755 --- a/examples/USER/plumed/check-plumed.sh +++ b/examples/USER/plumed/check-plumed.sh @@ -1,5 +1,10 @@ #!/bin/bash +LAMMPS=../../../src/lmp_mpi + +# Run first LAMMPS calculation +$LAMMPS < in.peptide-plumed + # Check PLUMED positions nlines=`paste plumed.xyz lammps.xyz | awk '{if( $2<$6-0.0001 || $2>$6+0.0001 || $3<$7-0.0001 || $3>$7+0.0001 || $4<$8-0.0002 || $4>$8+0.0002 ) if( $5!="Timestep:" && $1!=2004 ) print $0}' | wc -l` if [ "$nlines" -gt 0 ] ; then @@ -30,3 +35,47 @@ if [ "$nlines" -gt 0 ] ; then fi rm -f plmd_energy2 +# Check PLMD mass and charge +nlines=`wc -l mq_lammps | awk '{print $1}'` +sline=`grep -n "mass q" mq_lammps | awk '{print $1}' | sed -e s/:ITEM://` +for ((i=$sline+1;i<$nlines;i++)); do + # Mass and charge from LAMMPS + index=`head -n $i mq_lammps | tail -n 1 | awk '{print $1}'` + l_mass=`head -n $i mq_lammps | tail -n 1 | awk '{print $2}'` + l_charge=`head -n $i mq_lammps | tail -n 1 | awk '{print $3}'` + # Mass and charge from PLUMED + p_mass=`head -n $(($index+1)) mq_plumed | tail -n 1 | awk '{print $2}'` + p_charge=`head -n $(($index+1)) mq_plumed | tail -n 1 | awk '{print $3}'` + # Check PLUMED mass is same as lammps mass + mdiff=`echo \( $l_mass - $p_mass \) \> 0 | bc -l` + if [ "$mdiff" -gt 0 ] ; then + echo ERROR passing masses from LAMMPS to PLUMED + fi + # Check PLUMED charge is same as lammps charge + qdiff=`echo \( $l_charge - $p_charge \) \> 0 | bc -l` + if [ "$qdiff" -gt 0 ] ; then + echo ERROR passing charges from LAMMPS to PLUMED + fi +done + +# Run calculations to test adding restraint on bond +$LAMMPS < in.peptide-plumed-plumed-restraint +$LAMMPS < in.peptide-plumed-lammps-restraint +# Now compare value of distance when lammps and plumed restraint the distance +nlines=`paste lammps_restraint plumed_restraint | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' | wc -l` +if [ "$nlines" -gt 0 ] ; then + echo ERROR passing forces from PLUMED back to LAMMPS +fi + +# Nothing from here works + +# Now try to simply increase the size of the box by applying a moving restraint on the volume +$LAMMPS < in.peptide-plumed-expand + +# Now run calculations to test virial +$LAMMPS < in.peptide-plumed-npt +$LAMMPS < in.peptide-plumed-npt2 + +# Now run calculations to check forces on energy +$LAMMPS < in.peptide-plumed-engforce-ref +$LAMMPS < in.peptide-plumed-eng-force-plumed diff --git a/examples/USER/plumed/clear-files.sh b/examples/USER/plumed/clear-files.sh new file mode 100755 index 0000000000..5e588146f7 --- /dev/null +++ b/examples/USER/plumed/clear-files.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Data from first set of checks +rm bck.* plmd_energy lammps_energy mq_plumed mq_lammps lammps.xyz plumed.xyz p.log +# Data from checks on restraints +rm bck.* p.log lammps_restraint plumed_restraint +# Data from checks on virial +rm bck.* lammps_energy lammps.xyz log.lammps plmd_volume p.log plmd_volume_without_restraint plmd_volume_with_restraint diff --git a/examples/USER/plumed/in.peptide-plumed b/examples/USER/plumed/in.peptide-plumed index 2f5e8d026f..ef9d15b961 100644 --- a/examples/USER/plumed/in.peptide-plumed +++ b/examples/USER/plumed/in.peptide-plumed @@ -39,5 +39,6 @@ dump dd all xyz 10 lammps.xyz variable step equal step variable pe equal pe fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy +dump mq all custom 200 mq_lammps id mass q run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-eng-force-plumed b/examples/USER/plumed/in.peptide-plumed-eng-force-plumed new file mode 100644 index 0000000000..e45fd0844a --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-eng-force-plumed @@ -0,0 +1,41 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 1.8181818181818181 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 1 all nvt temp 363.0 363.0 90.90909090909091 tchain 1 + +fix 2 all plumed plumedfile plumed-engforce.dat outfile p.log + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-engforce-ref b/examples/USER/plumed/in.peptide-plumed-engforce-ref new file mode 100644 index 0000000000..d812e2b015 --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-engforce-ref @@ -0,0 +1,40 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 1 all nvt temp 300.0 300.0 100.0 tchain 1 + +fix 2 all plumed plumedfile plumed-eng-ref.dat outfile p.log + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-expand b/examples/USER/plumed/in.peptide-plumed-expand new file mode 100644 index 0000000000..ed70929ab6 --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-expand @@ -0,0 +1,40 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 1 all npt temp 275.0 275.0 100.0 iso 0.987 0.987 400.0 tchain 1 + +fix 2 all plumed plumedfile plumed-expand.dat outfile p.log + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-lammps-restraint b/examples/USER/plumed/in.peptide-plumed-lammps-restraint new file mode 100644 index 0000000000..3476c76b22 --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-lammps-restraint @@ -0,0 +1,44 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 +fix 6 all restrain bond 45 48 1000.0 1000.0 6.0 +fix 2 all plumed plumedfile plumed-norestraint.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-npt b/examples/USER/plumed/in.peptide-plumed-npt new file mode 100644 index 0000000000..1fe9e0c2fa --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-npt @@ -0,0 +1,43 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 +fix 1 all npt temp 275.0 275.0 100.0 iso 0.987 0.987 400.0 tchain 1 + +fix 2 all plumed plumedfile plumed_npt.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-npt2 b/examples/USER/plumed/in.peptide-plumed-npt2 new file mode 100644 index 0000000000..984407d1e8 --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-npt2 @@ -0,0 +1,43 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 +fix 1 all npt temp 275.0 275.0 100.0 iso 987.9 987.9 400.0 tchain 1 + +fix 2 all plumed plumedfile plumed_npt2.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-plumed-restraint b/examples/USER/plumed/in.peptide-plumed-plumed-restraint new file mode 100644 index 0000000000..8ce35dd720 --- /dev/null +++ b/examples/USER/plumed/in.peptide-plumed-plumed-restraint @@ -0,0 +1,44 @@ +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +group one id 2 4 5 6 +group two id 80 82 83 84 +group ref id 37 +group colvar union one two ref + +fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 + +fix 2 all plumed plumedfile plumed-restraint.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +dump dd all xyz 10 lammps.xyz +variable step equal step +variable pe equal pe +fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy +dump mq all custom 200 mq_lammps id mass q + +run 101 diff --git a/examples/USER/plumed/plumed-eng-ref.dat b/examples/USER/plumed/plumed-eng-ref.dat new file mode 100644 index 0000000000..90e589157e --- /dev/null +++ b/examples/USER/plumed/plumed-eng-ref.dat @@ -0,0 +1,2 @@ +e: ENERGY +PRINT ARG=e FILE=energy_ref FMT=%8.4f diff --git a/examples/USER/plumed/plumed-engforce.dat b/examples/USER/plumed/plumed-engforce.dat new file mode 100644 index 0000000000..31a1564798 --- /dev/null +++ b/examples/USER/plumed/plumed-engforce.dat @@ -0,0 +1,3 @@ +e: ENERGY +RESTRAINT ARG=e AT=0 SLOPE=0.1 +PRINT ARG=e FILE=engforced FMT=%8.4f diff --git a/examples/USER/plumed/plumed-expand.dat b/examples/USER/plumed/plumed-expand.dat new file mode 100644 index 0000000000..29a8cf4182 --- /dev/null +++ b/examples/USER/plumed/plumed-expand.dat @@ -0,0 +1,3 @@ +v: VOLUME +r: MOVINGRESTRAINT ARG=v KAPPA0=100. AT0=20 AT1=30 STEP0=0 STEP1=100 +PRINT ARG=v,r.* FILE=expanding diff --git a/examples/USER/plumed/plumed-norestraint.dat b/examples/USER/plumed/plumed-norestraint.dat new file mode 100644 index 0000000000..1fed74ae81 --- /dev/null +++ b/examples/USER/plumed/plumed-norestraint.dat @@ -0,0 +1,3 @@ +UNITS LENGTH=A +dd: DISTANCE ATOMS=45,48 +PRINT ARG=dd FILE=lammps_restraint FMT=%8.4f diff --git a/examples/USER/plumed/plumed-restraint.dat b/examples/USER/plumed/plumed-restraint.dat new file mode 100644 index 0000000000..6ae4c8ce10 --- /dev/null +++ b/examples/USER/plumed/plumed-restraint.dat @@ -0,0 +1,4 @@ +UNITS LENGTH=A ENERGY=kcal/mol +dd: DISTANCE ATOMS=45,48 +RESTRAINT ARG=dd KAPPA=2000 AT=6.0 +PRINT ARG=dd FILE=plumed_restraint FMT=%8.4f diff --git a/examples/USER/plumed/plumed.dat b/examples/USER/plumed/plumed.dat index 27f4d635fb..7fe1290c0d 100644 --- a/examples/USER/plumed/plumed.dat +++ b/examples/USER/plumed/plumed.dat @@ -4,3 +4,4 @@ c2: COM ATOMS=80,82,83,84 energy: ENERGY DUMPATOMS ATOMS=1-2004 FILE=plumed.xyz UNITS=A PRECISION=4 STRIDE=10 PRINT ARG=energy STRIDE=10 FMT=%8.4f FILE=plmd_energy +DUMPMASSCHARGE FILE=mq_plumed diff --git a/examples/USER/plumed/plumed_npt.dat b/examples/USER/plumed/plumed_npt.dat new file mode 100644 index 0000000000..d41c41fa45 --- /dev/null +++ b/examples/USER/plumed/plumed_npt.dat @@ -0,0 +1,2 @@ +vv: VOLUME +PRINT ARG=vv FILE=plmd_volume_without_restraint diff --git a/examples/USER/plumed/plumed_npt2.dat b/examples/USER/plumed/plumed_npt2.dat new file mode 100644 index 0000000000..ea26ab3042 --- /dev/null +++ b/examples/USER/plumed/plumed_npt2.dat @@ -0,0 +1,3 @@ +vv: VOLUME +RESTRAINT AT=0.0 ARG=vv SLOPE=-60.221429 +PRINT ARG=vv FILE=plmd_volume_with_restraint From 43cdca80f287e2af980faf1732aab98285028ad7 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 9 Jul 2018 15:06:10 +0100 Subject: [PATCH 07/72] Fixed passing of charges --- src/USER-PLUMED/fix_plumed.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index b6af7c691d..89115c4cce 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -34,7 +34,7 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : p=new PLMD::Plumed; // Check API version int api_version; p->cmd("getApiVersion",&api_version); - if( api_version!=6 ) error->all(FLERR,"invalid api version for PLUMED"); + if( api_version>6 ) error->all(FLERR,"invalid api version for PLUMED"); // If the -partition option is activated then enable inter-partition communication if (universe->existflag == 1) { @@ -218,7 +218,7 @@ void FixPlumed::post_force(int vflag) for(int i=0;itag[i]-1; masses[i]=atom->mass[atom->type[i]]; - if(atom->q) charges[i]=atom->q[atom->type[i]]; + if(atom->q) charges[i]=atom->q[i]; } p->cmd("setAtomsNlocal",&nlocal); p->cmd("setAtomsGatindex",gatindex); From c84ae38e349b8c7bc1861ae0fac8f90ac5352661 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 9 Jul 2018 17:27:41 +0100 Subject: [PATCH 08/72] Fixed installation scripts for PLUMED --- src/USER-PLUMED/Install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh index 01552d7134..e48bd546b0 100755 --- a/src/USER-PLUMED/Install.sh +++ b/src/USER-PLUMED/Install.sh @@ -5,12 +5,13 @@ if (test $1 = 1) then if (test -e ../Makefile.package) then sed -i -e 's|^PKG_LIB =[ \t]*|& $(PLUMED_LOAD) |' ../Makefile.package + sed -i -e 's|^PKG_SYSINC =[ \t]*|& -D__PLUMED_HAS_DLOPEN |' ../Makefile.package fi if (test -e ../Makefile.package.settings) then # multiline form needed for BSD sed on Macs sed -i -e '4 i \ -PLUMED_LOAD=Plumed.o -ldl +PLUMED_LOAD=-ldl ' ../Makefile.package.settings fi @@ -23,10 +24,11 @@ elif (test $1 = 0) then if (test -e ../Makefile.package) then sed -i -e 's/[^ \t]* \$(PLUMED_LOAD)[^ \t]* //' ../Makefile.package + sed -i -e 's/[^ \t]* -D__PLUMED_HAS_DLOPEN[^ \t]* //' ../Makefile.package fi if (test -e ../Makefile.package.settings) then - sed -i -e '/PLUMED_LOAD=Plumed.o -ldl/d' ../Makefile.package.settings + sed -i -e '/PLUMED_LOAD=-ldl/d' ../Makefile.package.settings fi rm -f ../fix_plumed.cpp From 4d5635a3c43a33ae770a6a0df5f66dfae06c33dd Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Tue, 10 Jul 2018 16:01:45 +0100 Subject: [PATCH 09/72] Fixed virial contribution from PLUMED --- examples/USER/plumed/check-plumed.sh | 12 +++--- examples/USER/plumed/in.peptide-plumed-expand | 40 ------------------- examples/USER/plumed/plumed-expand.dat | 3 -- examples/USER/plumed/plumed_npt.dat | 2 +- examples/USER/plumed/plumed_npt2.dat | 2 +- src/USER-PLUMED/fix_plumed.cpp | 1 + 6 files changed, 10 insertions(+), 50 deletions(-) delete mode 100644 examples/USER/plumed/in.peptide-plumed-expand delete mode 100644 examples/USER/plumed/plumed-expand.dat diff --git a/examples/USER/plumed/check-plumed.sh b/examples/USER/plumed/check-plumed.sh index 720bc34400..0dadc96f41 100755 --- a/examples/USER/plumed/check-plumed.sh +++ b/examples/USER/plumed/check-plumed.sh @@ -67,15 +67,17 @@ if [ "$nlines" -gt 0 ] ; then echo ERROR passing forces from PLUMED back to LAMMPS fi -# Nothing from here works - -# Now try to simply increase the size of the box by applying a moving restraint on the volume -$LAMMPS < in.peptide-plumed-expand - # Now run calculations to test virial $LAMMPS < in.peptide-plumed-npt $LAMMPS < in.peptide-plumed-npt2 +nlines=`paste plmd_volume_with_restraint plmd_volume_without_restraint | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' | wc -l` +if [ "$nlines" -gt 0 ] ; then + echo ERROR passing virial from PLUMED back to LAMMPS +fi + +# Nothing from here works + # Now run calculations to check forces on energy $LAMMPS < in.peptide-plumed-engforce-ref $LAMMPS < in.peptide-plumed-eng-force-plumed diff --git a/examples/USER/plumed/in.peptide-plumed-expand b/examples/USER/plumed/in.peptide-plumed-expand deleted file mode 100644 index ed70929ab6..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-expand +++ /dev/null @@ -1,40 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 2.0 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 1 all npt temp 275.0 275.0 100.0 iso 0.987 0.987 400.0 tchain 1 - -fix 2 all plumed plumedfile plumed-expand.dat outfile p.log - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/plumed-expand.dat b/examples/USER/plumed/plumed-expand.dat deleted file mode 100644 index 29a8cf4182..0000000000 --- a/examples/USER/plumed/plumed-expand.dat +++ /dev/null @@ -1,3 +0,0 @@ -v: VOLUME -r: MOVINGRESTRAINT ARG=v KAPPA0=100. AT0=20 AT1=30 STEP0=0 STEP1=100 -PRINT ARG=v,r.* FILE=expanding diff --git a/examples/USER/plumed/plumed_npt.dat b/examples/USER/plumed/plumed_npt.dat index d41c41fa45..53579ac4ec 100644 --- a/examples/USER/plumed/plumed_npt.dat +++ b/examples/USER/plumed/plumed_npt.dat @@ -1,2 +1,2 @@ vv: VOLUME -PRINT ARG=vv FILE=plmd_volume_without_restraint +PRINT ARG=vv FILE=plmd_volume_without_restraint FMT=%8.5f diff --git a/examples/USER/plumed/plumed_npt2.dat b/examples/USER/plumed/plumed_npt2.dat index ea26ab3042..2074128cd0 100644 --- a/examples/USER/plumed/plumed_npt2.dat +++ b/examples/USER/plumed/plumed_npt2.dat @@ -1,3 +1,3 @@ vv: VOLUME RESTRAINT AT=0.0 ARG=vv SLOPE=-60.221429 -PRINT ARG=vv FILE=plmd_volume_with_restraint +PRINT ARG=vv FILE=plmd_volume_with_restraint FMT=%8.5f diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 89115c4cce..d54b547862 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -138,6 +138,7 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : p->cmd("setTimestep",&dt); virial_flag=1; + thermo_virial=1; scalar_flag = 1; // This is the real initialization: From 492e945b5ad85817f9c47814659ec4529d3c010b Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Wed, 11 Jul 2018 16:39:52 +0100 Subject: [PATCH 10/72] Added options to link plumed statically --- lib/plumed/.gitignore | 2 + lib/plumed/Install.py | 147 +++++++++++++++++++++++++++++++++ src/USER-PLUMED/Install.sh | 27 ++++-- src/USER-PLUMED/fix_plumed.cpp | 19 ++++- 4 files changed, 186 insertions(+), 9 deletions(-) create mode 100644 lib/plumed/.gitignore create mode 100644 lib/plumed/Install.py diff --git a/lib/plumed/.gitignore b/lib/plumed/.gitignore new file mode 100644 index 0000000000..f1a18f99d0 --- /dev/null +++ b/lib/plumed/.gitignore @@ -0,0 +1,2 @@ +# files to ignore +/plumed2* diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py new file mode 100644 index 0000000000..86e7cb7522 --- /dev/null +++ b/lib/plumed/Install.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python + +# Install.py tool to download, unpack, build, and link to the Voro++ library +# used to automate the steps described in the README file in this dir + +from __future__ import print_function +import sys,os,re,subprocess + +# help message + +help = """ +Syntax from src dir: make lib-plumed args="-b" + or: make lib-plumed args="-b -v 2.4.2" +Syntax from lib dir: python Install.py -b -v 2.4.2 + or: python Install.py -b + +specify one or more options, order does not matter + + -b = download and build the plumed2 library + -v = set version of Voro++ to download and build (default: latest stable version) + +Example: + +make lib-plumed args="-b" # download/build in lib/plumed/plumed2 +""" + +# settings + +version = "2.4.2" + +# Add known checksums for different PLUMED versions and use them to validate the download + +# print error message or help +def error(str=None): + if not str: print(help) + else: print("ERROR",str) + sys.exit() + +# expand to full path name +# process leading '~' or relative path + +def fullpath(path): + return os.path.abspath(os.path.expanduser(path)) + +def which(program): + def is_exe(fpath): + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + path = path.strip('"') + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + return None + +def geturl(url,fname): + success = False + + if which('curl') != None: + cmd = 'curl -L -o "%s" %s' % (fname,url) + try: + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + success = True + except subprocess.CalledProcessError as e: + print("Calling curl failed with: %s" % e.output.decode('UTF-8')) + + if not success and which('wget') != None: + cmd = 'wget -O "%s" %s' % (fname,url) + try: + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + success = True + except subprocess.CalledProcessError as e: + print("Calling wget failed with: %s" % e.output.decode('UTF-8')) + + if not success: + error("Failed to download source code with 'curl' or 'wget'") + return + +# Here add function to check fsum + +# parse args + +args = sys.argv[1:] +nargs = len(args) +if nargs == 0: error() + +homepath = "." + +buildflag = False +suffixflag = False +linkflag = True + +iarg = 0 +while iarg < nargs: + if args[iarg] == "-v": + if iarg+2 > nargs: error() + version = args[iarg+1] + iarg += 2 + elif args[iarg] == "-b": + buildflag = True + iarg += 1 + else: error() + +homepath = fullpath(homepath) + +# download and unpack plumed tarball + +if buildflag: + url = "https://github.com/plumed/plumed2/archive/v%s.tar.gz" % version + filename = "v%s.tar.gz" %version + print("Downloading plumed ...") + geturl(url,filename) + + print("Unpacking plumed tarball ...") + if os.path.exists("%s/%s" % (homepath,version)): + cmd = 'rm -rf "%s/%s"' % (homepath,version) + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + cmd = 'cd "%s"; tar -xzvf v%s.tar.gz' % (homepath,version) + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + os.remove("%s/v%s.tar.gz" % (homepath,version)) + +# build plumed + +if buildflag: + print("Building plumed ...") + cmd = 'cd %s/plumed2-%s; ./configure ; make' % (homepath,version) + txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + print(txt.decode('UTF-8')) +# +# # create 2 links in lib/voronoi to Voro++ src dir +# +# if linkflag: +# print("Creating links to Voro++ include and lib files") +# if os.path.isfile("includelink") or os.path.islink("includelink"): +# os.remove("includelink") +# if os.path.isfile("liblink") or os.path.islink("liblink"): +# os.remove("liblink") +# cmd = 'ln -s "%s/src" includelink' % homedir +# subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) +# cmd = 'ln -s "%s/src" liblink' % homedir +# subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh index e48bd546b0..69653ae60f 100755 --- a/src/USER-PLUMED/Install.sh +++ b/src/USER-PLUMED/Install.sh @@ -5,20 +5,33 @@ if (test $1 = 1) then if (test -e ../Makefile.package) then sed -i -e 's|^PKG_LIB =[ \t]*|& $(PLUMED_LOAD) |' ../Makefile.package - sed -i -e 's|^PKG_SYSINC =[ \t]*|& -D__PLUMED_HAS_DLOPEN |' ../Makefile.package + if ( ! test -e ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static ) then + sed -i -e 's|^PKG_SYSINC =[ \t]*|& -D__PLUMED_HAS_DLOPEN |' ../Makefile.package + fi fi if (test -e ../Makefile.package.settings) then + # This is for statically linking plumed2 + if ( test -e ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static ) then + fname=`ls ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static` + sed -i -e "4 i \ +include $fname +" ../Makefile.package.settings + dname=`ls ../../lib/plumed/plumed2*/src/wrapper/Plumed.h` + ln -s USER-PLUMED/$dname ../Plumed.h + # This is for linking plumed2 as a runtime library -- this is the default behavior + else # multiline form needed for BSD sed on Macs - sed -i -e '4 i \ + sed -i -e '4 i \ PLUMED_LOAD=-ldl ' ../Makefile.package.settings + cp Plumed.h .. + cp Plumed.cpp .. + fi fi cp fix_plumed.cpp .. cp fix_plumed.h .. - cp Plumed.h .. - cp Plumed.cpp .. elif (test $1 = 0) then @@ -28,12 +41,16 @@ elif (test $1 = 0) then fi if (test -e ../Makefile.package.settings) then + fname=`ls ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static` + sed -i -e "\:include $fname: d" ../Makefile.package.settings sed -i -e '/PLUMED_LOAD=-ldl/d' ../Makefile.package.settings fi rm -f ../fix_plumed.cpp rm -f ../fix_plumed.h rm -f ../Plumed.h - rm -f ../Plumed.cpp + if ( test -e ../Plumed.h ) then + rm -f ../Plumed.cpp + fi fi diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index d54b547862..32ff09b8c2 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -192,6 +192,9 @@ void FixPlumed::min_setup(int vflag) void FixPlumed::post_force(int vflag) { +// Check tag is enabled + if( !atom->tag_enable ) error->all(FLERR,"to run PLUMED you must have tag_enable==1"); + int update_gatindex=0; // Try to find out if the domain decomposition has been updated: if(nlocal!=atom->nlocal){ @@ -216,10 +219,18 @@ void FixPlumed::post_force(int vflag) // In case it has been updated, rebuild the local mass/charges array // and tell plumed about the change: if(update_gatindex){ - for(int i=0;itag[i]-1; - masses[i]=atom->mass[atom->type[i]]; - if(atom->q) charges[i]=atom->q[i]; + for(int i=0;itag[i]-1; + // Get masses + if(atom->rmass_flag) { + for(int i=0;irmass[i]; + } else { + for(int i=0;imass[atom->type[i]]; + } + // Get charges + if(atom->q_flag) { + for(int i=0;iq[i]; + } else { + for(int i=0;icmd("setAtomsNlocal",&nlocal); p->cmd("setAtomsGatindex",gatindex); From 4734bc09dcebc0a3974e5b2b93229424776cff48 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Wed, 11 Jul 2018 21:56:08 +0100 Subject: [PATCH 11/72] Added descriptions of static linking of PLUMED to README files --- lib/plumed/README | 56 ++++++++++++++++++++++++++++++++++++++ src/USER-PLUMED/Install.sh | 6 ++-- src/USER-PLUMED/README | 33 ++++++++++++++++------ 3 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 lib/plumed/README diff --git a/lib/plumed/README b/lib/plumed/README new file mode 100644 index 0000000000..fb8ef29ff3 --- /dev/null +++ b/lib/plumed/README @@ -0,0 +1,56 @@ +This directory contains links to the PLUMED library which is required +to use the PLUMED package and its fix plumed command in a +LAMMPS input script. PLUMED should only be downloaded into this directory if +you wish to statically link the library. If you wish to link PLUMED as +a dynamic library (as we recommend) then you can compile and build PLUMED +separately to LAMMPS. To use PLUMED in conjuction with LAMMPS you then simply +need to ensure that the PLUMED library is in your path at runtime. + +More info about the PLUMED library can be found at http://www.plumed.org. + +You can type "make lib-plumed" from the src directory to see help on +how to download, build and statically link PLUMED via make commands, or you can +do the same thing by typing "python Install.py" from within this +directory. Alternatively you can download and build PLUMED manually by following the instructions +below. + +----------------- + +Instructions: + +1. Download PLUMED either as a tarball from + http://www.plumed.org/get-it + or clone it using git clone https://github.com/plumed/plumed2.git. + If you download the tarball + unpack it in unpack it in this /lib/plumed directory. + Similarly if you clone it clone it to the /lib/plumed + directory. + +2. Compile PLUMED from within its home directory. In the + simplest cases this be done by issuing the commands + % ./configure + % make + More detailed instructions can be found at + http://plumed.github.io/doc-master/user-doc/html/_installation.html + +3. There is no need to install PLUMED if you only wish + to use it from LAMMPS. You should thus only run + make install if you want to use PLUMED as a stand-alone + code or from some other code. To install it you can + run the following commands: + a) install under the default /usr/local + % sudo make install + b) install under a user-writeable location by first + changing the PREFIX variable when running the + configure command file, then + % make install + +----------------- + +When these steps are complete you can build LAMMPS +with the PLUMED package installed: + +% cd lammps/src +% make yes-user-plumed +% make mpi (or whatever target you wish) + diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh index 69653ae60f..0b8e9e6c9a 100755 --- a/src/USER-PLUMED/Install.sh +++ b/src/USER-PLUMED/Install.sh @@ -14,9 +14,9 @@ if (test $1 = 1) then # This is for statically linking plumed2 if ( test -e ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static ) then fname=`ls ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static` - sed -i -e "4 i \ -include $fname -" ../Makefile.package.settings + sed -i -e '4 i \ +include '$fname' +' ../Makefile.package.settings dname=`ls ../../lib/plumed/plumed2*/src/wrapper/Plumed.h` ln -s USER-PLUMED/$dname ../Plumed.h # This is for linking plumed2 as a runtime library -- this is the default behavior diff --git a/src/USER-PLUMED/README b/src/USER-PLUMED/README index 02a0229e57..11ca0a7281 100644 --- a/src/USER-PLUMED/README +++ b/src/USER-PLUMED/README @@ -11,18 +11,33 @@ folder implement an interface between LAMMPS and PLUMED, that are written and maintained by Gareth Tribello (gareth.tribello@gmail.com). PLUMED must instead be downloaded and compiled separately to LAMMPS. This building -and compiling of PLUEMD can be done before or after the building of LAMMPS as LAMMPS -calls PLUMED as a dynamic library. If you wish to use PLUMED with LAMMPS, however, -you must run the command: +and compiling of PLUMED can be done before or after the building of LAMMPS as LAMMPS +can call PLUMED as a dynamic library. There is also the possibility to link PLUEMD +statically. In this case a copy of PLUMED must be downloaded into the lib/plumed +directory. This copy of PLUMED will then always be linked into the code at compile +time. + +However you decide to link PLUMED (statically or dynamically) you must run the command: make yes-user-plumed -before compiling LAMMPS. Furthermore, you must ensure that PLUMED is in your +before compiling LAMMPS in order to enable the module. In addition, if you have chosen to +link PLUMED dynamically you must ensure that PLUMED is in your PATH when running a LAMMPS calculation that takes advantage of PLUMED. If -PLUMED is not in the PATH an error will be returned whenever LAMMPS encounters -the fix plumed command in its input. To be clear, however, LAMMPS will run if -it is compiled with fix-plumed enabled on inputs that do not contain a fix -plumed command when PLUMED is not in the PATH. +PLUMED is linked as a runtime library and if PLUMED is not in the PATH an error will be returned whenever LAMMPS encounters +the fix plumed command in its input. To be clear, however, a LAMMPS executable that was dynamically linked with PLUMED will run +even if PLUMED is not in the path if as long as the input does not contain a fix +plumed command. + +If you wish to statically link PLUMED you must download PLUMED to the /lib/plumed directory before compiling LAMMPS. You can +download a tar ball into that directory or you can clone the plumed2 repository from github there. Once you have created a +directory containing a distribution of PLUMED within /lib/plumed you then must build PLUMED within that directory by issuing +the usual commands. It is worth noting that we have provided a script that will download and build PLUMED for you with +a minimal set of options. To run this script you need to issue the following command: + +make lib-plumed args="-b" + +in the src directory. More info about the PLUMED library can be found at: @@ -45,7 +60,7 @@ numerous example scripts for PLUMED as well as citations to articles that dcomen implemented within PLUMED. There are also example scripts for using this package in the folder -examples/USER/colvars, as well as on the GitHub page for PLUMED. +examples/USER/plumed, as well as on the GitHub page for PLUMED. Please contact Gareth Tribello (gareth.tribello@gmail.com) for questions regarding this package. From 6d9face1ec0b3e55ce62ba40d1783cac7dab6eca Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Thu, 12 Jul 2018 12:26:09 +0100 Subject: [PATCH 12/72] Added documentation describing PLUMED package installation --- doc/src/Section_packages.txt | 72 ++++++++++++++++++++++++++++ examples/USER/plumed/check-plumed.sh | 6 +++ 2 files changed, 78 insertions(+) diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt index e9387fe35f..2a150b08bc 100644 --- a/doc/src/Section_packages.txt +++ b/doc/src/Section_packages.txt @@ -1784,6 +1784,78 @@ examples/USER/colvars :ul :line +USER-PLUMED package :link(USER-PLUMED),h4 + +[Contents:] + +The fix plumed command allows you to use the plugin for molecular +dynamics PLUMED to analyse and bias your LAMMPS trajectory on the fly. +In practise PLUMED is called from within the lammps input script by using +the "fix plumed _fix_plumed.html command. + +[Authors:] The PLUMED library is written and maintained by +Massimilliano Bonomi, Giovanni Bussi, Carlo Camiloni and +Gareth Tribello. + +[Install or un-install:] + +Before building LAMMPS with this package, you must first build +PLUMED. We recommending building PLUMED separately to LAMMPS using +the instructions that can be found at http://plumed.github.io/doc-master/user-doc/html/_installation.html. +Before compiling LAMMPS you can then install the fix plumed command +and compile LAMMPS in the usual manner: + +make yes-user-plumed +make machine :pre + +Once this compilation completes you should be able to run LAMMPS in the usual +way. When running LAMMPS with an input script that contains a fix +plumed command LAMMPS will try to call the PLUMED runtime library. PLUMED +must therefore be available in your path if LAMMPS is compiled in this way. + +On some machines it is not possible to call runtime libraries in the way described +above. When compiling on these machines it is thus better to statically link +PLUMED when compiling LAMMPS. To do this you must either download a PLUMED +tarball from http://www.plumed.org/get-it or clone it using +git clone https://github.com/plumed/plumed2.git. If you download the tarball +unpack it in the /lib/plumed directory. Similarly if you clone +it clone it to the /lib/plumed directory as if there is a version of PLUMED within +this directory LAMMPS will always try to statically link the version of PLUMED +that this directory contains instead of dynamically linking the library. + +Once you have downloaded PLUMED into /lib/plumed you must again build the code +here by following the instructions that can be found at +http://plumed.github.io/doc-master/user-doc/html/_installation.html. + +You can statically link PLUMED manually and if you want to access the full +range of PLUMED functionalities this is what you should do. If you only want the +basic range of functionalities, however, (i.e. no user contributed modules) then +you can download and compile PLUMED in one step from the lammps/src dir, using a +command like like those below: + +make lib-plumed # print help message +make lib-plumed args="-b" # download and build the latest stable version of PLUMED + +These commands will simply invoke the lib/plumed/Install.py script with +args specified. Furthermore, once the script has completed you should +have a compiled version of PLUMED. With this built you can install/un-install +PLUMED and build LAMMPS in the usual manner: + +make yes-user-plumed +make machine :pre + +make no-user-plumed +make machine :pre + +[Supporting info:] + +src/USER-PLUMED/README +lib/plumed/README +"fix plumed "_fix_plumed.html +examples/USER/plumed :ul + +:line + USER-DIFFRACTION package :link(USER-DIFFRACTION),h4 [Contents:] diff --git a/examples/USER/plumed/check-plumed.sh b/examples/USER/plumed/check-plumed.sh index 0dadc96f41..b1b599f15c 100755 --- a/examples/USER/plumed/check-plumed.sh +++ b/examples/USER/plumed/check-plumed.sh @@ -1,3 +1,9 @@ +# Needs make yes-molecule +# make yes-rigid +# make yes-kspace +# make yes-user-plumed ( obviously ) + + #!/bin/bash LAMMPS=../../../src/lmp_mpi From c442166dede75d2b06ea0d4cd71dce6477163794 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Thu, 12 Jul 2018 16:22:40 +0100 Subject: [PATCH 13/72] Tidied up example directory for PLUMED --- examples/USER/plumed/check-plumed.sh | 89 --------------- examples/USER/plumed/clear-files.sh | 8 -- examples/USER/plumed/colvar | 103 ++++++++++++++++++ examples/USER/plumed/in.peptide-plumed | 3 - .../plumed/in.peptide-plumed-eng-force-plumed | 41 ------- .../plumed/in.peptide-plumed-engforce-ref | 40 ------- .../plumed/in.peptide-plumed-lammps-restraint | 44 -------- examples/USER/plumed/in.peptide-plumed-npt | 43 -------- examples/USER/plumed/in.peptide-plumed-npt2 | 43 -------- .../plumed/in.peptide-plumed-plumed-restraint | 44 -------- examples/USER/plumed/p.log | 57 ++++++++++ examples/USER/plumed/plumed-eng-ref.dat | 2 - examples/USER/plumed/plumed-engforce.dat | 3 - examples/USER/plumed/plumed-norestraint.dat | 3 - examples/USER/plumed/plumed-restraint.dat | 4 - examples/USER/plumed/plumed.dat | 11 +- examples/USER/plumed/plumed_npt.dat | 2 - examples/USER/plumed/plumed_npt2.dat | 3 - 18 files changed, 164 insertions(+), 379 deletions(-) delete mode 100755 examples/USER/plumed/check-plumed.sh delete mode 100755 examples/USER/plumed/clear-files.sh create mode 100644 examples/USER/plumed/colvar delete mode 100644 examples/USER/plumed/in.peptide-plumed-eng-force-plumed delete mode 100644 examples/USER/plumed/in.peptide-plumed-engforce-ref delete mode 100644 examples/USER/plumed/in.peptide-plumed-lammps-restraint delete mode 100644 examples/USER/plumed/in.peptide-plumed-npt delete mode 100644 examples/USER/plumed/in.peptide-plumed-npt2 delete mode 100644 examples/USER/plumed/in.peptide-plumed-plumed-restraint create mode 100644 examples/USER/plumed/p.log delete mode 100644 examples/USER/plumed/plumed-eng-ref.dat delete mode 100644 examples/USER/plumed/plumed-engforce.dat delete mode 100644 examples/USER/plumed/plumed-norestraint.dat delete mode 100644 examples/USER/plumed/plumed-restraint.dat delete mode 100644 examples/USER/plumed/plumed_npt.dat delete mode 100644 examples/USER/plumed/plumed_npt2.dat diff --git a/examples/USER/plumed/check-plumed.sh b/examples/USER/plumed/check-plumed.sh deleted file mode 100755 index b1b599f15c..0000000000 --- a/examples/USER/plumed/check-plumed.sh +++ /dev/null @@ -1,89 +0,0 @@ -# Needs make yes-molecule -# make yes-rigid -# make yes-kspace -# make yes-user-plumed ( obviously ) - - -#!/bin/bash - -LAMMPS=../../../src/lmp_mpi - -# Run first LAMMPS calculation -$LAMMPS < in.peptide-plumed - -# Check PLUMED positions -nlines=`paste plumed.xyz lammps.xyz | awk '{if( $2<$6-0.0001 || $2>$6+0.0001 || $3<$7-0.0001 || $3>$7+0.0001 || $4<$8-0.0002 || $4>$8+0.0002 ) if( $5!="Timestep:" && $1!=2004 ) print $0}' | wc -l` -if [ "$nlines" -gt 0 ] ; then - echo ERROR passing positions from LAMMPS to PLUMED - paste plumed.xyz lammps.xyz | awk '{if( $2<$6-0.0001 || $2>$6+0.0001 || $3<$7-0.0001 || $3>$7+0.0001 || $4<$8-0.0002 || $4>$8+0.0002 ) if( $5!="Timestep:" && $1!=2004 ) print $0, $2-$6, $3-$7, $4-$8}' -fi - -# CHECK PLUMED timestep -tstep=`grep timestep in.peptide-plumed | awk '{print $2}'` -tstep=`echo $tstep \* 0.001 \* 10 | bc -l` -nlines=`wc -l plmd_energy | awk '{print $1}'` - -for ((i=3;i<$nlines;i++)); do - told=`head -n $(($i-1)) plmd_energy | tail -n 1 | awk '{print $1}'` - tnew=`head -n $i plmd_energy | tail -n 1 | awk '{print $1}'` - tdiff=`echo \( $tnew - $told - $tstep \) \> 0 | bc -l` - if [ $tdiff -gt 0 ] ; then - echo ERROR passing timestep from LAMMPS to PLUMED - fi -done - -# Check PLUMED energy -tail -n +2 plmd_energy > plmd_energy2 -nlines=`paste lammps_energy plmd_energy2 | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' | wc -l` -if [ "$nlines" -gt 0 ] ; then - echo ERROR passing potential energy from LAMMPS to PLUMED - paste lammps_energy plmd_energy2 | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' -fi -rm -f plmd_energy2 - -# Check PLMD mass and charge -nlines=`wc -l mq_lammps | awk '{print $1}'` -sline=`grep -n "mass q" mq_lammps | awk '{print $1}' | sed -e s/:ITEM://` -for ((i=$sline+1;i<$nlines;i++)); do - # Mass and charge from LAMMPS - index=`head -n $i mq_lammps | tail -n 1 | awk '{print $1}'` - l_mass=`head -n $i mq_lammps | tail -n 1 | awk '{print $2}'` - l_charge=`head -n $i mq_lammps | tail -n 1 | awk '{print $3}'` - # Mass and charge from PLUMED - p_mass=`head -n $(($index+1)) mq_plumed | tail -n 1 | awk '{print $2}'` - p_charge=`head -n $(($index+1)) mq_plumed | tail -n 1 | awk '{print $3}'` - # Check PLUMED mass is same as lammps mass - mdiff=`echo \( $l_mass - $p_mass \) \> 0 | bc -l` - if [ "$mdiff" -gt 0 ] ; then - echo ERROR passing masses from LAMMPS to PLUMED - fi - # Check PLUMED charge is same as lammps charge - qdiff=`echo \( $l_charge - $p_charge \) \> 0 | bc -l` - if [ "$qdiff" -gt 0 ] ; then - echo ERROR passing charges from LAMMPS to PLUMED - fi -done - -# Run calculations to test adding restraint on bond -$LAMMPS < in.peptide-plumed-plumed-restraint -$LAMMPS < in.peptide-plumed-lammps-restraint -# Now compare value of distance when lammps and plumed restraint the distance -nlines=`paste lammps_restraint plumed_restraint | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' | wc -l` -if [ "$nlines" -gt 0 ] ; then - echo ERROR passing forces from PLUMED back to LAMMPS -fi - -# Now run calculations to test virial -$LAMMPS < in.peptide-plumed-npt -$LAMMPS < in.peptide-plumed-npt2 - -nlines=`paste plmd_volume_with_restraint plmd_volume_without_restraint | tail -n +2 | awk '{if( $2<$4-0.0001 || $2>$4+0.0001 ) print $0}' | wc -l` -if [ "$nlines" -gt 0 ] ; then - echo ERROR passing virial from PLUMED back to LAMMPS -fi - -# Nothing from here works - -# Now run calculations to check forces on energy -$LAMMPS < in.peptide-plumed-engforce-ref -$LAMMPS < in.peptide-plumed-eng-force-plumed diff --git a/examples/USER/plumed/clear-files.sh b/examples/USER/plumed/clear-files.sh deleted file mode 100755 index 5e588146f7..0000000000 --- a/examples/USER/plumed/clear-files.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Data from first set of checks -rm bck.* plmd_energy lammps_energy mq_plumed mq_lammps lammps.xyz plumed.xyz p.log -# Data from checks on restraints -rm bck.* p.log lammps_restraint plumed_restraint -# Data from checks on virial -rm bck.* lammps_energy lammps.xyz log.lammps plmd_volume p.log plmd_volume_without_restraint plmd_volume_with_restraint diff --git a/examples/USER/plumed/colvar b/examples/USER/plumed/colvar new file mode 100644 index 0000000000..df282364f5 --- /dev/null +++ b/examples/USER/plumed/colvar @@ -0,0 +1,103 @@ +#! FIELDS time dd + 0.000000 5.985554 + 0.002000 6.002880 + 0.004000 6.022015 + 0.006000 6.029922 + 0.008000 6.020103 + 0.010000 5.996906 + 0.012000 5.972734 + 0.014000 5.960079 + 0.016000 5.963714 + 0.018000 5.978140 + 0.020000 5.991813 + 0.022000 5.995155 + 0.024000 5.987021 + 0.026000 5.975340 + 0.028000 5.971456 + 0.030000 5.981945 + 0.032000 6.003550 + 0.034000 6.024743 + 0.036000 6.032990 + 0.038000 6.022936 + 0.040000 6.000131 + 0.042000 5.977800 + 0.044000 5.968692 + 0.046000 5.977224 + 0.048000 5.996934 + 0.050000 6.014800 + 0.052000 6.019586 + 0.054000 6.008803 + 0.056000 5.989809 + 0.058000 5.974484 + 0.060000 5.971140 + 0.062000 5.979074 + 0.064000 5.989379 + 0.066000 5.991356 + 0.068000 5.980176 + 0.070000 5.960625 + 0.072000 5.944401 + 0.074000 5.942614 + 0.076000 5.958402 + 0.078000 5.984574 + 0.080000 6.007964 + 0.082000 6.017667 + 0.084000 6.011795 + 0.086000 5.998304 + 0.088000 5.989405 + 0.090000 5.993275 + 0.092000 6.008545 + 0.094000 6.025183 + 0.096000 6.031186 + 0.098000 6.020651 + 0.100000 5.997952 + 0.102000 5.975230 + 0.104000 5.964757 + 0.106000 5.971150 + 0.108000 5.988568 + 0.110000 6.004676 + 0.112000 6.008731 + 0.114000 5.998481 + 0.116000 5.981406 + 0.118000 5.969615 + 0.120000 5.971827 + 0.122000 5.987658 + 0.124000 6.007888 + 0.126000 6.020477 + 0.128000 6.018377 + 0.130000 6.004046 + 0.132000 5.987682 + 0.134000 5.980338 + 0.136000 5.986534 + 0.138000 6.001303 + 0.140000 6.013589 + 0.142000 6.013717 + 0.144000 6.000028 + 0.146000 5.980283 + 0.148000 5.966836 + 0.150000 5.968670 + 0.152000 5.985459 + 0.154000 6.007612 + 0.156000 6.022374 + 0.158000 6.022034 + 0.160000 6.008851 + 0.162000 5.993355 + 0.164000 5.987212 + 0.166000 5.995452 + 0.168000 6.013111 + 0.170000 6.028386 + 0.172000 6.030387 + 0.174000 6.016468 + 0.176000 5.994191 + 0.178000 5.976616 + 0.180000 5.973983 + 0.182000 5.987185 + 0.184000 6.007275 + 0.186000 6.021338 + 0.188000 6.020837 + 0.190000 6.006955 + 0.192000 5.989433 + 0.194000 5.979796 + 0.196000 5.983601 + 0.198000 5.996921 + 0.200000 6.009310 + 0.202000 6.011114 diff --git a/examples/USER/plumed/in.peptide-plumed b/examples/USER/plumed/in.peptide-plumed index ef9d15b961..6972c0cfca 100644 --- a/examples/USER/plumed/in.peptide-plumed +++ b/examples/USER/plumed/in.peptide-plumed @@ -35,10 +35,7 @@ fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 thermo_style custom step temp etotal pe ke epair ebond f_2 thermo 10 -dump dd all xyz 10 lammps.xyz variable step equal step variable pe equal pe -fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy -dump mq all custom 200 mq_lammps id mass q run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-eng-force-plumed b/examples/USER/plumed/in.peptide-plumed-eng-force-plumed deleted file mode 100644 index e45fd0844a..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-eng-force-plumed +++ /dev/null @@ -1,41 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 1.8181818181818181 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 1 all nvt temp 363.0 363.0 90.90909090909091 tchain 1 - -fix 2 all plumed plumedfile plumed-engforce.dat outfile p.log - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-engforce-ref b/examples/USER/plumed/in.peptide-plumed-engforce-ref deleted file mode 100644 index d812e2b015..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-engforce-ref +++ /dev/null @@ -1,40 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 2.0 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 1 all nvt temp 300.0 300.0 100.0 tchain 1 - -fix 2 all plumed plumedfile plumed-eng-ref.dat outfile p.log - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-lammps-restraint b/examples/USER/plumed/in.peptide-plumed-lammps-restraint deleted file mode 100644 index 3476c76b22..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-lammps-restraint +++ /dev/null @@ -1,44 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 2.0 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 -fix 6 all restrain bond 45 48 1000.0 1000.0 6.0 -fix 2 all plumed plumedfile plumed-norestraint.dat outfile p.log -fix 2a ref setforce 0.0 0.0 0.0 - -fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-npt b/examples/USER/plumed/in.peptide-plumed-npt deleted file mode 100644 index 1fe9e0c2fa..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-npt +++ /dev/null @@ -1,43 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 2.0 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 -fix 1 all npt temp 275.0 275.0 100.0 iso 0.987 0.987 400.0 tchain 1 - -fix 2 all plumed plumedfile plumed_npt.dat outfile p.log -fix 2a ref setforce 0.0 0.0 0.0 - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-npt2 b/examples/USER/plumed/in.peptide-plumed-npt2 deleted file mode 100644 index 984407d1e8..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-npt2 +++ /dev/null @@ -1,43 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 2.0 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 -fix 1 all npt temp 275.0 275.0 100.0 iso 987.9 987.9 400.0 tchain 1 - -fix 2 all plumed plumedfile plumed_npt2.dat outfile p.log -fix 2a ref setforce 0.0 0.0 0.0 - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/in.peptide-plumed-plumed-restraint b/examples/USER/plumed/in.peptide-plumed-plumed-restraint deleted file mode 100644 index 8ce35dd720..0000000000 --- a/examples/USER/plumed/in.peptide-plumed-plumed-restraint +++ /dev/null @@ -1,44 +0,0 @@ -# Solvated 5-mer peptide - -units real -atom_style full - -pair_style lj/charmm/coul/long 8.0 10.0 10.0 -bond_style harmonic -angle_style charmm -dihedral_style charmm -improper_style harmonic -kspace_style pppm 0.0001 - -read_data data.peptide - -neighbor 2.0 bin -neigh_modify delay 5 - -timestep 2.0 - -group peptide type <= 12 -group one id 2 4 5 6 -group two id 80 82 83 84 -group ref id 37 -group colvar union one two ref - -fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 - -fix 2 all plumed plumedfile plumed-restraint.dat outfile p.log -fix 2a ref setforce 0.0 0.0 0.0 - -fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 - -#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz -#dump_modify 1 sort id - -thermo_style custom step temp etotal pe ke epair ebond f_2 -thermo 10 -dump dd all xyz 10 lammps.xyz -variable step equal step -variable pe equal pe -fix 5 all print 10 "$(v_step) $(v_pe)" file lammps_energy -dump mq all custom 200 mq_lammps id mass q - -run 101 diff --git a/examples/USER/plumed/p.log b/examples/USER/plumed/p.log new file mode 100644 index 0000000000..79d0bbd84c --- /dev/null +++ b/examples/USER/plumed/p.log @@ -0,0 +1,57 @@ +PLUMED: PLUMED is starting +PLUMED: Version: 2.4.2 (git: Unknown) compiled on Jul 11 2018 at 19:09:03 +PLUMED: Please cite this paper when using PLUMED [1] +PLUMED: For further information see the PLUMED web page at http://www.plumed.org +PLUMED: Root: /Users/gareth/MD_code/lammps-permanent/lammps/lib/plumed/plumed2-2.4.2/ +PLUMED: For installed feature, see /Users/gareth/MD_code/lammps-permanent/lammps/lib/plumed/plumed2-2.4.2//src/config/config.txt +PLUMED: Molecular dynamics engine: LAMMPS +PLUMED: Precision of reals: 8 +PLUMED: Running over 1 node +PLUMED: Number of threads: 1 +PLUMED: Cache line size: 512 +PLUMED: Number of atoms: 2004 +PLUMED: File suffix: +PLUMED: FILE: plumed.dat +PLUMED: Action UNITS +PLUMED: with label @0 +PLUMED: length: A +PLUMED: energy: kcal/mol +PLUMED: time: ps +PLUMED: charge: e +PLUMED: mass: amu +PLUMED: using physical units +PLUMED: inside PLUMED, Boltzmann constant is 0.001987 +PLUMED: Action DISTANCE +PLUMED: with label dd +PLUMED: between atoms 45 48 +PLUMED: using periodic boundary conditions +PLUMED: Action RESTRAINT +PLUMED: with label @2 +PLUMED: with arguments dd +PLUMED: added component to this action: @2.bias +PLUMED: at 6.000000 +PLUMED: with harmonic force constant 2000.000000 +PLUMED: and linear force constant 0.000000 +PLUMED: added component to this action: @2.force2 +PLUMED: Action PRINT +PLUMED: with label @3 +PLUMED: with stride 1 +PLUMED: with arguments dd +PLUMED: on file colvar +PLUMED: with format %f +PLUMED: END FILE: plumed.dat +PLUMED: Timestep: 0.002000 +PLUMED: KbT has not been set by the MD engine +PLUMED: It should be set by hand where needed +PLUMED: Relevant bibliography: +PLUMED: [1] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014) +PLUMED: Please read and cite where appropriate! +PLUMED: Finished setup +PLUMED: Cycles Total Average Minumum Maximum +PLUMED: 1 0.020354 0.020354 0.020354 0.020354 +PLUMED: 1 Prepare dependencies 102 0.000256 0.000003 0.000001 0.000006 +PLUMED: 2 Sharing data 102 0.010002 0.000098 0.000078 0.000546 +PLUMED: 3 Waiting for data 102 0.001398 0.000014 0.000011 0.000072 +PLUMED: 4 Calculating (forward loop) 102 0.001797 0.000018 0.000013 0.000058 +PLUMED: 5 Applying (backward loop) 102 0.002666 0.000026 0.000022 0.000062 +PLUMED: 6 Update 102 0.001126 0.000011 0.000007 0.000055 diff --git a/examples/USER/plumed/plumed-eng-ref.dat b/examples/USER/plumed/plumed-eng-ref.dat deleted file mode 100644 index 90e589157e..0000000000 --- a/examples/USER/plumed/plumed-eng-ref.dat +++ /dev/null @@ -1,2 +0,0 @@ -e: ENERGY -PRINT ARG=e FILE=energy_ref FMT=%8.4f diff --git a/examples/USER/plumed/plumed-engforce.dat b/examples/USER/plumed/plumed-engforce.dat deleted file mode 100644 index 31a1564798..0000000000 --- a/examples/USER/plumed/plumed-engforce.dat +++ /dev/null @@ -1,3 +0,0 @@ -e: ENERGY -RESTRAINT ARG=e AT=0 SLOPE=0.1 -PRINT ARG=e FILE=engforced FMT=%8.4f diff --git a/examples/USER/plumed/plumed-norestraint.dat b/examples/USER/plumed/plumed-norestraint.dat deleted file mode 100644 index 1fed74ae81..0000000000 --- a/examples/USER/plumed/plumed-norestraint.dat +++ /dev/null @@ -1,3 +0,0 @@ -UNITS LENGTH=A -dd: DISTANCE ATOMS=45,48 -PRINT ARG=dd FILE=lammps_restraint FMT=%8.4f diff --git a/examples/USER/plumed/plumed-restraint.dat b/examples/USER/plumed/plumed-restraint.dat deleted file mode 100644 index 6ae4c8ce10..0000000000 --- a/examples/USER/plumed/plumed-restraint.dat +++ /dev/null @@ -1,4 +0,0 @@ -UNITS LENGTH=A ENERGY=kcal/mol -dd: DISTANCE ATOMS=45,48 -RESTRAINT ARG=dd KAPPA=2000 AT=6.0 -PRINT ARG=dd FILE=plumed_restraint FMT=%8.4f diff --git a/examples/USER/plumed/plumed.dat b/examples/USER/plumed/plumed.dat index 7fe1290c0d..0437836d03 100644 --- a/examples/USER/plumed/plumed.dat +++ b/examples/USER/plumed/plumed.dat @@ -1,7 +1,4 @@ -UNITS ENERGY=kcal/mol -c1: COM ATOMS=2,4,5,6 -c2: COM ATOMS=80,82,83,84 -energy: ENERGY -DUMPATOMS ATOMS=1-2004 FILE=plumed.xyz UNITS=A PRECISION=4 STRIDE=10 -PRINT ARG=energy STRIDE=10 FMT=%8.4f FILE=plmd_energy -DUMPMASSCHARGE FILE=mq_plumed +UNITS LENGTH=A ENERGY=kcal/mol +dd: DISTANCE ATOMS=45,48 +RESTRAINT ARG=dd KAPPA=2000 AT=6.0 +PRINT ARG=dd FILE=colvar diff --git a/examples/USER/plumed/plumed_npt.dat b/examples/USER/plumed/plumed_npt.dat deleted file mode 100644 index 53579ac4ec..0000000000 --- a/examples/USER/plumed/plumed_npt.dat +++ /dev/null @@ -1,2 +0,0 @@ -vv: VOLUME -PRINT ARG=vv FILE=plmd_volume_without_restraint FMT=%8.5f diff --git a/examples/USER/plumed/plumed_npt2.dat b/examples/USER/plumed/plumed_npt2.dat deleted file mode 100644 index 2074128cd0..0000000000 --- a/examples/USER/plumed/plumed_npt2.dat +++ /dev/null @@ -1,3 +0,0 @@ -vv: VOLUME -RESTRAINT AT=0.0 ARG=vv SLOPE=-60.221429 -PRINT ARG=vv FILE=plmd_volume_with_restraint FMT=%8.5f From 2e79d9f340aa2f7bb12b45315f705f49630d366a Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Thu, 25 Oct 2018 21:45:35 +0100 Subject: [PATCH 14/72] Merged Pablo's fixes into the plumed interface for lammps --- src/USER-PLUMED/fix_plumed.cpp | 161 +++++++++++++++++++++++++++------ src/USER-PLUMED/fix_plumed.h | 6 ++ 2 files changed, 139 insertions(+), 28 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 32ff09b8c2..794ab50f82 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -26,7 +26,9 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : nlocal(0), gatindex(NULL), masses(NULL), - charges(NULL) + charges(NULL), + id_pe(NULL), + id_press(NULL) { // Not sure this is really necessary: if (!atom->tag_enable) error->all(FLERR,"fix plumed requires atom tags"); @@ -145,16 +147,48 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : p->cmd("init"); // Define compute to calculate potential energy - char *id_pe = (char *) "thermo_pe"; + id_pe = new char[7]; + id_pe = (char *) "plmd_pe"; + char **newarg = new char*[3]; + newarg[0] = id_pe; + newarg[1] = (char *) "all"; + newarg[2] = (char *) "pe"; + modify->add_compute(3,newarg); + delete [] newarg; int ipe = modify->find_compute(id_pe); c_pe = modify->compute[ipe]; - // Trigger computation of potential energy every step - c_pe->addstep(update->ntimestep+1); + +// Define compute to calculate pressure tensor + id_press = new char[9]; + id_press = (char *) "plmd_press"; + newarg = new char*[5]; + newarg[0] = id_press; + newarg[1] = (char *) "all"; + newarg[2] = (char *) "pressure"; + newarg[3] = (char *) "NULL"; + newarg[4] = (char *) "virial"; + modify->add_compute(5,newarg); + delete [] newarg; + int ipress = modify->find_compute(id_press); + c_press = modify->compute[ipress]; + + // Check if nh type fixes have been called + // See comment in the setup method + for (int i = 0; i < modify->nfix; i++) { + if ( strncmp(modify->fix[i]->style,"nph",3) || + strncmp(modify->fix[i]->style,"nph_sphere",10) || + strncmp(modify->fix[i]->style,"npt",3) || + strncmp(modify->fix[i]->style,"npt_sphere",10) ) + error->all(FLERR,"Fix plumed must be called before fix_nh derived fixes, " + "for instance nph and npt fixes"); + } } FixPlumed::~FixPlumed() { delete p; + modify->delete_compute(id_pe); + modify->delete_compute(id_press); } int FixPlumed::setmask() @@ -172,10 +206,22 @@ void FixPlumed::init() { if (strcmp(update->integrate_style,"respa") == 0) nlevels_respa = ((Respa *) update->integrate)->nlevels; + // This avoids nan pressure if compute_pressure is called + // in a setup method + for(int i=0;i<6;i++) virial[i] = 0.; } void FixPlumed::setup(int vflag) { + // Here there is a crucial issue connected to constant pressure + // simulations. The fix_nh will call the compute_pressure inside + // the setup method, that is executed once and for all at the + // beginning of the simulation. Since our fix has a contribution + // to the virial, when this happens the variable virial must have + // been calculated. In other words, the setup method of fix_plumed + // has to be executed first. This creates a race condition with the + // setup method of fix_nh. This is why in the constructor I check if + // nh fixes have already been called. if (strcmp(update->integrate_style,"verlet") == 0) post_force(vflag); else { @@ -187,6 +233,8 @@ void FixPlumed::setup(int vflag) void FixPlumed::min_setup(int vflag) { + // This has to be checked. + // For instance it might have problems with fix_box_relax post_force(vflag); } @@ -248,6 +296,9 @@ void FixPlumed::post_force(int vflag) box[2][1]=domain->h[3]; box[2][0]=domain->h[4]; box[1][0]=domain->h[5]; + // Make initial of virial of this fix zero + // The following line is very important, otherwise the compute pressure will include + for(int i=0;i<6;++i) virial[i] = 0.; // local variable with timestep: int step=update->ntimestep; @@ -259,33 +310,87 @@ void FixPlumed::post_force(int vflag) p->cmd("setForces",&atom->f[0][0]); p->cmd("setMasses",&masses[0]); if(atom->q) p->cmd("setCharges",&charges[0]); - p->cmd("setVirial",&plmd_virial[0][0]); p->cmd("getBias",&bias); + // Pass virial to plumed + // If energy is needed virial_plmd is equal to Lammps' virial + // If energy is not needed virial_plmd is initialized to zero + // In the first case the virial will be rescaled and an extra term will be added + // In the latter case only an extra term will be added + p->cmd("setVirial",&plmd_virial[0][0]); + p->cmd("prepareCalc"); -// pass the energy - double pot_energy = 0.; - c_pe->compute_scalar(); - c_pe->invoked_flag |= INVOKED_SCALAR; - pot_energy = c_pe->scalar; - int nprocs; - // Divide energy by number of processors - // Plumed wants it this way - MPI_Comm_size(world,&nprocs); - pot_energy /= nprocs; - p->cmd("setEnergy",&pot_energy); - // Trigger computation of potential energy every step + plumedNeedsEnergy=0; + p->cmd("isEnergyNeeded",&plumedNeedsEnergy); + + // Pass potential energy and virial if needed + double *virial_lmp; + if (plumedNeedsEnergy) { + // Error if tail corrections are included + if (force->pair && force->pair->tail_flag) + error->all(FLERR,"Tail corrections to the pair potential included." + " The energy cannot be biased in this case." + " Remove the tail corrections by removing the" + " command: pair_modify tail yes"); + // compute the potential energy + double pot_energy = 0.; + c_pe->compute_scalar(); + pot_energy = c_pe->scalar; + // Divide energy by number of processes + // Plumed wants it this way + int nprocs; + MPI_Comm_size(world,&nprocs); + pot_energy /= nprocs; + p->cmd("setEnergy",&pot_energy); + // Compute pressure due to the virial (no kinetic energy term!) + c_press->compute_vector(); + virial_lmp = c_press->vector; + // Check if pressure is finite + if (!std::isfinite(virial_lmp[0]) || !std::isfinite(virial_lmp[1]) || !std::isfinite(virial_lmp[2]) + || !std::isfinite(virial_lmp[3]) || !std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5])) + error->all(FLERR,"Non-numeric virial - Plumed cannot work with that"); + // Convert pressure to virial per number of MPI processes + // From now on all virials are divided by the number of MPI processes + double nktv2p = force->nktv2p; + double inv_volume; + if (domain->dimension == 3) { + inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd); + } else { + inv_volume = 1.0 / (domain->xprd * domain->yprd); + } + for(int i=0;i<6;i++) virial_lmp[i] /= (inv_volume * nktv2p * nprocs); + // Convert virial from lammps to plumed representation + plmd_virial[0][0]=-virial_lmp[0]; + plmd_virial[1][1]=-virial_lmp[1]; + plmd_virial[2][2]=-virial_lmp[2]; + plmd_virial[0][1]=-virial_lmp[3]; + plmd_virial[0][2]=-virial_lmp[4]; + plmd_virial[1][2]=-virial_lmp[5]; + } else { + virial_lmp = new double[6]; + for(int i=0;i<6;i++) virial_lmp[i] = 0.; + } + // do the real calculation: + p->cmd("performCalc"); + +// retransform virial to lammps representation and assign it to this fix's virial. +// Plumed is giving back the full virial and therefore we have to subtract the +// initial virial i.e. virial_lmp. +// The vector virial contains only the contribution added by plumed +// The calculation of the pressure will be done by a compute pressure and will +// include this contribution. + virial[0] = -plmd_virial[0][0]-virial_lmp[0]; + virial[1] = -plmd_virial[1][1]-virial_lmp[1]; + virial[2] = -plmd_virial[2][2]-virial_lmp[2]; + virial[3] = -plmd_virial[0][1]-virial_lmp[3]; + virial[4] = -plmd_virial[0][2]-virial_lmp[4]; + virial[5] = -plmd_virial[1][2]-virial_lmp[5]; + + // Ask for the computes in the next time step + // such that the virial and energy are tallied. + // This should be changed to something that triggers the + // calculation only if plumed needs it. c_pe->addstep(update->ntimestep+1); - -// do the real calculation: - p->cmd("calc"); - -// retransform virial to lammps representation: - Fix::virial[0]=-plmd_virial[0][0]; - Fix::virial[1]=-plmd_virial[1][1]; - Fix::virial[2]=-plmd_virial[2][2]; - Fix::virial[3]=-plmd_virial[0][1]; - Fix::virial[4]=-plmd_virial[0][2]; - Fix::virial[5]=-plmd_virial[1][2]; + c_press->addstep(update->ntimestep+1); } void FixPlumed::post_force_respa(int vflag, int ilevel, int iloop) diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index 6bd6d59f39..6b067e1920 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -45,6 +45,12 @@ class FixPlumed : public Fix { double bias; // Compute for the energy class Compute *c_pe; +// Compute for the pressure + class Compute *c_press; +// Flag to trigger calculation of the energy and virial + int plumedNeedsEnergy; +// ID for potential energy and pressure compute + char *id_pe, *id_press; }; }; From 4fa78a78deb6175d0bed0abc02e035e164953144 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 26 Oct 2018 22:12:17 +0100 Subject: [PATCH 15/72] Added instructions on PLUMED to build extras and Package details pages of manual --- doc/src/Build_extras.txt | 57 ++++++++++++++++++++++++++++++++++++ doc/src/Packages_details.txt | 28 ++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt index d256a1afc8..e4ab6b9541 100644 --- a/doc/src/Build_extras.txt +++ b/doc/src/Build_extras.txt @@ -41,6 +41,7 @@ This is the list of packages that may require additional steps. "USER-ATC"_#user-atc, "USER-AWPMD"_#user-awpmd, "USER-COLVARS"_#user-colvars, +"USER-PLUMED" _#user-plumed, "USER-H5MD"_#user-h5md, "USER-INTEL"_#user-intel, "USER-MOLFILE"_#user-molfile, @@ -712,6 +713,62 @@ a corresponding Makefile.lammps.machine file. :line +USER-PLUMED package :h4,link(user-plumed) + +[CMake build]: + +[Traditional make]: + +Before building LAMMPS with this package, you must first build +PLUMED. We recommending building PLUMED separately to LAMMPS using +the instructions that can be found at http://plumed.github.io/doc-master/user-doc/html/_installation.html. +Before compiling LAMMPS you can then install the fix plumed command +and compile LAMMPS in the usual manner: + +make yes-user-plumed +make machine :pre + +Once this compilation completes you should be able to run LAMMPS in the usual +way. When running LAMMPS with an input script that contains a fix +plumed command LAMMPS will try to call the PLUMED runtime library. PLUMED +must therefore be available in your path if LAMMPS is compiled in this way. + +On some machines it is not possible to call runtime libraries in the way described +above. When compiling on these machines it is thus better to statically link +PLUMED when compiling LAMMPS. To do this you must either download a PLUMED +tarball from http://www.plumed.org/get-it or clone it using +git clone https://github.com/plumed/plumed2.git. If you download the tarball +unpack it in the /lib/plumed directory. Similarly if you clone +it clone it to the /lib/plumed directory as if there is a version of PLUMED within +this directory LAMMPS will always try to statically link the version of PLUMED +that this directory contains instead of dynamically linking the library. + +Once you have downloaded PLUMED into /lib/plumed you must again build the code +here by following the instructions that can be found at +http://plumed.github.io/doc-master/user-doc/html/_installation.html. + +You can statically link PLUMED manually and if you want to access the full +range of PLUMED functionalities this is what you should do. If you only want the +basic range of functionalities, however, (i.e. no user contributed modules) then +you can download and compile PLUMED in one step from the lammps/src dir, using a +command like like those below: + +make lib-plumed # print help message +make lib-plumed args="-b" # download and build the latest stable version of PLUMED + +These commands will simply invoke the lib/plumed/Install.py script with +args specified. Furthermore, once the script has completed you should +have a compiled version of PLUMED. With this built you can install/un-install +PLUMED and build LAMMPS in the usual manner: + +make yes-user-plumed +make machine :pre + +make no-user-plumed +make machine :pre + +:line + USER-H5MD package :h4,link(user-h5md) To build with this package you must have the HDF5 software package diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 031858e846..87f2493f93 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -1200,6 +1200,34 @@ examples/USER/colvars :ul :line +USER-PLUMED package :link(USER-PLUMED),h4 + +[Contents:] + +The fix plumed command allows you to use the plugin for molecular +dynamics PLUMED to analyse and bias your LAMMPS trajectory on the fly. +In practise PLUMED is called from within the lammps input script by using +the "fix plumed _fix_plumed.html command. + +[Authors:] The PLUMED library is written and maintained by +Massimilliano Bonomi, Giovanni Bussi, Carlo Camiloni and +Gareth Tribello. + +[Install:] + +This package has "specific installation +instructions"_Build_extras.html#gpu on the "Build +extras"_Build_extras.html doc page. + +[Supporting info:] + +src/USER-PLUMED/README +lib/plumed/README +"fix plumed "_fix_plumed.html +examples/USER/plumed :ul + +:line + USER-DIFFRACTION package :link(PKG-USER-DIFFRACTION),h4 [Contents:] From f70af61b35d97d3e30c322b606e1b7af03cbb9b9 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 28 Oct 2018 09:27:22 +0000 Subject: [PATCH 16/72] Added new version of Plumed wrapper --- src/USER-PLUMED/Plumed.cpp | 471 ++----------------------------------- 1 file changed, 22 insertions(+), 449 deletions(-) diff --git a/src/USER-PLUMED/Plumed.cpp b/src/USER-PLUMED/Plumed.cpp index f279c4a0eb..787a178cbd 100644 --- a/src/USER-PLUMED/Plumed.cpp +++ b/src/USER-PLUMED/Plumed.cpp @@ -19,453 +19,26 @@ You should have received a copy of the GNU Lesser General Public License along with plumed. If not, see . +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ + +/* + Do not link plumed directly but rather do it at runtime +*/ +#define __PLUMED_WRAPPER_LINK_RUNTIME 1 + +/* + Make sure the inline C++ interface is not included here. + Should not be necessary, but it doesn't hurt. +*/ +#define __PLUMED_WRAPPER_CXX 0 + +/* + Tell Plumed.h to emit the whole implementation +*/ +#define __PLUMED_WRAPPER_IMPLEMENTATION 1 + +/* + Emit fortran wrappers +*/ +#define __PLUMED_WRAPPER_FORTRAN 1 + #include "Plumed.h" - -#ifdef __PLUMED_HAS_DLOPEN -#include -#endif -#include -#include -#include -#include -#include - -/* DECLARATION USED ONLY IN THIS FILE */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Function pointer to plumed_create -*/ - -typedef void*(*plumed_create_pointer)(void); -/** - Function pointer to plumed_cmd -*/ -typedef void(*plumed_cmd_pointer)(void*,const char*,const void*); - -/** - Function pointer to plumed_finalize -*/ -typedef void(*plumed_finalize_pointer)(void*); - -/** - Holder for plumedmain function pointers. -*/ -typedef struct { - plumed_create_pointer create; - plumed_cmd_pointer cmd; - plumed_finalize_pointer finalize; -} plumed_plumedmain_function_holder; - -/** - Holder for plumed symbol table. -*/ -typedef struct { - int version; - plumed_plumedmain_function_holder functions; -} plumed_symbol_table_type; - -/** - Register for plumedmain function pointers -*/ -plumed_plumedmain_function_holder* plumed_kernel_register(const plumed_plumedmain_function_holder*); - -#ifdef __PLUMED_STATIC_KERNEL -/* Real interface */ -void*plumed_plumedmain_create(void); -void plumed_plumedmain_cmd(void*,const char*,const void*); -void plumed_plumedmain_finalize(void*); -#else -/* dummy interface */ -void*plumed_dummy_create(void); -void plumed_dummy_cmd(void*,const char*,const void*); -void plumed_dummy_finalize(void*); -#endif - -#ifdef __cplusplus -} -#endif - -/* END OF DECLARATION USED ONLY IN THIS FILE */ - -/* These are the dummy routines which are used when plumed is not available */ - -#ifdef __PLUMED_STATIC_KERNEL - -static int installed=1; - -#else - -static int installed=0; - -static int dummy; - -void*plumed_dummy_create(void) { - return (void*)&dummy; -} - -void plumed_dummy_cmd(void*p,const char*key,const void*val) { - (void) p; /* avoid warning on unused parameter */ - (void) key; /* avoid warning on unused parameter */ - (void) val; /* avoid warning on unused parameter */ - fprintf(stderr,"+++ ERROR: you are trying to use plumed, but it is not available +++\n"); - fprintf(stderr,"+++ Check your PLUMED_KERNEL environment variable +++\n"); - exit(1); -} - -void plumed_dummy_finalize(void*p) { - (void) p; /* avoid warning on unused parameter */ -} - -#endif - -plumed_plumedmain_function_holder* plumed_kernel_register(const plumed_plumedmain_function_holder* f) { - /* - Argument f is present for historical reasons but ignored in PLUMED>=2.5. - */ - if(f) { - if(getenv("PLUMED_LOAD_DEBUG")) { - fprintf(stderr,"+++ Ignoring registration at %p (%p,%p,%p) +++\n",(void*)f,(void*)f->create,(void*)f->cmd,(void*)f->finalize); - } - } -#ifdef __PLUMED_STATIC_KERNEL - /* - When __PLUMED_STATIC_KERNEL is defined, the function holder is initialized - to statically bound plumed_plumedmain_create, plumed_plumedmain_cmd, plumed_plumedmain_finalize and - cannot be changed. This saves from mis-set values for PLUMED_KERNEL. - */ - static plumed_plumedmain_function_holder g= {plumed_plumedmain_create,plumed_plumedmain_cmd,plumed_plumedmain_finalize}; -#else - /* - On the other hand, for runtime binding, we use dlsym to find the relevant functions. - Notice that as of PLUMED 2.5 self registration of the kernel is ignored, so argument f - is not used anymore. - Also notice that we should put some guard here for safe multithread calculations. - */ - static plumed_plumedmain_function_holder g= {plumed_dummy_create,plumed_dummy_cmd,plumed_dummy_finalize}; - static int first=1; -#ifdef __PLUMED_HAS_DLOPEN - const char* path; - char* pathcopy; - void* p; - char* pc; - plumed_symbol_table_type* plumed_symbol_table_ptr; - plumed_plumedmain_function_holder functions; - char* debug; - size_t strlenpath; - int dlopenmode; - /* - f==NULL is required here otherwise we would enter this block a second time - when plumed_kernel_register is called by the just loaded shared library. - */ - if(first && f==NULL) { - path=getenv("PLUMED_KERNEL"); - debug=getenv("PLUMED_LOAD_DEBUG"); -#ifdef __PLUMED_DEFAULT_KERNEL - /* - This variable allows a default path for the kernel to be hardcoded. - Can be useful for hardcoding the predefined plumed location - still allowing the user to override this choice setting PLUMED_KERNEL. - The path should be chosen at compile time adding e.g. - -D__PLUMED_DEFAULT_KERNEL=/opt/local/lib/libplumed.dylib - */ - /* This is required to add quotes */ -#define PLUMED_QUOTE_DIRECT(name) #name -#define PLUMED_QUOTE(macro) PLUMED_QUOTE_DIRECT(macro) - if(! (path && (*path) )) path=PLUMED_QUOTE(__PLUMED_DEFAULT_KERNEL); -#endif - if(path && (*path)) { - fprintf(stderr,"+++ Loading the PLUMED kernel runtime +++\n"); - fprintf(stderr,"+++ PLUMED_KERNEL=\"%s\" +++\n",path); - if(getenv("PLUMED_LOAD_NAMESPACE") && !strcmp(getenv("PLUMED_LOAD_NAMESPACE"),"LOCAL")) { - dlopenmode=RTLD_NOW|RTLD_LOCAL; - if(debug) fprintf(stderr,"+++ Loading with mode RTLD_NOW|RTLD_LOCAL +++\n"); - } else { - dlopenmode=RTLD_NOW|RTLD_GLOBAL; - if(debug) fprintf(stderr,"+++ Loading with mode RTLD_NOW|RTLD_GLOBAL +++\n"); - } - p=dlopen(path,dlopenmode); - if(!p) { - /* - Something went wrong. We try to remove "Kernel" string from the PLUMED_KERNEL variable - and load directly the shared library. Notice that this particular path is only expected - to be necessary when using PLUMED<=2.4 and the symbols in the main executable are - not visible. All the other cases (either PLUMED>=2.5 or symbols in the main executable visible) - should work correctly without entering here. - */ - fprintf(stderr,"+++ An error occurred. Message from dlopen(): %s +++\n",dlerror()); - strlenpath=strlen(path); - pathcopy=(char*) malloc(strlenpath+1); - strncpy(pathcopy,path,strlenpath+1); - pc=pathcopy+strlenpath-6; - while(pc>=pathcopy && memcmp(pc,"Kernel",6)) pc--; - if(pc>=pathcopy) { - memmove(pc, pc+6, strlen(pc)-5); - fprintf(stderr,"+++ Trying %s +++\n",pathcopy); - p=dlopen(pathcopy,dlopenmode); - if(!p) fprintf(stderr,"+++ An error occurred. Message from dlopen(): %s +++\n",dlerror()); - } - free(pathcopy); - } - if(p) { - functions.create=NULL; - functions.cmd=NULL; - functions.finalize=NULL; - /* - If the library was loaded, use dlsym to initialize pointers. - Notice that as of PLUMED 2.5 we ignore self registrations. - Pointers are searched in the form of a single pointer to a structure, which - is the standard way in PLUMED 2.5, as well as using alternative names used in - PLUMED 2.0 to 2.4 (e.g. plumedmain_create) and in some intermediate versions between - PLUMED 2.4 and 2.5 (e.g. plumed_plumedmain_create). The last chance is probably - unnecessary and might be removed at some point. - */ - plumed_symbol_table_ptr=(plumed_symbol_table_type*) dlsym(p,"plumed_symbol_table"); - if(plumed_symbol_table_ptr) functions=plumed_symbol_table_ptr->functions; - if(debug && plumed_symbol_table_ptr) { - fprintf(stderr,"+++ plumed_symbol_table version %i found at %p +++\n",plumed_symbol_table_ptr->version,(void*)plumed_symbol_table_ptr); - fprintf(stderr,"+++ plumed_function_pointers found at %p (%p,%p,%p) +++\n",(void*)&plumed_symbol_table_ptr->functions,(void*)functions.create,(void*)functions.cmd,(void*)functions.finalize); - } - - if(!functions.create) { - functions.create=(plumed_create_pointer) dlsym(p,"plumedmain_create"); - if(debug && functions.create) fprintf(stderr,"+++ %s found at %p +++\n","plumedmain_create",(void*)functions.create); - } - if(!functions.create) { - functions.create=(plumed_create_pointer) dlsym(p,"plumed_plumedmain_create"); - if(debug && functions.create) fprintf(stderr,"+++ %s found at %p +++\n","plumed_plumedmain_create",(void*)functions.create); - } - - if(!functions.cmd) { - functions.cmd=(plumed_cmd_pointer) dlsym(p,"plumedmain_cmd"); - if(debug && functions.cmd) fprintf(stderr,"+++ %s found at %p +++\n","plumedmain_cmd",(void*)functions.cmd); - } - if(!functions.cmd) { - functions.cmd=(plumed_cmd_pointer) dlsym(p,"plumed_plumedmain_cmd"); - if(debug && functions.cmd) fprintf(stderr,"+++ %s found at %p +++\n","plumed_plumedmain_cmd",(void*)functions.cmd); - } - - if(!functions.finalize) { - functions.finalize=(plumed_finalize_pointer) dlsym(p,"plumedmain_finalize"); - if(debug && functions.finalize) fprintf(stderr,"+++ %s found at %p +++\n","plumedmain_finalize",(void*)functions.finalize); - } - if(!functions.finalize) { - functions.finalize=(plumed_finalize_pointer) dlsym(p,"plumed_plumedmain_finalize"); - if(debug && functions.finalize) fprintf(stderr,"+++ %s found at %p +++\n","plumed_plumedmain_finalize",(void*)functions.finalize); - } - - if(functions.create && functions.cmd && functions.finalize) { - g=functions; - installed=1; - } else { - if(!functions.create) fprintf(stderr,"+++ pointer to (plumed_)plumedmain_create not found +++\n"); - if(!functions.cmd) fprintf(stderr,"+++ pointer to (plumed_)plumedmain_cmd not found +++\n"); - if(!functions.finalize) fprintf(stderr,"+++ pointer to (plumed_)plumedmain_finalize not found +++\n"); - } - } - } - first=0; - } -#endif -#endif - return &g; -} - -/* C wrappers: */ - -plumed plumed_create(void) { - plumed p; - plumed_plumedmain_function_holder*h=plumed_kernel_register(NULL); - assert(h); - assert(h->create); - p.p=(*(h->create))(); - assert(p.p); - return p; -} - -void plumed_cmd(plumed p,const char*key,const void*val) { - plumed_plumedmain_function_holder*h=plumed_kernel_register(NULL); - assert(p.p); - assert(h); - assert(h->cmd); - (*(h->cmd))(p.p,key,val); -} - -void plumed_finalize(plumed p) { - plumed_plumedmain_function_holder*h=plumed_kernel_register(NULL); - assert(p.p); - assert(h); - assert(h->finalize); - (*(h->finalize))(p.p); - p.p=NULL; -} - -int plumed_installed(void) { - plumed_kernel_register(NULL); - return installed; -} - -/* we declare a Plumed_g_main object here, in such a way that it is always available */ - -static plumed gmain= {NULL}; - -plumed plumed_global(void) { - return gmain; -} - -void plumed_gcreate(void) { - assert(gmain.p==NULL); - gmain=plumed_create(); -} - -void plumed_gcmd(const char*key,const void*val) { - assert(gmain.p); - plumed_cmd(gmain,key,val); -} - -void plumed_gfinalize(void) { - assert(gmain.p); - plumed_finalize(gmain); - gmain.p=NULL; -} - -int plumed_ginitialized(void) { - if(gmain.p) return 1; - else return 0; -} - -void plumed_c2f(plumed p,char*c) { - unsigned i; - unsigned char* cc; - /* - Convert the address stored in p.p into a proper FORTRAN string - made of only ASCII characters. For this to work, the two following - assertions should be satisfied: - */ - assert(CHAR_BIT<=12); - assert(sizeof(p.p)<=16); - - assert(c); - cc=(unsigned char*)&p.p; - for(i=0; i Date: Sun, 28 Oct 2018 18:12:02 -0400 Subject: [PATCH 17/72] remove file that is not present --- src/.gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/src/.gitignore b/src/.gitignore index 641c4d5499..9a4871d250 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -63,7 +63,6 @@ /fix_plumed.h /Plumed.cpp /Plumed.h -/Plumed.inc /dump_molfile.cpp /dump_molfile.h /molfile_interface.cpp From a60b6d1ab8a5be3560a4b4361540bcc442bd4bec Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 18:12:32 -0400 Subject: [PATCH 18/72] add feature to python lib install script to support existing installation and use links --- lib/plumed/Install.py | 56 ++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 86e7cb7522..438516b0b6 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -13,15 +13,18 @@ Syntax from src dir: make lib-plumed args="-b" or: make lib-plumed args="-b -v 2.4.2" Syntax from lib dir: python Install.py -b -v 2.4.2 or: python Install.py -b + or: python Install.py -p /usr/local/plumed-2.4.2 specify one or more options, order does not matter -b = download and build the plumed2 library - -v = set version of Voro++ to download and build (default: latest stable version) + -p = specify folder of existing plumed2 installation + -v = set version of plumed2 to download and build (default: 2.4.2) Example: make lib-plumed args="-b" # download/build in lib/plumed/plumed2 +make lib-plumed args="-p $HOME/plumed-2.4.2" # use existing Plumed2 installation in $HOME/plumed-2.4.2 """ # settings @@ -93,6 +96,7 @@ if nargs == 0: error() homepath = "." buildflag = False +pathflag = False suffixflag = False linkflag = True @@ -102,6 +106,11 @@ while iarg < nargs: if iarg+2 > nargs: error() version = args[iarg+1] iarg += 2 + elif args[iarg] == "-p": + if iarg+2 > nargs: error() + plumedpath = fullpath(args[iarg+1]) + pathflag = True + iarg += 2 elif args[iarg] == "-b": buildflag = True iarg += 1 @@ -109,7 +118,17 @@ while iarg < nargs: homepath = fullpath(homepath) -# download and unpack plumed tarball +if (pathflag): + if not os.path.isdir(plumedpath): error("Plumed2 path does not exist") + homedir = plumedpath + +if (buildflag and pathflag): + error("Cannot use -b and -p flag at the same time") + +if (not buildflag and not pathflag): + error("Have to use either -b or -p flag") + +# download and unpack plumed2 tarball if buildflag: url = "https://github.com/plumed/plumed2/archive/v%s.tar.gz" % version @@ -118,8 +137,11 @@ if buildflag: geturl(url,filename) print("Unpacking plumed tarball ...") - if os.path.exists("%s/%s" % (homepath,version)): - cmd = 'rm -rf "%s/%s"' % (homepath,version) + if os.path.exists("%s/plumed2-%s" % (homepath,version)): + cmd = 'rm -rf "%s/plumed2-%s"' % (homepath,version) + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + if os.path.exists("%s/plumed2" % (homepath)): + cmd = 'rm -rf "%s/plumed2"' % (homepath) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) cmd = 'cd "%s"; tar -xzvf v%s.tar.gz' % (homepath,version) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) @@ -129,19 +151,19 @@ if buildflag: if buildflag: print("Building plumed ...") - cmd = 'cd %s/plumed2-%s; ./configure ; make' % (homepath,version) + cmd = 'cd %s/plumed2-%s; ./configure --prefix=%s/plumed2 ; make ; make install' % (homepath,version,homepath) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) print(txt.decode('UTF-8')) # -# # create 2 links in lib/voronoi to Voro++ src dir -# -# if linkflag: -# print("Creating links to Voro++ include and lib files") -# if os.path.isfile("includelink") or os.path.islink("includelink"): -# os.remove("includelink") -# if os.path.isfile("liblink") or os.path.islink("liblink"): -# os.remove("liblink") -# cmd = 'ln -s "%s/src" includelink' % homedir -# subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) -# cmd = 'ln -s "%s/src" liblink' % homedir -# subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) +# create 2 links in lib/plumed to plumed2 installation dir + +if linkflag: + print("Creating links to plumed2 include and lib files") + if os.path.isfile("includelink") or os.path.islink("includelink"): + os.remove("includelink") + if os.path.isfile("liblink") or os.path.islink("liblink"): + os.remove("liblink") + cmd = 'ln -s "%s/plumed2/include" includelink' % homepath + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + cmd = 'ln -s "%s/plumed2/lib" liblink' % homepath + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) From 3cc938448818239ec94666ea76780d0c4e709b57 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 28 Oct 2018 16:23:29 -0600 Subject: [PATCH 19/72] cmake: add support USER-PLUMED --- cmake/CMakeLists.txt | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b3c0a70e4a..ebcd34f966 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -171,8 +171,9 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF - USER-PHONON USER-PTM USER-QTB USER-REAXC USER-SCAFACOS USER-SMD USER-SMTBQ - USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM) + USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REAXC USER-SCAFACOS + USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP + USER-QMMM) set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU) set(OTHER_PACKAGES CORESHELL QEQ) foreach(PKG ${DEFAULT_PACKAGES}) @@ -526,6 +527,27 @@ if(PKG_USER-SCAFACOS) include_directories(${SCAFACOS_INCLUDE_DIRS}) endif() +if(PKG_USER-PLUMED) + option(DOWNLOAD_PLUMED "Download Plumed (instead of using the system's one)" OFF) + if(DOWNLOAD_PLUMED) + include(ExternalProject) + ExternalProject_Add(plumed_build + URL https://github.com/plumed/plumed2/releases/download/v2.4.3/plumed-2.4.3.tgz + URL_MD5 bed9c88c8c635b269c1cd4a0598a2934 + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND /configure --prefix= + $<$:--with-pic> ) + ExternalProject_get_property(plumed_build INSTALL_DIR) + set(PLUMED_BUILD_DIR ${INSTALL_DIR}) + list(APPEND LAMMPS_DEPS plumed_build) + list(APPEND LAMMPS_LINK_LIBS ${PLUMED_BUILD_DIR}/lib/libplumed.so) + else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(PLUMED plumed REQUIRED) + list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LDFLAGS}) + endif() +endif() + if(PKG_USER-MOLFILE) add_library(molfile INTERFACE) target_include_directories(molfile INTERFACE ${LAMMPS_LIB_SOURCE_DIR}/molfile) From bfbf5695fd2f104af78b33f847d7601bc18989e3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:30:37 -0400 Subject: [PATCH 20/72] adjust path for includelink to find the Plumed.h wrapper properly --- lib/plumed/Install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 438516b0b6..eab78a5b4a 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -163,7 +163,7 @@ if linkflag: os.remove("includelink") if os.path.isfile("liblink") or os.path.islink("liblink"): os.remove("liblink") - cmd = 'ln -s "%s/plumed2/include" includelink' % homepath + cmd = 'ln -s "%s/plumed2/include/plumed/wrapper" includelink' % homepath subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) cmd = 'ln -s "%s/plumed2/lib" liblink' % homepath subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) From bdf37649057de199bba3d557acba95815a16d1aa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:31:40 -0400 Subject: [PATCH 21/72] update user-plumed Install.sh file to fit better into LAMMPS, adjust to changes in lib folder --- src/USER-PLUMED/Install.sh | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh index 0b8e9e6c9a..20215e4c99 100755 --- a/src/USER-PLUMED/Install.sh +++ b/src/USER-PLUMED/Install.sh @@ -4,29 +4,27 @@ if (test $1 = 1) then if (test -e ../Makefile.package) then - sed -i -e 's|^PKG_LIB =[ \t]*|& $(PLUMED_LOAD) |' ../Makefile.package - if ( ! test -e ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static ) then + sed -i -e 's|^PKG_LIB =[ \t]*|& -lplumedWrapper -ldl |' ../Makefile.package + if ( ! test -e ../../lib/plumed/liblink/plumed/src/lib/Plumed.inc.static ) then sed -i -e 's|^PKG_SYSINC =[ \t]*|& -D__PLUMED_HAS_DLOPEN |' ../Makefile.package fi + sed -i -e 's|^PKG_INC =[ \t]*|&-I../../lib/plumed/includelink |' ../Makefile.package + sed -i -e 's|^PKG_PATH =[ \t]*|&-L../../lib/plumed/liblink |' ../Makefile.package fi if (test -e ../Makefile.package.settings) then # This is for statically linking plumed2 - if ( test -e ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static ) then - fname=`ls ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static` + if ( test -e ../../lib/plumed/liblink/src/lib/Plumed.inc.static ) then + fname=../../lib/plumed/liblink/src/lib/Plumed.inc.static sed -i -e '4 i \ include '$fname' ' ../Makefile.package.settings - dname=`ls ../../lib/plumed/plumed2*/src/wrapper/Plumed.h` - ln -s USER-PLUMED/$dname ../Plumed.h # This is for linking plumed2 as a runtime library -- this is the default behavior else # multiline form needed for BSD sed on Macs sed -i -e '4 i \ PLUMED_LOAD=-ldl ' ../Makefile.package.settings - cp Plumed.h .. - cp Plumed.cpp .. fi fi @@ -36,21 +34,12 @@ PLUMED_LOAD=-ldl elif (test $1 = 0) then if (test -e ../Makefile.package) then - sed -i -e 's/[^ \t]* \$(PLUMED_LOAD)[^ \t]* //' ../Makefile.package - sed -i -e 's/[^ \t]* -D__PLUMED_HAS_DLOPEN[^ \t]* //' ../Makefile.package - fi - - if (test -e ../Makefile.package.settings) then - fname=`ls ../../lib/plumed/plumed2*/src/lib/Plumed.inc.static` - sed -i -e "\:include $fname: d" ../Makefile.package.settings - sed -i -e '/PLUMED_LOAD=-ldl/d' ../Makefile.package.settings + sed -i -e 's/[^ \t]*-lplumedWrapper -ldl[^ \t]* //' ../Makefile.package + sed -i -e 's/[^ \t]*-D__PLUMED_HAS_DLOPEN[^ \t]* //' ../Makefile.package + sed -i -e 's|[^ \t]*-I../../lib/plumed/includelink[^ \t]* ||' ../Makefile.package + sed -i -e 's|[^ \t]*-L../../lib/plumed/liblink[^ \t]* ||' ../Makefile.package fi rm -f ../fix_plumed.cpp rm -f ../fix_plumed.h - rm -f ../Plumed.h - if ( test -e ../Plumed.h ) then - rm -f ../Plumed.cpp - fi - fi From 925d6d37b9d3be6c2b95255657feb3d1bf18bd7c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:32:01 -0400 Subject: [PATCH 22/72] adjust header inclusion to current LAMMPS conventions --- src/USER-PLUMED/fix_plumed.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 794ab50f82..1b05477e38 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -1,6 +1,8 @@ -#include "math.h" -#include "stdlib.h" -#include "string.h" + +#include +#include +#include + #include "atom.h" #include "update.h" #include "force.h" From ae499b980dc12c6ee1e3da0a9ecc48db541ab9c3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:32:47 -0400 Subject: [PATCH 23/72] make Plumed.cpp obsolete in USER-PLUMED code by inserting it into fix_plumed.cpp --- src/USER-PLUMED/fix_plumed.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 1b05477e38..00a899724b 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -16,6 +16,29 @@ #include "modify.h" #include "pair.h" +/* + Do not link plumed directly but rather do it at runtime +*/ +#define __PLUMED_WRAPPER_LINK_RUNTIME 1 + +/* + Make sure the inline C++ interface is not included here. + Should not be necessary, but it doesn't hurt. +*/ +#define __PLUMED_WRAPPER_CXX 0 + +/* + Tell Plumed.h to emit the whole implementation +*/ +#define __PLUMED_WRAPPER_IMPLEMENTATION 1 + +/* + Emit fortran wrappers +*/ +#define __PLUMED_WRAPPER_FORTRAN 1 + +#include "Plumed.h" + using namespace LAMMPS_NS; using namespace PLMD; using namespace FixConst; From 54d728c0c7a09cc562555e708a2d8d0db0d06904 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:33:06 -0400 Subject: [PATCH 24/72] reduce need for include files by adding forward declaration --- src/USER-PLUMED/fix_plumed.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index 6b067e1920..d4bc037024 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -9,9 +9,11 @@ FixStyle(plumed,FixPlumed) #define LMP_FIX_PLUMED_H #include "fix.h" -#include "compute.h" -// the plumed header that defines the class// -#include "Plumed.h" + +// forward declaration +namespace PLMD { + class Plumed; +} namespace LAMMPS_NS { @@ -30,15 +32,15 @@ class FixPlumed : public Fix { private: // pointer to plumed object: - PLMD::Plumed*p; + PLMD::Plumed *p; // number of atoms local to this process: int nlocal; // array of atom indexes local to this process: - int*gatindex; + int *gatindex; // array of masses for local atoms: - double*masses; + double *masses; // array of charges for local atoms: - double*charges; + double *charges; // this is something to enable respa int nlevels_respa; // output bias potential From 3a082e227e4237ae2161b82e74e1800358bdeefa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:33:51 -0400 Subject: [PATCH 25/72] remove obsolete and redundant files --- src/USER-PLUMED/Plumed.cpp | 44 --- src/USER-PLUMED/Plumed.h | 577 ------------------------------------- 2 files changed, 621 deletions(-) delete mode 100644 src/USER-PLUMED/Plumed.cpp delete mode 100644 src/USER-PLUMED/Plumed.h diff --git a/src/USER-PLUMED/Plumed.cpp b/src/USER-PLUMED/Plumed.cpp deleted file mode 100644 index 787a178cbd..0000000000 --- a/src/USER-PLUMED/Plumed.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Copyright (c) 2011-2018 The plumed team - (see the PEOPLE file at the root of the distribution for a list of names) - - See http://www.plumed.org for more information. - - This file is part of plumed, version 2. - - plumed is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - plumed is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with plumed. If not, see . -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ - -/* - Do not link plumed directly but rather do it at runtime -*/ -#define __PLUMED_WRAPPER_LINK_RUNTIME 1 - -/* - Make sure the inline C++ interface is not included here. - Should not be necessary, but it doesn't hurt. -*/ -#define __PLUMED_WRAPPER_CXX 0 - -/* - Tell Plumed.h to emit the whole implementation -*/ -#define __PLUMED_WRAPPER_IMPLEMENTATION 1 - -/* - Emit fortran wrappers -*/ -#define __PLUMED_WRAPPER_FORTRAN 1 - -#include "Plumed.h" diff --git a/src/USER-PLUMED/Plumed.h b/src/USER-PLUMED/Plumed.h deleted file mode 100644 index 826bed4af6..0000000000 --- a/src/USER-PLUMED/Plumed.h +++ /dev/null @@ -1,577 +0,0 @@ -/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Copyright (c) 2011-2018 The plumed team - (see the PEOPLE file at the root of the distribution for a list of names) - - See http://www.plumed.org for more information. - - This file is part of plumed, version 2. - - plumed is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - plumed is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with plumed. If not, see . -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ -#ifndef __PLUMED_wrapper_Plumed_h -#define __PLUMED_wrapper_Plumed_h - -/** -\page ReferencePlumedH Reference for interfacing MD codes with PLUMED - - Plumed.h and Plumed.c contain the external plumed interface, which is used to - integrate it with MD engines. This interface is very general, and is expected - not to change across plumed versions. Plumed.c also implements a dummy version - of the interface, so as to allow a code to be fully linked even if the plumed - library is not available yet. These files could be directly included in the official - host MD distribution. In this manner, it will be sufficient to link the plumed - library at link time (on all systems) or directly at runtime (on system where - dynamic loading is enabled) to include plumed features. - - Why is Plumed.c written in C and not C++? The reason is that the resulting Plumed.o - needs to be linked with the host MD code immediately (whereas the rest of plumed - could be linked a posteriori). Imagine the MD code is written in FORTRAN: when we - link the Plumed.o file we would like not to need any C++ library linked. In this - manner, we do not need to know which C++ compiler will be used to compile plumed. - The C++ library is only linked to the "rest" of plumed, which actually use it. - Anyway, Plumed.c is written in such a manner to allow its compilation also in C++ - (C++ is a bit stricter than C; compatibility is checked when PlumedStatic.cpp, - which basically includes Plumed.c, is compiled with the C++ compiler). This will - allow e.g. MD codes written in C++ to just incorporate Plumed.c (maybe renamed into - Plumed.cpp), without the need of configuring a plain C compiler. - - Plumed interface can be used from C, C++ and FORTRAN. Everything concerning plumed - is hidden inside a single object type, which is described in C by a structure - (struct \ref plumed), in C++ by a class (PLMD::Plumed) and in FORTRAN by a - fixed-length string (CHARACTER(LEN=32)). Obviously C++ can use both struct - and class interfaces, but the first should be preferred. The reference interface - is the C one, whereas FORTRAN and C++ interfaces are implemented as wrappers - around it. - - In the C++ interface, all the routines are implemented as methods of PLMD::Plumed. - In the C and FORTRAN interfaces, all the routines are named plumed_*, to - avoid potential name clashes. Notice that the entire plumed library - is implemented in C++, and it is hidden inside the PLMD namespace. - If the used C++ compiler supports C++11, PLMD::Plumed object defines move semantics - so as to be usable in STL containers. That is, you can declare a std::vector. - - Handlers to the plumed object can be converted among different representations, - to allow inter-operability among languages. In C, there are tools to convert - to/from FORTRAN, whereas in C++ there are tools to convert to/from FORTRAN and C. - - These handlers only contain a pointer to the real structure, so that - when a plumed object is brought from one language to another, - it brings a reference to the same environment. - - Moreover, to simplify life in all cases where a single Plumed object is - required for the entire simulation (which covers most of the practical - applications with conventional MD codes) it is possible to take advantage - of a global interface, which is implicitly referring to a unique global instance. - The global object should still be initialized and finalized properly. - - The basic method to send a message to plumed is -\verbatim - (C) plumed_cmd - (C++) PLMD::Plumed::cmd - (FORTRAN) PLUMED_F_CMD -\endverbatim - - To initialize a plumed object, use: -\verbatim - (C) plumed_create - (C++) (constructor of PLMD::Plumed) - (FORTRAN) PLUMED_F_CREATE -\endverbatim - - To finalize it, use -\verbatim - (C) plumed_finalize - (C++) (destructor of PLMD::Plumed) - (FORTRAN) PLUMED_F_FINALIZE -\endverbatim - - To access to the global-object, use -\verbatim - (C) plumed_gcreate, plumed_gfinalize, plumed_gcmd - (C++) PLMD::Plumed::gcreate, PLMD::Plumed::gfinalize, PLMD::Plumed::gcmd - (FORTRAN) PLUMED_F_GCREATE, PLUMED_F_GFINALIZE, PLUMED_F_GCMD -\endverbatim - - To check if the global object has been initialized, use -\verbatim - (C) plumed_ginitialized - (C++) PLMD::Plumed::ginitialized - (FORTRAN) PLUMED_F_GINITIALIZED -\endverbatim - - To check if plumed library is available (this is useful for runtime linking), use -\verbatim - (C) plumed_installed - (C++) PLMD::Plumed::installed - (FORTRAN) PLUMED_F_INSTALLED -\endverbatim - - To convert handlers use -\verbatim - (C) plumed_c2f (C to FORTRAN) - (C) plumed_f2c (FORTRAN to C) - (C++) Plumed(plumed) constructor (C to C++) - (C++) operator plumed() cast (C++ to C) - (C++) Plumed(char*) constructor (FORTRAN to C++) - (C++) toFortran(char*) (C++ to FORTRAN) -\endverbatim - -\verbatim - FORTRAN interface - SUBROUTINE PLUMED_F_INSTALLED(i) - INTEGER, INTENT(OUT) :: i - SUBROUTINE PLUMED_F_GINITIALIZED(i) - INTEGER, INTENT(OUT) :: i - SUBROUTINE PLUMED_F_GCREATE() - SUBROUTINE PLUMED_F_GCMD(key,val) - CHARACTER(LEN=*), INTENT(IN) :: key - UNSPECIFIED_TYPE, INTENT(INOUT) :: val(*) - SUBROUTINE PLUMED_F_GFINALIZE() - SUBROUTINE PLUMED_F_GLOBAL(p) - CHARACTER(LEN=32), INTENT(OUT) :: p - SUBROUTINE PLUMED_F_CREATE(p) - CHARACTER(LEN=32), INTENT(OUT) :: p - SUBROUTINE PLUMED_F_CMD(p,key,val) - CHARACTER(LEN=32), INTENT(IN) :: p - CHARACTER(LEN=*), INTENT(IN) :: key - UNSPECIFIED_TYPE, INTENT(INOUT) :: val(*) - SUBROUTINE PLUMED_F_FINALIZE(p) - CHARACTER(LEN=32), INTENT(IN) :: p -\endverbatim - - The main routine is "cmd", which accepts two arguments: - key is a string containing the name of the command - val is the argument. it is declared const so as to use allow passing const objects, but in practice plumed - is going to modify val in several cases (using a const_cast). - In some cases val can be omitted: just pass a NULL pointer (in C++, val is optional and can be omitted). - The set of possible keys is the real API of the plumed library, and will be expanded with time. - New commands will be added, but backward compatibility will be retained as long as possible. - - To pass plumed a callback function use the following syntax (not available in FORTRAN yet) -\verbatim - plumed_function_holder ff; - ff.p=your_function; - plumed_cmd(plumed,"xxxx",&ff); -\endverbatim - (this is passing the your_function() function to the "xxxx" command) -*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Generic function pointer */ -typedef void (*plumed_function_pointer)(void); - -/** - \brief Holder for function pointer. - - To pass plumed a callback function use the following syntax: -\verbatim - plumed_function_holder ff; - ff.p=your_function; - plumed_cmd(plumed,"xxxx",&ff); -\endverbatim - (this is going to pass the your_function() function to the "xxxx" command) -*/ - -typedef struct { - plumed_function_pointer p; -} plumed_function_holder; - -/** - \brief Main plumed object - - This is an object containing a Plumed instance, which should be used in - the MD engine. It should first be initialized with plumed_create(), - then it communicates with the MD engine using plumed_cmd(). Finally, - before the termination, it should be deallocated with plumed_finalize(). - Its interface is very simple and general, and is expected - not to change across plumed versions. See \ref ReferencePlumedH. -*/ -typedef struct { - /** - \private - \brief Void pointer holding the real PlumedMain structure - */ - void*p; -} plumed; - -/** \relates plumed - \brief Constructor - - \return The constructed plumed object -*/ -plumed plumed_create(void); - -/** \relates plumed - \brief Tells p to execute a command - - \param p The plumed object on which command is acting - \param key The name of the command to be executed - \param val The argument. It is declared as const to allow calls like plumed_cmd(p,"A","B"), - but for some choice of key it can change the content -*/ -void plumed_cmd(plumed p,const char*key,const void*val); - -/** \relates plumed - \brief Destructor - - \param p The plumed object to be deallocated -*/ -void plumed_finalize(plumed p); - -/** \relates plumed - \brief Check if plumed is installed (for runtime binding) - - \return 1 if plumed is installed, 0 otherwise -*/ -int plumed_installed(void); - -/** \relates plumed - \brief Retrieves an handler to the global structure. -*/ -plumed plumed_global(void); - -/** \relates plumed - \brief Check if the global interface has been initialized - - \return 1 if plumed has been initialized, 0 otherwise -*/ -int plumed_ginitialized(void); - -/* global C interface, working on a global object */ - -/** \relates plumed - \brief Constructor for the global interface. - - \note Equivalent to plumed_create(), but initialize the static global plumed object -*/ -void plumed_gcreate(void); - -/** \relates plumed - \brief Tells to the global interface to execute a command. - - \param key The name of the command to be executed - \param val The argument. It is declared as const to allow calls like plumed_gcmd("A","B"), - but for some choice of key it can change the content - - \note Equivalent to plumed_cmd(), but acting on the global plumed object. - It thus does not require the plumed object to be specified. -*/ -void plumed_gcmd(const char* key,const void* val); - -/** \relates plumed - \brief Destructor for the global interface. - - \note Equivalent to plumed_finalize(), but acting on the global plumed object. - It thus does not require the plumed object to be specified. -*/ -void plumed_gfinalize(void); - -/* routines to convert char handler from/to plumed objects */ - -/** \related plumed - \brief Converts a C handler to a FORTRAN handler - - \param p The C handler - \param c The FORTRAN handler (a char[32]) - - This function can be used to convert a plumed object created in C to - a plumed handler that can be used in FORTRAN. -\verbatim -#include -int main(int argc,char*argv[]){ - plumed p; - p=plumed_create(); - char fortran_handler[32]; - plumed_c2f(p,fortran_handler); - printf("DEBUG: this is a string representation for the plumed handler: %s\n",fortran_handler); - fortran_routine(fortran_handler); - plumed_finalize(p); - return 0; -} -\endverbatim - Here `fortran_routine` is a routine implemented in FORTRAN that manipulates the - fortran_handler. -*/ -void plumed_c2f(plumed p,char* c); - -/** \related plumed - \brief Converts a FORTRAN handler to a C handler - \param c The FORTRAN handler (a char[32]) - \return The C handler - - This function can be used to convert a plumed object created in FORTRAN - to a plumed handler that can be used in C. -\verbatim -void c_routine(char handler[32]){ - plumed p; - p=plumed_f2c(handler); - plumed_cmd(p,"init",NULL); -} -\endverbatim - Here `c_routine` is a C function that can be called from FORTRAN - and interact with the provided plumed handler. -*/ -plumed plumed_f2c(const char* c); - -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus - -/* this is to include the NULL pointer */ -#include - -/* C++ interface is hidden in PLMD namespace (same as plumed library) */ -namespace PLMD { - -/** - C++ wrapper for \ref plumed. - - This class provides a C++ interface to PLUMED. -*/ - -class Plumed { - /** - C structure. - */ - plumed main; - /** - keeps track if the object was created from scratch using - the defaults destructor (reference=false) or if it was imported - from C or FORTRAN (reference=true). In the latter case, the - plumed_finalize() method is not called when destructing the object, - since it is expected to be finalized in the C/FORTRAN code - */ - bool reference; -public: - /** - Check if plumed is installed (for runtime binding) - \return true if plumed is installed, false otherwise - \note Equivalent to plumed_installed() but returns a bool - */ - static bool installed(); - /** - Check if global-plumed has been initialized - \return true if global plumed object (see global()) is initialized (i.e. if gcreate() has been - called), false otherwise. - \note Equivalent to plumed_ginitialized() but returns a bool - */ - static bool ginitialized(); - /** - Initialize global-plumed. - \note Equivalent to plumed_gcreate() - */ - static void gcreate(); - /** - Send a command to global-plumed - \param key The name of the command to be executed - \param val The argument. It is declared as const to allow calls like gcmd("A","B"), - but for some choice of key it can change the content - \note Equivalent to plumed_gcmd() - */ - static void gcmd(const char* key,const void* val); - /** - Finalize global-plumed - */ - static void gfinalize(); - /** - Returns the Plumed global object - \return The Plumed global object - */ - static Plumed global(); - /** - Constructor. - \note Performs the same task a plumed_create() - */ - Plumed(); - /** - Clone a Plumed object from a FORTRAN char* handler - \param c The FORTRAN handler (a char[32]). - - \attention The Plumed object created in this manner - will not finalize the corresponding plumed structure. - It is expected that the FORTRAN code calls plumed_c_finalize for it - */ -// to have maximum portability of this file I do not use the explicit keyword here -// I thus add a suppress command for cppcheck -// cppcheck-suppress noExplicitConstructor - Plumed(const char*c); - /** - Clone a Plumed object from a C plumed structure - \param p The C plumed structure. - - \attention The Plumed object created in this manner - will not finalize the corresponding plumed structure. - It is expected that the C code calls plumed_finalize for it - */ -// to have maximum portability of this file I do not use the explicit keyword here -// I thus add a suppress command for cppcheck -// cppcheck-suppress noExplicitConstructor - Plumed(plumed p); -private: - /** Copy constructor is disabled (private and unimplemented) - The problem here is that after copying it will not be clear who is - going to finalize the corresponding plumed structure. - */ - Plumed(const Plumed&); - /** Assignment operator is disabled (private and unimplemented) - The problem here is that after copying it will not be clear who is - going to finalize the corresponding plumed structure. - */ - Plumed&operator=(const Plumed&); -public: - /* - PLUMED 2.4 requires a C++11 compiler. - Anyway, since Plumed.h file might be redistributed with other codes - and it should be possible to combine it with earlier PLUMED versions, - we here explicitly check if C+11 is available before enabling move semantics. - This could still create problems if a compiler 'cheats', setting __cplusplus > 199711L - but not supporting move semantics. Hopefully will not happen! - */ -#if __cplusplus > 199711L - /** Move constructor. - Only if move semantics is enabled. - It allows storing PLMD::Plumed objects in STL containers. - */ - Plumed(Plumed&&); - /** Move assignment. - Only if move semantics is enabled. - */ - Plumed& operator=(Plumed&&); -#endif - /** - Retrieve the C plumed structure for this object - */ - operator plumed()const; - /** - Retrieve a FORTRAN handler for this object - \param c The FORTRAN handler (a char[32]). - */ - void toFortran(char*c)const; - /** - Send a command to this plumed object - \param key The name of the command to be executed - \param val The argument. It is declared as const to allow calls like p.cmd("A","B"), - but for some choice of key it can change the content - \note Equivalent to plumed_cmd() - */ - void cmd(const char*key,const void*val=NULL); - /** - Destructor - - Destructor is virtual so as to allow correct inheritance from Plumed object. - To avoid linking problems with g++, I specify "inline" also here (in principle - it should be enough to specify it down in the definition of the function, but - for some reason that I do not understand g++ does not inline it properly in that - case and complains when Plumed.h is included but Plumed.o is not linked. Anyway, the - way it is done here seems to work properly). - */ - inline virtual ~Plumed(); -}; - -/* All methods are inlined so as to avoid the compilation of an extra c++ file */ - -inline -bool Plumed::installed() { - return plumed_installed(); -} - -inline -Plumed::Plumed(): - main(plumed_create()), - reference(false) -{} - -inline -Plumed::Plumed(const char*c): - main(plumed_f2c(c)), - reference(true) -{} - -inline -Plumed::Plumed(plumed p): - main(p), - reference(true) -{} - -#if __cplusplus > 199711L -inline -Plumed::Plumed(Plumed&& p): - main(p.main), - reference(p.reference) -{} - -inline -Plumed& Plumed::operator=(Plumed&& p) { - main=p.main; - reference=p.reference; - return *this; -} -#endif - -inline -Plumed::operator plumed()const { - return main; -} - -inline -void Plumed::toFortran(char*c)const { - plumed_c2f(main,c); -} - -inline -void Plumed::cmd(const char*key,const void*val) { - plumed_cmd(main,key,val); -} - -inline -Plumed::~Plumed() { - if(!reference)plumed_finalize(main); -} - -inline -bool Plumed::ginitialized() { - return plumed_ginitialized(); -} - -inline -void Plumed::gcreate() { - plumed_gcreate(); -} - -inline -void Plumed::gcmd(const char* key,const void* val) { - plumed_gcmd(key,val); -} - -inline -void Plumed::gfinalize() { - plumed_gfinalize(); -} - -inline -Plumed Plumed::global() { - return plumed_global(); -} - -} - -#endif - - -#endif From a662afe97084c4bf0061d2e6ff1793160a87da9b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:37:33 -0400 Subject: [PATCH 26/72] fully integrate USER-PLUMED package into conventional build --- src/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Makefile b/src/Makefile index 7d31c81c75..b40c98cd76 100644 --- a/src/Makefile +++ b/src/Makefile @@ -61,21 +61,22 @@ PACKUSER = user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \ user-diffraction user-dpd user-drude user-eff user-fep user-h5md \ user-intel user-lb user-manifold user-meamc user-meso \ user-mgpt user-misc user-mofff user-molfile \ - user-netcdf user-omp user-phonon user-ptm user-qmmm user-qtb \ - user-quip user-reaxc user-scafacos user-smd user-smtbq \ + user-netcdf user-omp user-phonon user-plumed user-ptm user-qmmm \ + user-qtb user-quip user-reaxc user-scafacos user-smd user-smtbq \ user-sph user-tally user-uef user-vtk PACKLIB = compress gpu kim kokkos latte meam message mpiio mscg poems \ python reax voronoi \ user-atc user-awpmd user-colvars user-h5md user-lb user-molfile \ - user-netcdf user-qmmm user-quip user-scafacos user-smd user-vtk + user-netcdf user-plumed user-qmmm user-quip user-scafacos \ + user-smd user-vtk PACKSYS = compress mpiio python user-lb PACKINT = gpu kokkos meam message poems reax user-atc user-awpmd user-colvars PACKEXT = kim latte mscg voronoi \ - user-h5md user-molfile user-netcdf user-qmmm user-quip \ + user-h5md user-molfile user-netcdf user-plumed user-qmmm user-quip \ user-smd user-vtk PACKALL = $(PACKAGE) $(PACKUSER) From 360aca581cba306f3d01db66ecb9fdeefe37292b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:56:49 -0400 Subject: [PATCH 27/72] remove last reference to voro++ --- lib/plumed/Install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index eab78a5b4a..6613add4f3 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Install.py tool to download, unpack, build, and link to the Voro++ library +# Install.py tool to download, unpack, build, and link to the plumed2 library # used to automate the steps described in the README file in this dir from __future__ import print_function From bee2cb96fa473c1afe0a51303b1a459bdde9af9d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 22:18:27 -0400 Subject: [PATCH 28/72] remove references to Plumed.cpp and Plumed.h --- src/.gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/.gitignore b/src/.gitignore index 9a4871d250..74b43cd3d7 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -61,8 +61,6 @@ /fix_colvars.h /fix_plumed.cpp /fix_plumed.h -/Plumed.cpp -/Plumed.h /dump_molfile.cpp /dump_molfile.h /molfile_interface.cpp From 25b425dbb017010eb908d71c016e6d5a1aec940d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 22:21:35 -0400 Subject: [PATCH 29/72] no need to import the PLMD namespace globally --- src/USER-PLUMED/fix_plumed.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 00a899724b..d43c39bf8d 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -40,7 +40,6 @@ #include "Plumed.h" using namespace LAMMPS_NS; -using namespace PLMD; using namespace FixConst; #define INVOKED_SCALAR 1 From 079134255d985807117e437865db64d02534430f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 29 Oct 2018 03:49:25 -0400 Subject: [PATCH 30/72] make sure class member "list" is initialized to NULL in constructor --- src/compute_adf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compute_adf.cpp b/src/compute_adf.cpp index 6e6239f076..e339db786b 100644 --- a/src/compute_adf.cpp +++ b/src/compute_adf.cpp @@ -51,7 +51,7 @@ ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : iatomflag(NULL), jatomflag(NULL), rcutinnerj(NULL), rcutouterj(NULL), katomflag(NULL), rcutinnerk(NULL), rcutouterk(NULL), - maxjatom(NULL), numjatom(NULL), neighjatom(NULL), + list(NULL), maxjatom(NULL), numjatom(NULL), neighjatom(NULL), maxkatom(NULL), numkatom(NULL), neighkatom(NULL), maxjkatom(NULL), numjkatom(NULL), neighjkatom(NULL), bothjkatom(NULL) { From 283096d1d5c5f1e5d11392cff986b19bc016d2a1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 29 Oct 2018 03:50:55 -0400 Subject: [PATCH 31/72] update .gitignore --- lib/plumed/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/plumed/.gitignore b/lib/plumed/.gitignore index f1a18f99d0..c17bb18bf0 100644 --- a/lib/plumed/.gitignore +++ b/lib/plumed/.gitignore @@ -1,2 +1,3 @@ -# files to ignore /plumed2* +/includelink +/liblink From bcc7a4c32fc1fd29d855d68cda84eed7f9e3c095 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 29 Oct 2018 06:36:47 -0600 Subject: [PATCH 32/72] cmake: add PLUMED include dir --- cmake/CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index ebcd34f966..d46567b277 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -538,14 +538,17 @@ if(PKG_USER-PLUMED) CONFIGURE_COMMAND /configure --prefix= $<$:--with-pic> ) ExternalProject_get_property(plumed_build INSTALL_DIR) - set(PLUMED_BUILD_DIR ${INSTALL_DIR}) + set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) list(APPEND LAMMPS_DEPS plumed_build) - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_BUILD_DIR}/lib/libplumed.so) + list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so) + set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include/plumed/wrapper") else() find_package(PkgConfig REQUIRED) pkg_check_modules(PLUMED plumed REQUIRED) list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LDFLAGS}) + set(PLUMED_INCLUDE_DIRS "${PLUMED_INCLUDE_DIRS}/plumed/wrapper") endif() + include_directories(${PLUMED_INCLUDE_DIRS}) endif() if(PKG_USER-MOLFILE) From 044507640f6fa0ff044f3192a1f1efe5a0688471 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 29 Oct 2018 06:52:19 -0600 Subject: [PATCH 33/72] include Plumed.h with full path --- cmake/CMakeLists.txt | 3 +-- lib/plumed/Install.py | 2 +- src/USER-PLUMED/fix_plumed.cpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index d46567b277..89eb9df257 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -541,12 +541,11 @@ if(PKG_USER-PLUMED) set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) list(APPEND LAMMPS_DEPS plumed_build) list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so) - set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include/plumed/wrapper") + set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include") else() find_package(PkgConfig REQUIRED) pkg_check_modules(PLUMED plumed REQUIRED) list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LDFLAGS}) - set(PLUMED_INCLUDE_DIRS "${PLUMED_INCLUDE_DIRS}/plumed/wrapper") endif() include_directories(${PLUMED_INCLUDE_DIRS}) endif() diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 6613add4f3..fc8fa509c1 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -163,7 +163,7 @@ if linkflag: os.remove("includelink") if os.path.isfile("liblink") or os.path.islink("liblink"): os.remove("liblink") - cmd = 'ln -s "%s/plumed2/include/plumed/wrapper" includelink' % homepath + cmd = 'ln -s "%s/plumed2/include" includelink' % homepath subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) cmd = 'ln -s "%s/plumed2/lib" liblink' % homepath subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index d43c39bf8d..f0582b184a 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -37,7 +37,7 @@ */ #define __PLUMED_WRAPPER_FORTRAN 1 -#include "Plumed.h" +#include "plumed/wrapper/Plumed.h" using namespace LAMMPS_NS; using namespace FixConst; From 1bae30c295527f9cba86fd1a737653865a943af9 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 29 Oct 2018 06:57:46 -0600 Subject: [PATCH 34/72] liblammps.pc: add some more documentation --- cmake/pkgconfig/liblammps.pc.in | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/cmake/pkgconfig/liblammps.pc.in b/cmake/pkgconfig/liblammps.pc.in index 7850972f3b..a8710ca224 100644 --- a/cmake/pkgconfig/liblammps.pc.in +++ b/cmake/pkgconfig/liblammps.pc.in @@ -1,9 +1,29 @@ # pkg-config file for lammps # https://people.freedesktop.org/~dbn/pkg-config-guide.html -# Usage: cc `pkg-config --cflags --libs liblammps` -o myapp myapp.c -# after you added @CMAKE_INSTALL_FULL_LIBDIR@/pkg-config to PKG_CONFIG_PATH, + +# Add the directory where lammps.pc got installed to your PKG_CONFIG_PATH # e.g. export PKG_CONFIG_PATH=@CMAKE_INSTALL_FULL_LIBDIR@/pkgconfig +# Use this on commandline with: +# c++ `pkg-config --cflags --libs lammps` -o myapp myapp.cpp + +# Use this in a Makefile: +# myapp: myapp.cpp +# $(CC) `pkg-config --cflags --libs lammps` -o $@ $< + +# Use this in autotools: +# configure.ac: +# PKG_CHECK_MODULES([LAMMPS], [lammps]) +# Makefile.am: +# myapp_CFLAGS = $(LAMMPS_CFLAGS) +# myapp_LDADD = $(LAMMPS_LIBS) + +# Use this in CMake: +# CMakeLists.txt: +# find_package(PkgConfig) +# pkg_check_modules(LAMMPS IMPORTED_TARGET lammps) +# target_link_libraries( PkgConfig::LAMMPS) + prefix=@CMAKE_INSTALL_PREFIX@ libdir=@CMAKE_INSTALL_FULL_LIBDIR@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ From c838a9fd48dff7d94b520c4558b78ce4c79c2ad7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 30 Oct 2018 00:33:51 -0400 Subject: [PATCH 35/72] use forward declarations for better namespace hygiene --- src/VORONOI/compute_voronoi_atom.cpp | 1 + src/VORONOI/compute_voronoi_atom.h | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/VORONOI/compute_voronoi_atom.cpp b/src/VORONOI/compute_voronoi_atom.cpp index ea6158bfa2..621e29ff4b 100644 --- a/src/VORONOI/compute_voronoi_atom.cpp +++ b/src/VORONOI/compute_voronoi_atom.cpp @@ -19,6 +19,7 @@ #include #include #include +#include "voro++.hh" #include "compute_voronoi_atom.h" #include "atom.h" #include "group.h" diff --git a/src/VORONOI/compute_voronoi_atom.h b/src/VORONOI/compute_voronoi_atom.h index d19ce49bd0..5f2c36e67e 100644 --- a/src/VORONOI/compute_voronoi_atom.h +++ b/src/VORONOI/compute_voronoi_atom.h @@ -21,7 +21,12 @@ ComputeStyle(voronoi/atom,ComputeVoronoi) #define LMP_COMPUTE_VORONOI_H #include "compute.h" -#include "voro++.hh" + +namespace voro { + class container; + class container_poly; + class voronoicell_neighbor; +} namespace LAMMPS_NS { From e3b89b60dc424759267cdef92d272f775106fcc2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 30 Oct 2018 20:43:20 -0400 Subject: [PATCH 36/72] add checksum support for downloaded tar archives. upgrade to v2.4.3 --- lib/plumed/Install.py | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 6613add4f3..73c4e24bae 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -4,34 +4,40 @@ # used to automate the steps described in the README file in this dir from __future__ import print_function -import sys,os,re,subprocess +import sys,os,re,subprocess,hashlib # help message help = """ Syntax from src dir: make lib-plumed args="-b" - or: make lib-plumed args="-b -v 2.4.2" -Syntax from lib dir: python Install.py -b -v 2.4.2 + or: make lib-plumed args="-b -v 2.4.3" + or: make lib-plumed args="-p /usr/local/plumed2-2.4.3" + +Syntax from lib dir: python Install.py -b -v 2.4.3 or: python Install.py -b - or: python Install.py -p /usr/local/plumed-2.4.2 + or: python Install.py -p /usr/local/plumed2-2.4.3 specify one or more options, order does not matter -b = download and build the plumed2 library -p = specify folder of existing plumed2 installation - -v = set version of plumed2 to download and build (default: 2.4.2) + -v = set version of plumed2 to download and build (default: 2.4.3) Example: make lib-plumed args="-b" # download/build in lib/plumed/plumed2 -make lib-plumed args="-p $HOME/plumed-2.4.2" # use existing Plumed2 installation in $HOME/plumed-2.4.2 +make lib-plumed args="-p $HOME/plumed-2.4.3" # use existing Plumed2 installation in $HOME/plumed-2.4.3 """ # settings -version = "2.4.2" +version = "2.4.3" -# Add known checksums for different PLUMED versions and use them to validate the download +# known checksums for different PLUMED versions. used to validate the download. +checksums = { \ + '2.4.2' : '0f66f24b4c763ae8b2f39574113e9935', \ + '2.4.3' : 'dc38de0ffd59d13950d8f1ef1ce05574', \ + } # print error message or help def error(str=None): @@ -85,7 +91,16 @@ def geturl(url,fname): error("Failed to download source code with 'curl' or 'wget'") return -# Here add function to check fsum +def checkmd5sum(md5sum,fname): + with open(fname,'rb') as fh: + m = hashlib.md5() + while True: + data = fh.read(81920) + if not data: + break + m.update(data) + fh.close() + return m.hexdigest() == md5sum # parse args @@ -134,9 +149,15 @@ if buildflag: url = "https://github.com/plumed/plumed2/archive/v%s.tar.gz" % version filename = "v%s.tar.gz" %version print("Downloading plumed ...") - geturl(url,filename) + geturl(url,filename) - print("Unpacking plumed tarball ...") + # verify downloaded archive integrity via md5 checksum, if known. + if version in checksums: + if not checkmd5sum(checksums[version],filename): + error("Checksum for plumed2 library does not match") + + + print("Unpacking plumed2 tarball ...") if os.path.exists("%s/plumed2-%s" % (homepath,version)): cmd = 'rm -rf "%s/plumed2-%s"' % (homepath,version) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) From 3faecc4d2817d25be4c4015d88a0b315ea632e2c Mon Sep 17 00:00:00 2001 From: jrgissing Date: Tue, 30 Oct 2018 22:11:52 -0600 Subject: [PATCH 37/72] add option to update all atoms' atomic charges option to update all atomic charges, even when edge atoms are defined --- doc/src/fix_bond_react.txt | 25 ++++++++++++++++++++++--- src/USER-MISC/fix_bond_react.cpp | 12 ++++++++++-- src/USER-MISC/fix_bond_react.h | 1 + 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index 8e7cb1bdae..f806da3324 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -41,7 +41,10 @@ react = mandatory argument indicating new reaction specification :l fraction = initiate reaction with this probability if otherwise eligible seed = random number seed (positive integer) {stabilize_steps} value = timesteps - timesteps = number of timesteps to apply internally created nve/limit.html :pre + timesteps = number of timesteps to apply internally created nve/limit.html + {update_edges} value = {none} or {charges} :l + none = do not update topology near the edges of reaction templates + charges = update atomic charges of all atoms in reaction templates :pre :ule [Examples:] @@ -155,7 +158,17 @@ Some atoms in the pre-reacted template that are not reacting may have missing topology with respect to the simulation. For example, the pre-reacted template may contain an atom that would connect to the rest of a long polymer chain. These are referred to as edge atoms, and -are also specified in the map file. +are also specified in the map file. When the pre-reaction template +contains edge atoms, not all atoms, bonds, charges, etc. specified in +the reaction templates will be updated. Specifically, topology that +involves only atoms that are 'too near' to template edges will not be +updated. The definition of 'too near the edge' depends on which +interactions are defined in the simulation. If the simulation has +defined dihedrals, atoms within two bonds of edge atoms are considered +'too near the edge.' If the simulation defines angles, but not +dihedrals, atoms within one bond of edge atoms are considered 'too +near the edge.' If just bonds are defined, only edge atoms are +considered 'too near the edge.' Note that some care must be taken when a building a molecule template for a given simulation. All atom types in the pre-reacted template @@ -255,6 +268,12 @@ The {stabilize_steps} keyword allows for the specification of how many timesteps a reaction site is stabilized before being returned to the overall system thermostat. +The {update_edges} keyword can increase the number of atoms whose +atomic charges are updated, when the pre-reaction template contains +edge atoms. When the value is set to 'charges,' all atoms' atomic +charges are updated to those specified by the post-reaction template, +including atoms near the edge of reaction templates. + In order to produce the most physical behavior, this 'reaction site equilibration time' should be tuned to be as small as possible while retaining stability for a given system or reaction step. After a @@ -323,7 +342,7 @@ bond/break"_fix_bond_break.html, "fix bond/swap"_fix_bond_swap.html, [Default:] -The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60 +The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60, update_edges = none :line diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index b30f1b36c6..705bb8ff70 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -163,6 +163,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(seed,nreacts,"bond/react:seed"); memory->create(limit_duration,nreacts,"bond/react:limit_duration"); memory->create(stabilize_steps_flag,nreacts,"bond/react:stabilize_steps_flag"); + memory->create(update_edges_flag,nreacts,"bond/react:update_edges_flag"); memory->create(iatomtype,nreacts,"bond/react:iatomtype"); memory->create(jatomtype,nreacts,"bond/react:jatomtype"); memory->create(ibonding,nreacts,"bond/react:ibonding"); @@ -178,6 +179,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : fraction[i] = 1; seed[i] = 12345; stabilize_steps_flag[i] = 0; + update_edges_flag[i] = 0; // set default limit duration to 60 timesteps limit_duration[i] = 60; reaction_count[i] = 0; @@ -249,6 +251,11 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : limit_duration[rxn] = force->numeric(FLERR,arg[iarg+1]); stabilize_steps_flag[rxn] = 1; iarg += 2; + } else if (strcmp(arg[iarg],"update_edges") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/react command: " + "'update_edges' has too few arguments"); + if (strcmp(arg[iarg+1],"charges") == 0) update_edges_flag[rxn] = 1; + iarg += 2; } else error->all(FLERR,"Illegal fix bond/react command: unknown keyword"); } } @@ -379,6 +386,7 @@ FixBondReact::~FixBondReact() memory->destroy(seed); memory->destroy(limit_duration); memory->destroy(stabilize_steps_flag); + memory->destroy(update_edges_flag); memory->destroy(iatomtype); memory->destroy(jatomtype); @@ -2022,13 +2030,13 @@ void FixBondReact::update_everything() } // update charges and types of landlocked atoms - // here, add check for charge instead of requiring it for (int i = 0; i < update_num_mega; i++) { rxnID = update_mega_glove[0][i]; twomol = atom->molecules[reacted_mol[rxnID]]; for (int j = 0; j < twomol->natoms; j++) { int jj = equivalences[j][1][rxnID]-1; - if (landlocked_atoms[j][rxnID] == 1 && atom->map(update_mega_glove[jj+1][i]) >= 0 && + if ((landlocked_atoms[j][rxnID] == 1 || update_edges_flag[rxnID] == 1) && + atom->map(update_mega_glove[jj+1][i]) >= 0 && atom->map(update_mega_glove[jj+1][i]) < nlocal) { type[atom->map(update_mega_glove[jj+1][i])] = twomol->type[j]; if (twomol->qflag && atom->q_flag) { diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h index 08756f8131..b960ec8e73 100644 --- a/src/USER-MISC/fix_bond_react.h +++ b/src/USER-MISC/fix_bond_react.h @@ -58,6 +58,7 @@ class FixBondReact : public Fix { tagint lastcheck; int stabilization_flag; int *stabilize_steps_flag; + int *update_edges_flag; int status; int *groupbits; From 2a5cd1d31e4da357c863032a1073b0c442bc4633 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Oct 2018 00:16:44 -0400 Subject: [PATCH 38/72] remove debug output --- lib/latte/Install.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/latte/Install.py b/lib/latte/Install.py index 3b211858dd..1e1f3040c2 100644 --- a/lib/latte/Install.py +++ b/lib/latte/Install.py @@ -78,7 +78,6 @@ def geturl(url,fname): if which('curl') != None: cmd = 'curl -L -o "%s" %s' % (fname,url) - print(cmd) try: subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) success = True @@ -87,7 +86,6 @@ def geturl(url,fname): if not success and which('wget') != None: cmd = 'wget -O "%s" %s' % (fname,url) - print(cmd) try: subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) success = True From 446b05ebc10900526ae034c13020ce3020e2a7f0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Oct 2018 00:17:17 -0400 Subject: [PATCH 39/72] silence warning about initialization order --- src/compute_angle_local.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compute_angle_local.cpp b/src/compute_angle_local.cpp index 95faad54ad..cf5c9e808d 100644 --- a/src/compute_angle_local.cpp +++ b/src/compute_angle_local.cpp @@ -38,7 +38,7 @@ enum{THETA,ENG,VARIABLE}; ComputeAngleLocal::ComputeAngleLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), - bstyle(NULL), vstr(NULL), vvar(NULL), tstr(NULL), vlocal(NULL), alocal(NULL) + bstyle(NULL), vvar(NULL), tstr(NULL), vstr(NULL), vlocal(NULL), alocal(NULL) { if (narg < 4) error->all(FLERR,"Illegal compute angle/local command"); From 50b99c8450ff35761cf41a856d31ebacbf51da70 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Oct 2018 00:19:06 -0400 Subject: [PATCH 40/72] silence compiler warnings about unused arguments --- src/USER-PLUMED/fix_plumed.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index f0582b184a..7c05a02335 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -262,7 +262,7 @@ void FixPlumed::min_setup(int vflag) post_force(vflag); } -void FixPlumed::post_force(int vflag) +void FixPlumed::post_force(int /* vflag */) { // Check tag is enabled if( !atom->tag_enable ) error->all(FLERR,"to run PLUMED you must have tag_enable==1"); @@ -417,7 +417,7 @@ void FixPlumed::post_force(int vflag) c_press->addstep(update->ntimestep+1); } -void FixPlumed::post_force_respa(int vflag, int ilevel, int iloop) +void FixPlumed::post_force_respa(int vflag, int ilevel, int /* iloop */) { if (ilevel == nlevels_respa-1) post_force(vflag); } From 688945a0ef62f50d3c080553781a537f526b1026 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Oct 2018 00:34:58 -0400 Subject: [PATCH 41/72] silence compiler warnings about initialization order and unused args --- src/comm_brick.cpp | 2 ++ src/compute_adf.cpp | 23 ++++++++++++----------- src/compute_bond_local.cpp | 2 +- src/compute_dihedral_local.cpp | 2 +- src/deprecated.cpp | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/comm_brick.cpp b/src/comm_brick.cpp index e96b0f38e3..bf7f3e2f8f 100644 --- a/src/comm_brick.cpp +++ b/src/comm_brick.cpp @@ -1477,8 +1477,10 @@ void CommBrick::free_multi() void *CommBrick::extract(const char *str, int &dim) { + dim = 0; if (strcmp(str,"localsendlist") == 0) { int i, iswap, isend; + dim = 1; if (!localsendlist) memory->create(localsendlist,atom->nlocal,"comm:localsendlist"); else diff --git a/src/compute_adf.cpp b/src/compute_adf.cpp index e339db786b..885a051b5b 100644 --- a/src/compute_adf.cpp +++ b/src/compute_adf.cpp @@ -46,14 +46,17 @@ enum{DEGREE, RADIAN, COSINE}; ComputeADF::ComputeADF(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), ilo(NULL), ihi(NULL), jlo(NULL), jhi(NULL), klo(NULL), khi(NULL), - iatomcount(NULL), iatomcountall(NULL), hist(NULL), histall(NULL), - iatomflag(NULL), - jatomflag(NULL), rcutinnerj(NULL), rcutouterj(NULL), - katomflag(NULL), rcutinnerk(NULL), rcutouterk(NULL), - list(NULL), maxjatom(NULL), numjatom(NULL), neighjatom(NULL), - maxkatom(NULL), numkatom(NULL), neighkatom(NULL), - maxjkatom(NULL), numjkatom(NULL), neighjkatom(NULL), bothjkatom(NULL) + rcutinnerj(NULL), rcutinnerk(NULL), + rcutouterj(NULL), rcutouterk(NULL), + list(NULL), + iatomcount(NULL), iatomcountall(NULL), iatomflag(NULL), + maxjatom(NULL), maxkatom(NULL), + numjatom(NULL), numkatom(NULL), + neighjatom(NULL),neighkatom(NULL), + jatomflag(NULL), katomflag(NULL), + maxjkatom(NULL), numjkatom(NULL), + neighjkatom(NULL), bothjkatom(NULL), delrjkatom(NULL) { int nargsperadf = 7; @@ -358,9 +361,9 @@ void ComputeADF::init_list(int /*id*/, NeighList *ptr) void ComputeADF::compute_array() { int i,j,k,m,ii,jj,jatom,katom,jk,jjj,kkk; - int inum,jnum,itype,jtype,ibin,ihisto; + int inum,jnum,itype,jtype,ibin; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; - int *ilist,*jlist,*klist,*numneigh,**firstneigh; + int *ilist,*jlist,*numneigh,**firstneigh; double factor_lj,factor_coul; double delr1[3],delr2[3],rinv1,rinv2,rinv12,cs,theta; @@ -394,11 +397,9 @@ void ComputeADF::compute_array() double **x = atom->x; int *type = atom->type; int *mask = atom->mask; - int nlocal = atom->nlocal; double *special_coul = force->special_coul; double *special_lj = force->special_lj; - int newton_pair = force->newton_pair; for (ii = 0; ii < inum; ii++) { i = ilist[ii]; diff --git a/src/compute_bond_local.cpp b/src/compute_bond_local.cpp index 6a179cf1b4..72ce2b5f8d 100644 --- a/src/compute_bond_local.cpp +++ b/src/compute_bond_local.cpp @@ -39,7 +39,7 @@ enum{DIST,VELVIB,OMEGA,ENGTRANS,ENGVIB,ENGROT,ENGPOT,FORCE,VARIABLE}; ComputeBondLocal::ComputeBondLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), - bstyle(NULL), vstr(NULL), vvar(NULL), dstr(NULL), vlocal(NULL), alocal(NULL) + bstyle(NULL), vvar(NULL), dstr(NULL), vstr(NULL), vlocal(NULL), alocal(NULL) { if (narg < 4) error->all(FLERR,"Illegal compute bond/local command"); diff --git a/src/compute_dihedral_local.cpp b/src/compute_dihedral_local.cpp index 7444630090..919081236c 100644 --- a/src/compute_dihedral_local.cpp +++ b/src/compute_dihedral_local.cpp @@ -40,7 +40,7 @@ enum{PHI,VARIABLE}; ComputeDihedralLocal::ComputeDihedralLocal(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg), - bstyle(NULL), vstr(NULL), vvar(NULL), pstr(NULL), vlocal(NULL), alocal(NULL) + bstyle(NULL), vvar(NULL), pstr(NULL), vstr(NULL), vlocal(NULL), alocal(NULL) { if (narg < 4) error->all(FLERR,"Illegal compute dihedral/local command"); diff --git a/src/deprecated.cpp b/src/deprecated.cpp index 2f2282f07c..b937482669 100644 --- a/src/deprecated.cpp +++ b/src/deprecated.cpp @@ -36,7 +36,7 @@ static void writemsg(LAMMPS *lmp, const char *msg, int abend=1) /* ---------------------------------------------------------------------- */ -void Deprecated::command(int narg, char **arg) +void Deprecated::command(int /* narg */, char ** /* arg */) { if (strcmp(input->command,"DEPRECATED") == 0) { writemsg(lmp,"\nCommand 'DEPRECATED' is a dummy command\n\n",0); From 7514838700c5d1151f76aa0528c8c4ded4d3819d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Oct 2018 04:18:08 -0400 Subject: [PATCH 42/72] put LAMMPS sources folder first in list of include directories --- cmake/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b3c0a70e4a..418bdd0dba 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -193,6 +193,8 @@ if(PKG_MEAM OR PKG_USER-H5MD OR PKG_USER-QMMM OR PKG_USER-SCAFACOS) enable_language(C) endif() +include_directories(${LAMMPS_SOURCE_DIR}) + # do MPI detection after language activation, if MPI for these language is required find_package(MPI QUIET) option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) @@ -1166,7 +1168,6 @@ set(LAMMPS_STYLE_HEADERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/styles) GenerateStyleHeaders(${LAMMPS_STYLE_HEADERS_DIR}) -include_directories(${LAMMPS_SOURCE_DIR}) include_directories(${LAMMPS_STYLE_HEADERS_DIR}) ###################################### From 5821a5ecc8e87bdd212f3d16e12e4f3e2759fc90 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Thu, 1 Nov 2018 01:04:45 -0600 Subject: [PATCH 43/72] bond/react: custom group with stabilization option --- doc/src/fix_bond_react.txt | 32 +++--- src/USER-MISC/fix_bond_react.cpp | 161 +++++++++++++++++++------------ src/USER-MISC/fix_bond_react.h | 3 + 3 files changed, 124 insertions(+), 72 deletions(-) diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index f806da3324..b5ac87327d 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -102,19 +102,27 @@ involved in any new reactions. The {xmax} value keyword should typically be set to the maximum distance that non-reacting atoms move during the simulation. -The group-ID set using the {stabilization} keyword should be a -previously unused group-ID. It cannot be specified as 'all'. The fix -bond/react command creates a "dynamic group"_group.html of this name -that includes all non-reacting atoms. This dynamic group-ID should -then be used by a subsequent system-wide time integrator such as nvt, -npt, or nve, as shown in the second example above. It is currently -necessary to place the time integration command after the fix -bond/react command due to the internal dynamic grouping performed by -fix bond/react. +The group-ID set using the {stabilization} keyword can be an existing +static group or a previously-unused group-ID. It cannot be specified +as 'all'. If the group-ID is previously unused, fix bond/react command +creates a "dynamic group"_group.html of this name that is initialized +to include all atoms. If the group-ID is that of an existing static +group, the group is converted into a dynamic group, whose atoms are +limited to those belonging to the original static group. In either +case, this dynamic group-ID should then be used by a subsequent +system-wide time integrator such as nvt, npt, or nve, as shown in the +second example above. The time integration command should be placed +after the fix bond/react command due to the internal dynamic grouping +performed by fix bond/react. By specifying an existing group, you may +thermostat non-reacting parts of your system separately. -NOTE: The internally created group currently applies to all atoms in -the system, i.e. you should generally not have a separate thermostat -which acts on the 'all' group. +NOTE: If the group-ID is an existing static group, react-group-IDs +should also be specified as this group, or a subset. + +NOTE: If the group-ID is previously unused, the internally created +group applies to all atoms in the system, i.e. you should generally +not have a separate thermostat which acts on the 'all' group, or any +other group. The following comments pertain to each {react} argument: diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index 705bb8ff70..1124d359ce 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -354,6 +354,9 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : id_fix1 = NULL; id_fix2 = NULL; + id_fix3 = NULL; + statted_id = NULL; + custom_exclude_flag = 0; } /* ---------------------------------------------------------------------- */ @@ -426,11 +429,17 @@ FixBondReact::~FixBondReact() // check nfix in case all fixes have already been deleted if (id_fix1 == NULL && modify->nfix) modify->delete_fix(id_fix1); delete [] id_fix1; + + if (custom_exclude_flag == 0) { + if (id_fix3 == NULL && modify->nfix) modify->delete_fix(id_fix3); + delete [] id_fix3; + } } if (id_fix2 == NULL && modify->nfix) modify->delete_fix(id_fix2); delete [] id_fix2; + delete [] statted_id; delete [] guess_branch; delete [] pioneer_count; } @@ -461,21 +470,20 @@ void FixBondReact::post_constructor() int ifix = modify->find_fix(id_fix2); if (ifix == -1) { - char **newarg = new char*[8]; + char **newarg = new char*[7]; newarg[0] = (char *) "bond_react_props_internal"; newarg[1] = (char *) "all"; // group ID is ignored newarg[2] = (char *) "property/atom"; newarg[3] = (char *) "i_limit_tags"; - newarg[4] = (char *) "i_statted_tags"; - newarg[5] = (char *) "i_react_tags"; - newarg[6] = (char *) "ghost"; - newarg[7] = (char *) "yes"; - modify->add_fix(8,newarg); - fix2 = modify->fix[modify->nfix-1]; + newarg[4] = (char *) "i_react_tags"; + newarg[5] = (char *) "ghost"; + newarg[6] = (char *) "yes"; + modify->add_fix(7,newarg); delete [] newarg; } // create master_group if not already existing + // NOTE: limit_tags and react_tags automaticaly intitialized to zero (unless read from restart) if (group->find(master_group) == -1) { group->find_or_create(master_group); char **newarg; @@ -489,33 +497,100 @@ void FixBondReact::post_constructor() delete [] newarg; } - // on to statted_tags (system-wide thermostat) - // intialize per-atom statted_flags to 1 - // (only if not already initialized by restart) - // NOTE: limit_tags and react_tags automaticaly intitialized to zero (unless read from restart) - if (fix2->restart_reset != 1) { - int flag; - int index = atom->find_custom("statted_tags",flag); - int *i_statted_tags = atom->ivector[index]; - - for (int i = 0; i < atom->nlocal; i++) - i_statted_tags[i] = 1; - } - if (stabilization_flag == 1) { - // create exclude_group if not already existing - if (group->find(exclude_group) == -1) { + int igroup = group->find(exclude_group); + // create exclude_group if not already existing, or use as parent group if static + if (igroup == -1 || group->dynamic[igroup] == 0) { + // create stabilization per-atom property + len = strlen("bond_react_stabilization_internal") + 1; + id_fix3 = new char[len]; + strcpy(id_fix3,"bond_react_stabilization_internal"); + + ifix = modify->find_fix(id_fix3); + if (ifix == -1) { + char **newarg = new char*[6]; + newarg[0] = (char *) "bond_react_stabilization_internal"; + newarg[1] = (char *) "all"; // group ID is ignored + newarg[2] = (char *) "property/atom"; + newarg[3] = (char *) "i_statted_tags"; + newarg[4] = (char *) "ghost"; + newarg[5] = (char *) "yes"; + modify->add_fix(6,newarg); + fix2 = modify->fix[modify->nfix-1]; + delete [] newarg; + } + + len = strlen("statted_tags") + 1; + statted_id = new char[len]; + strcpy(statted_id,"statted_tags"); + + // if static group exists, duplicate it, use duplicate as parent group + // original will be converted into dynamic per-atom property group + if (igroup != -1) { + char **newarg; + newarg = new char*[3]; + newarg[0] = (char *) "exclude_PARENT_group"; + newarg[1] = (char *) "union"; + newarg[2] = exclude_group; + group->assign(3,newarg); + delete [] newarg; + } + group->find_or_create(exclude_group); char **newarg; newarg = new char*[5]; newarg[0] = exclude_group; newarg[1] = (char *) "dynamic"; - newarg[2] = (char *) "all"; + if (igroup == -1) newarg[2] = (char *) "all"; + else newarg[2] = (char *) "exclude_PARENT_group"; newarg[3] = (char *) "property"; newarg[4] = (char *) "statted_tags"; group->assign(5,newarg); delete [] newarg; - } + + // on to statted_tags (system-wide thermostat) + // intialize per-atom statted_flags to 1 + // (only if not already initialized by restart) + if (fix2->restart_reset != 1) { + int flag; + int index = atom->find_custom("statted_tags",flag); + int *i_statted_tags = atom->ivector[index]; + + for (int i = 0; i < atom->nlocal; i++) + i_statted_tags[i] = 1; + } + } else { + // sleeping code, for future capabilities + custom_exclude_flag = 1; + // first we have to find correct fix group reference + int n = strlen("GROUP_") + strlen(exclude_group) + 1; + char *fix_group = new char[n]; + strcpy(fix_group,"GROUP_"); + strcat(fix_group,exclude_group); + int ifix = modify->find_fix(fix_group); + Fix *fix = modify->fix[ifix]; + delete [] fix_group; + + // this returns names of corresponding property + int unused; + char * idprop; + idprop = (char *) fix->extract("property",unused); + if (idprop == NULL) + error->all(FLERR,"Exclude group must be a per-atom property group"); + + len = strlen(idprop) + 1; + statted_id = new char[len]; + strcpy(statted_id,idprop); + + // intialize per-atom statted_tags to 1 + // need to correct for smooth restarts + //int flag; + //int index = atom->find_custom(statted_id,flag); + //int *i_statted_tags = atom->ivector[index]; + //for (int i = 0; i < atom->nlocal; i++) + // i_statted_tags[i] = 1; + } + // let's create a new nve/limit fix to limit newly reacted atoms len = strlen("bond_react_MASTER_nve_limit") + 1; @@ -534,40 +609,6 @@ void FixBondReact::post_constructor() fix1 = modify->fix[modify->nfix-1]; delete [] newarg; } - - } - - // currently must redefine dynamic groups so they are updated at proper time - // -> should double check as to why - - int must_redefine_groups = 1; - - if (must_redefine_groups) { - group->find_or_create(master_group); - char **newarg; - newarg = new char*[5]; - newarg[0] = master_group; - newarg[1] = (char *) "dynamic"; - newarg[2] = (char *) "all"; - newarg[3] = (char *) "property"; - newarg[4] = (char *) "limit_tags"; - group->assign(5,newarg); - delete [] newarg; - } - - if (stabilization_flag == 1) { - if (must_redefine_groups) { - group->find_or_create(exclude_group); - char **newarg; - newarg = new char*[5]; - newarg[0] = exclude_group; - newarg[1] = (char *) "dynamic"; - newarg[2] = (char *) "all"; - newarg[3] = (char *) "property"; - newarg[4] = (char *) "statted_tags"; - group->assign(5,newarg); - delete [] newarg; - } } } @@ -1812,7 +1853,7 @@ void FixBondReact::limit_bond(int limit_bond_mode) int index1 = atom->find_custom("limit_tags",flag); int *i_limit_tags = atom->ivector[index1]; - int index2 = atom->find_custom("statted_tags",flag); + int index2 = atom->find_custom(statted_id,flag); int *i_statted_tags = atom->ivector[index2]; int index3 = atom->find_custom("react_tags",flag); @@ -1842,7 +1883,7 @@ void FixBondReact::unlimit_bond() int index1 = atom->find_custom("limit_tags",flag); int *i_limit_tags = atom->ivector[index1]; - int index2 = atom->find_custom("statted_tags",flag); + int index2 = atom->find_custom(statted_id,flag); int *i_statted_tags = atom->ivector[index2]; int index3 = atom->find_custom("react_tags",flag); diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h index b960ec8e73..472a02be1a 100644 --- a/src/USER-MISC/fix_bond_react.h +++ b/src/USER-MISC/fix_bond_react.h @@ -57,6 +57,7 @@ class FixBondReact : public Fix { double **cutsq,*fraction; tagint lastcheck; int stabilization_flag; + int custom_exclude_flag; int *stabilize_steps_flag; int *update_edges_flag; int status; @@ -88,6 +89,8 @@ class FixBondReact : public Fix { char *nve_limit_xmax; // indicates max distance allowed to move when relaxing char *id_fix1; // id of internally created fix nve/limit char *id_fix2; // id of internally created fix per-atom properties + char *id_fix3; // id of internally created 'stabilization group' per-atom property fix + char *statted_id; // name of 'stabilization group' per-atom property char *master_group; // group containing relaxing atoms from all fix rxns char *exclude_group; // group for system-wide thermostat From b67e54dd7dced4c5bd80db0d0ec69fefcec446d6 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Thu, 1 Nov 2018 01:09:52 -0600 Subject: [PATCH 44/72] reciprocal 'related commands' --- doc/src/fix_bond_break.txt | 4 ++-- doc/src/fix_bond_create.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/fix_bond_break.txt b/doc/src/fix_bond_break.txt index 59fea8f45b..5927ceb4e5 100644 --- a/doc/src/fix_bond_break.txt +++ b/doc/src/fix_bond_break.txt @@ -137,8 +137,8 @@ doc page for more info. [Related commands:] "fix bond/create"_fix_bond_create.html, "fix -bond/swap"_fix_bond_swap.html, "dump local"_dump.html, -"special_bonds"_special_bonds.html +bond/react"_fix_bond_react.html, "fix bond/swap"_fix_bond_swap.html, +"dump local"_dump.html, "special_bonds"_special_bonds.html [Default:] diff --git a/doc/src/fix_bond_create.txt b/doc/src/fix_bond_create.txt index 02655577fd..de1a9f93f1 100644 --- a/doc/src/fix_bond_create.txt +++ b/doc/src/fix_bond_create.txt @@ -232,8 +232,8 @@ doc page for more info. [Related commands:] "fix bond/break"_fix_bond_break.html, "fix -bond/swap"_fix_bond_swap.html, "dump local"_dump.html, -"special_bonds"_special_bonds.html +bond/react"_fix_bond_react.html, "fix bond/swap"_fix_bond_swap.html, +"dump local"_dump.html, "special_bonds"_special_bonds.html [Default:] From 0c7c344e19b1c52f6160f41c9899304ba8acbf42 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Thu, 1 Nov 2018 01:26:12 -0600 Subject: [PATCH 45/72] additional molecule templates sanity-check thanks to Sagar Patil for report --- src/USER-MISC/fix_bond_react.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index 1124d359ce..abb2f9f7d8 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -279,6 +279,9 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : open(files[i]); onemol = atom->molecules[unreacted_mol[i]]; twomol = atom->molecules[reacted_mol[i]]; + if (onemol->natoms != twomol->natoms) + error->all(FLERR,"Post-reacted template must contain the same " + "number of atoms as the pre-reacted template"); get_molxspecials(); read(i); fclose(fp); From b1c50e3bbe90f1c5289b4d00306bef6e72d3b7d2 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 2 Nov 2018 19:50:49 +0000 Subject: [PATCH 46/72] Added plumed documentation in a txt file --- doc/src/fix_plumed.html | 118 ---------------------------------------- doc/src/fix_plumed.txt | 104 +++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 118 deletions(-) delete mode 100644 doc/src/fix_plumed.html create mode 100644 doc/src/fix_plumed.txt diff --git a/doc/src/fix_plumed.html b/doc/src/fix_plumed.html deleted file mode 100644 index 4342403e84..0000000000 --- a/doc/src/fix_plumed.html +++ /dev/null @@ -1,118 +0,0 @@ - -
LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands -
- - - - - - -
- -

fix plumed command -

-

Syntax: -

-
fix ID group-ID plumed keyword value ...
-
-
  • ID, group-ID are documented in fix command - -
  • plumed = style name of this fix command - -
  • keyword = plumedfile or outfile - -
      plumedfile arg = name of PLUMED input file to use
    -  outfile  arg = name of file on which to write the PLUMED log
    -
    - -
-

Examples: -

-
-  fix pl all plumed all plumed plumedfile plumed.dat outfile p.log 
-
-

Description: -

-

-This fix instructs LAMMPS to call the PLUMED library, which allows one -to perform various forms of trajectory analysis on the fly and to also use -methods such as umbrella sampling and metadynamics to enhance the sampling of -phase space. -

-

The documentation included here only describes the fix plumed command. This command -is LAMMPS specific whereas most of the functionality implemented in PLUMED will work with a -range of MD codes and also when PLUMED is used as a stand alone code. The full documentation -for PLUMED is available at this website -

-

The PLUMED library is developed at https://github.com/plumed/plumed2 -A detailed discussion of the code can be found in (PLUMED). -

-

There are some example scripts for using this package with LAMMPS in the -examples/USER/plumed directory. -

-
- -

The command to call PLUMED above is reasonably self explanatory. Within the input file -for lammps the user is required to specify the input file for PLUMED and a file on which -to output the PLUMED log. The user must specify both of these arguments every time -PLUMED is to be used. Furthermore, the fix plumed command should appear in the LAMMPS input -file after the relevant input paramters (e.g. the timestep) have been set. -

-

The group-ID entry is ignored. LAMMPS will always pass all the atoms to PLUMED -and there can only be one instance of the plumed fix at a time. The plumed fix communicates -the minimum amount of information required and the PLUMED supports multiple, completely -independent collective variables, multiple independent biases and multiple independent forms of analysis. -There is thus really no restriction in functionality by only allowing only one plumed fix in the LAMMPS input. -

-

The plumedfile keyword allows the user to specify the name of the PLUMED input file. -Instructions as to what should be included in a plumed input file can be found in the -documentation for PLUMED. -

-

The outfile keyword allows the user to specify the name of a file on which to output -the PLUMED log. This log file normally just parots the information that is contained in the input -file. The names of the files on which the results from the various analyses that have been performed -using PLUMED will be specified by the user in the PLUMED input file. -

-

Restart, fix_modify, output, run start/stop, minimize info: -

-

-When performing a restart of a calculation that involves PLUMED you must include a RESTART command -in the PLUMED input file as detailed in the PLUMED documentation. When the restart -command is found in the PLUMED input PLUMED will append to the files that were generated in the run -that was performed previously. Furthermore, any history dependent bias potentials that were accumulated in -previous calculations will be read in when the restart command is included in the PLUMED input. -

-

The fix_modify energy option is not supported by this fix. -

-

Nothing is computed by this fix that can be accessed by any of the -output commands within LAMMPS. All the quantities -of interest can be output by commands that are native to PLUMED, however. -

-

Restrictions: -

-

This fix is part of the USER-PLUMED package. It is only enabled if -LAMMPS was built with that package. See the Making -LAMMPS section for more info. -

-

There can only be one plumed fix active at a time. Since the interface -communicates only the minimum amount of information and since the PLUMED module -itself can handle an arbitrary number of analysis and biasing methods, this is -not a limitation of functionality. -

-

Related commands: -

-

fix smd -

fix colvars -

-

Default: -

-

The default options are plumedfile = NULL and outfile = NULL -

-
- - - -

(PLUMED) G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) DOI:https://doi.org/10.1016/j.cpc.2013.09.018 -

- - diff --git a/doc/src/fix_plumed.txt b/doc/src/fix_plumed.txt new file mode 100644 index 0000000000..d9ee6dce39 --- /dev/null +++ b/doc/src/fix_plumed.txt @@ -0,0 +1,104 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) + +:line + +fix plumed command :h3 + +[Syntax:] + +fix ID group-ID plumed keyword value ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +plumed = style name of this fix command :1 +keyword = {plumedfile} or {outfile} :1 + {plumedfile} arg = name of PLUMED input file to use (default: NULL) + {outfile} arg = name of file on which to write the PLUMED log (default: NULL) +:ule + +[Examples:] + +fix pl all plumed all plumed plumedfile plumed.dat outfile p.log + +[Description:] + +This fix instructs LAMMPS to call the PLUMED library, which allows one +to perform various forms of trajectory analysis on the fly and to also use +methods such as umbrella sampling and metadynamics to enhance the sampling of +phase space. + +The documentation included here only describes the fix plumed command. This command +is LAMMPS specific whereas most of the functionality implemented in PLUMED will work with a +range of MD codes and also when PLUMED is used as a stand alone code. The full documentation +for PLUMED is available at "this website"_http://www.plumed.org/documentation + +The PLUMED library is developed at "https://github.com/plumed/plumed2"_https://github.com/plumed/plumed2 +A detailed discussion of the code can be found in "(PLUMED)"_#PLUMED. + +There are some example scripts for using this package with LAMMPS in the +examples/USER/plumed directory. + +:line + +The command to call PLUMED above is reasonably self explanatory. Within the input file +for lammps the user is required to specify the input file for PLUMED and a file on which +to output the PLUMED log. The user must specify both of these arguments every time +PLUMED is to be used. Furthermore, the fix plumed command should appear in the LAMMPS input +file after the relevant input paramters (e.g. the timestep) have been set. + +The {group-ID} entry is ignored. LAMMPS will always pass all the atoms to PLUMED +and there can only be one instance of the plumed fix at a time. The plumed fix communicates +the minimum amount of information required and the PLUMED supports multiple, completely +independent collective variables, multiple independent biases and multiple independent forms of analysis. +There is thus really no restriction in functionality by only allowing only one plumed fix in the LAMMPS input. + +The {plumedfile} keyword allows the user to specify the name of the PLUMED input file. +Instructions as to what should be included in a plumed input file can be found in the +"documentation for PLUMED"_http://www.plumed.org/documentation. + +The {outfile} keyword allows the user to specify the name of a file on which to output +the PLUMED log. This log file normally just parots the information that is contained in the input +file. The names of the files on which the results from the various analyses that have been performed +using PLUMED will be specified by the user in the PLUMED input file. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +When performing a restart of a calculation that involves PLUMED you must include a RESTART command +in the PLUMED input file as detailed in the "PLUMED documentation"_http://www.plumed.org/documentation. When the restart +command is found in the PLUMED input PLUMED will append to the files that were generated in the run +that was performed previously. Furthermore, any history dependent bias potentials that were accumulated in +previous calculations will be read in when the restart command is included in the PLUMED input. + +The "fix_modify"_fix_modify.html {energy} option is not supported by this fix. + +Nothing is computed by this fix that can be accessed by any of the +"output commands"_Howto_output.html within LAMMPS. All the quantities +of interest can be output by commands that are native to PLUMED, however. + +[Restrictions:] + +This fix is part of the USER-PLUMED package. It is only enabled if +LAMMPS was built with that package. See the "Build +package"_Build_package.html doc page for more info. + +There can only be one plumed fix active at a time. Since the interface +communicates only the minimum amount of information and since the PLUMED module +itself can handle an arbitrary number of analysis and biasing methods, this is +not a limitation of functionality. + +[Related commands:] + +"fix smd"_fix_smd.html +"fix colvars"_fix_colvars.html + +[Default:] + +The default options are plumedfile = NULL and outfile = NULL + +:line + +:link(PLUMED) +[(PLUMED)] G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) DOI:https://doi.org/10.1016/j.cpc.2013.09.018 From 85a5cab6638875b930faaf90ab899815a840175a Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Fri, 2 Nov 2018 17:45:20 -0400 Subject: [PATCH 47/72] Update Colvars library to version 2018-10-16 --- doc/src/PDF/colvars-refman-lammps.pdf | Bin 588670 -> 621342 bytes lib/colvars/colvar.cpp | 122 +++- lib/colvars/colvar.h | 20 +- lib/colvars/colvaratoms.cpp | 4 +- lib/colvars/colvaratoms.h | 2 +- lib/colvars/colvarbias_abf.cpp | 58 +- lib/colvars/colvarbias_abf.h | 6 +- lib/colvars/colvarbias_restraint.cpp | 22 +- lib/colvars/colvarcomp.cpp | 25 +- lib/colvars/colvarcomp.h | 118 ++-- lib/colvars/colvarcomp_coordnums.cpp | 521 ++++++++++++------ lib/colvars/colvarcomp_distances.cpp | 2 +- lib/colvars/colvarmodule.cpp | 31 +- lib/colvars/colvarmodule.h | 8 +- lib/colvars/colvarparse.cpp | 55 +- lib/colvars/colvarparse.h | 24 +- lib/colvars/colvarproxy.cpp | 20 +- lib/colvars/colvarproxy.h | 3 + lib/colvars/colvars_version.h | 2 +- lib/colvars/colvarscript.cpp | 35 +- lib/colvars/colvarscript.h | 19 + lib/colvars/colvarvalue.cpp | 34 ++ lib/colvars/colvarvalue.h | 43 +- src/USER-COLVARS/colvarproxy_lammps_version.h | 2 +- 24 files changed, 800 insertions(+), 376 deletions(-) diff --git a/doc/src/PDF/colvars-refman-lammps.pdf b/doc/src/PDF/colvars-refman-lammps.pdf index 7f52367c82eec09a0465b356b326e996482a9bc3..4afeedccc87bb748bdc3fcb6eceb56d4004331c6 100644 GIT binary patch delta 337242 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

tWc~NdX)k1NJUu zk$G9|J4P1>R^%@iXNM8*r{e%lWkbSa9>U4_%QLgG zv-~^IzNEDkyTOhM-02+<1eg#_ge8^5_FNrh9HEZ%+h^Zex)NWC2oriW-+}q)J}@di<#i4>`n3kV7sl9XJYiHElSW*+mHDZBY+5${fwW~Z-oN=> z8Pd_a+sA?|ms%Pyy!X03<*^fK-oEzCcs6qmtAhVtVT(yFi<)9KKcLI>+{zTB#m z2H_)PTW`N1uL3Yk{9)QWoUUW*vas+6xW;{JY=pGVRgAoxbu2@>Y_4` z)UpGB^23%dZ#it!?i02WO1H6DML|>`EVt1qr1I1av@5Z3 zoQXWT>FqexG4_GAGov7(8N{nyqHHfdUoR;{nxJViUGmA(cZUdHqwVn1TlaAK1(C@6 znt`p#R{ZtY0A_}%E8uS{(dol|`T?DpU+hg1gH^2R*Gwv&$2 zv2Ckk+qP}Kv2EM7ZQHhuj+5KpKIhzV?>M_g{iv$HtHxThYR&mf7U5JQv&p;VP8VDV z{_dW^li_Y0BqGZRxw)a!ZiI@^H*Y|=1u!!4@#o8-$`GlP@i#`8+K=z!;jEGi+eKb4 zk1#JX8xz^%<2COUwet=K>;|!p6k4fyaxrmb$cAN?>F3jGRO3BLsI9!qmv~@l#ct=a zR6MeF@cnC+Hs;nNN+F1?RhJ?cu6HdcT{YGmFy1|ot~Nq2U3iB>RGt|fgCAfXitdUD z#HTLN&ey%|?HXbhUd?+L+>8>lGbt;aLi1N>=1Xr#B??4;zebW-Wn#9cy2#A%#q!s5 zFRpzW-lSkboSADaL&W(S^}r)8hgA2S&!!>8ln%?Jhy6ZFl;}BI{R?pQ^u^VE(Dq6a zi-13yn?JfM(|egp?RH(X#T;Oz`T>?;S7mf#IwuVnApy%zWLMPV3WRX#BC9*VOdR6T z)WgPXV?XQ#)Zy3Zx^6x;j&Xf$Ods+|Cgv>h#u&KobkzM6IEA1oG#E+2_v6j;W$VlA z*J|07(dh_hK!KoGI# zx}p>tNMLkJ2Ux-~sXQQxkHU&pKxr8Fdf%NBa{;G@(5elstg>$kEktln3Mj4)BPzYy zJaogA7*bwX{tp>(D{w)%s~05lQp;*chsr9v`-vhP8llv1DwZzXu&6H^PuI0}K&6*8 z2;UMi#_tR1Y_u`mcoOl&zzjb-t5TwIjS>2*q$bRO6l+^3^1lEm<%Z`u-HgmO2celh zhbq#DKtEgDssu=5iv1%`p74y3D90@ZU@>7wHY~fU^tFgVQ%p%Z)7F9+ zZXlQ2>sQ>t^+`Yv!q?HNK<|yc_K+O(Sf(%M*~hGI;zQi!$EsbqlQM*WUrpsqVR!c< zj)Z7HHETj~0yC&G5}%6W1E%D`5snbY+bHrD1XGLZG9vnd6^W}?>+ozXy2A)ETd;;2RJ zo|-hV08b-*8gnzfqXUXQcKIwBr0?K;cDUw?jy|9tGh$nxhFRcT3-(SCvOT_NCNX** z3?v-ro(2>9!*sq~<*x>4h@XPzb^}gcBsb@hZ09w_oB-sIxunUKnuMa-->eu~|9P)# zyeZzaPdZ1xrZM`y!B6OtCBF|#wnPX)I)cVD4T111yiRxgK@i*XGdmU{RzAHq<+@B| zoaj*Q8(vpxLTx}`Z@V#*+{q78N)~s(9k1ws%r-jyHvvgB z{j!-8soQLMPzv$PACLRI%i@R{sb6L^k)x@iCI~i4ztljyY2MQICyKA{#!0XkX@;U) z&6f5hDRV;~6lLa7FTxIZ#LJCtfgR)U%ob0IBN2_0+^H+~qLx-b7kPYuOqs+1kPoVvct$w zW+?0Ld9VGGyb)Zh)#6nScE~uQrS|nxkQqYZBtdZd8nD(#?g3eJ5gF}w?z?xS+?Ce9 zy^!BxeRfNbEnnr&s0@mSlcRs6OI`p}+%^`k%E{`Z2kv8FETm4#JU4Yu5kLAM>g(-+mf?B(N%N2tctBo&Q{Fp*B!t zD1QgkDN=o5(_g=ca9ovyvXa_6ab(h#vk$3bkgj|bM9d(@JlP|9W(HML1 zzV)FN-v`3eC9aSAEg%tN&aTFO|@MPa%2OT`a6YV&toLp!sd=~=_Y|=cr{6uZa&Q5 zxTrOWWJ5~XMSkZ~1k8R7M$9*bFX-g@YoF$uYDjA|oJ=7T(uOE?gh5Yi&Oqud-c!u* zXs6(=;BLjo;;{{3afu7KP~@@|1dEmr8;cWFi<2n|t%P)j&h@pne~^{O>PGivIj#Yag~o4B z%*T@Hbf!P`v-*-)r7K!I{1f3MgzMxH4`MN8{tK<`2*uOcjpm`}3Asa$F&TXhtNDR< z$R3sO#+27ME%f)n=&C0asO+-!(UNz2&Gpbjez<#b7=l}g2PH|qXG~<5#fFVWY%Of+ zO6j1@k#rpczlw&QHHJDH6Mhw-u`fnOUm@Z#UbM8pdM06u*&m6`$N%!9ikHPD{g5uG z#SVD$E9kTP;IN(wbm#o)7XwmM{JG8IErtXbS4|!M^*BS3ElGUU4&BLcJab;o42-jO zv2`6nSbYU{Y!D>N-z5Xi0i;P};f^c$y#<}c69cHP!IypNV>9U0L(mgIDQTvkz_dE$ z?`~zCSTvrGw0D&FhQUovON+o-JU_cK1gH@KG0g0S;r+t`SUI7wI^*|wEzzupZ!~?n zASwI_o8H?LxRwA0Ue&EZ3da*GA&xqryJmj`dtROt3doFE#Z_XG-U!2s`H@0tuy~+zVxZGiGqUQsm{65$VwgZ@803KVKg5;~AvN>fSMJ7hvN$PHEqw z+(x$3$LZpb2ls3u@Dz6n4R$=8F-)tON}P*V_nqB|ZHeBLlDVMB1bx z?pMGPytP1?EwYXWcHZ{-4VA&~>Sa%%iXL}I58CeLUaFyJ#e!`1bc>#C$kU@vM|=De zTa3<+z#m1&W={pNCr1kj%UUDrCAFj7{QKYT zcnW<}Q@)50$G4IyRL(ouA31=;QTOD9&RueKElI*6`CjQiWD!trdAs#=?OJ8YC*Hit zVQqty`*eIM9|8}wjyiS{R<7s|0+dqDV(jmW-^c^KkO9E1u16o!)BF(*bQevm>qtExYGK3d#TU8QvSbY(hRAeBaR5 zuQ{uE*K6DjXYPMod|wP#tHSnc^uyM-0kn@$LL;LvqR1HWuDiYbh?(Z#H`+{ z4tj5YfJmkC(_{e=1m;#|UV_6M@Ft{9O-1+aA0Z^8 zXZuj;jJjayHtX%Ciy7Nls@Z-_@LEvQSsf+?>J?M31m{_nGby{*)0 zY^)J_(0-#B*QSDjo$P9nh*IT`6!(+e_=82!!7)8o)JlLAAh`>o4YvBFd8MmV9iiRk zud((j+ApT3ey#i}3yae7)h79l7zjjHE5q@^S(C*P=-3(qu49Eux$U7g7oBxFarW4v zQs??GkPKTpHPW1JqV!Rr>srf-yG{!?8eOX5!Viv9g+q(Rt7vE2>BfKS`QCj|RoK=F zhbB{XF(sgJw-u;(y|viEU`C6C7{?gZo1uGmpgKmU{Q=0JfZKKE=I+4b9n?1f?>#+t zFUzHo>xw{`Yr)e|5j`tN-5UHIlxOv-^HAB`rXPAN>9o9uPBru`=<Y{O!bnZ8yh#_K&9o z`X4~uA1kZ{LgP9xKpqF2(U?qJ%MRYwx8K#m9xMUR(6zSbfHO>QP{CI(-bTaD9Gy_^ z;_%rEs(P@fA3T;eQO|4|5zRDYAL&M0VL4yg>grQwRzbX+iby|W)@4gIeC6~MDU=ot zNlu@{%nJP|2@POtAr3&!HsD#rVH*#SoydK1RE9WGcc4MF&9*=peXURK=UV-z$c+4{81t3IHd z;$B{7Mm1!~CQ#U`Y(2|^92t#ZAmp37%-V8{+xKY$haH{gf{rnEq`CR>H;{@}RNzMP zbH6SW4x8c5lGS9uxHPa1=_1h=o6c^4jB>&PxN<>ZxBtxOA0bylH9o5^l$2kfk06CN zH1ZWLt<_&I`j^Z1nfAe8U5;nvb47r#vOkB%^AK_F`tsRUns1hy5Fmd{%+s;#eo;;? z04w5D(h%`9eK}5%f-jb5fSgmFDy%7)TE=#tM-lT;(PGXvFlx90;S33?qwNWqy=+Te zfxin3tmhzb+?@VKR3G?6s={O8!Z69nN zTIgX24KETg`J*+3>u#E&@YKci4?0LTpIAW!=$TL5^sW&n;U^tMqvMV!6slX0eZ!7NqkqT?Lv(A1R8j9phXtoYnkx7;8JR# zaJ3L27Nn%)gAsEu@o*O4FZ#NbM-6lyAI10Thb)$XeMW+M3|`K$$7U&Lz|aK7fPe>n zMe;(H|L;|gf!E}Lb|7qmKXODXiaw1F6!Q|2qjJZWNxG3*Pw?lgX2Wkk-s zJ8t~#dlvk++HSsg3c@3S!B_IGkN`ipdMeMp3^rImNRPH2fntx^_GeUyG2!j&`+^@1 zbe`q^hOaPlF#Mkd?mvW8PLBVVu*$^B^q=q>Me1rbC=%e(>#I2;4pUvdNDvhmu`$ve zD&LK*Q~HJCTzslG*Qp}gUzR{6=pr5+*j1&|HoM_=w0(6YOWQu95!J>#GO{?YdWIz5 zhR)2F7DpZ%pFOIPrYq2nI^FHA7JNs74!khxDq(LLJwhr% zqh4Nz$-5O?RtpX`aZgdgJGM>v%`}`25@Dpugc1Oa=cHkTNyejPTH2m<=Rme@@_9mY zP+s8Y=g_XHr9Pwt@AS{Oi1K=E&Qu#o{U=XhPQqQZl6oTaml2$lX&VLBtIWMUBOFA5 zBK47`J*z;QL5O8vDu!Axe(e<|K!Duvc&eZ>$h@ScWGJRR1BZKh8D{?i~=7m?nnmt96Me8lP5> zB8pd1=m!ebala|U>6|=u98n!m1-w^sw>aQ1?26K>j;RtC5;wB2aQI=_uD53EVc)ZR zoi2r*e%Chi5`SjpM~kL+H>+1GyBC3B@y_%u_PFu5aFt1$CWT(LRO_V!U2ZTLx62U4 zh!MZ;M6n=L!Dvm$&G{&We*5A4WO;-ZztamN)sFt|YTfjDdi3L_KM?$T26DK8J`IqH z*$|uctn8EFCwwYaa6#-$D|yc%Tz?c8O;8U;)-LnB^ zLzxTWaivSmBVJeXy$?et#Q$JRScv?&RXq?D2GG79J+%szn|XL+MqwVnq3SXE8g}xAXAp=)n1#wLN=3-(39@q>$`Wc!1_27R#~w zan2lS{;V%5gJYt&2zX zq?L~D<->;TZ=BhJfliMGLD6pxEF@czaWiMX#7t>m=G z0TuZC(+_S)H4c&pfCb)c3zXIeN`6qk-n?#kch@^d;7tpaKxnF!POL;5TfE zl$-WUY`%&@J}tu|z)}Y`fsc&mAD9GV(X(21=;Q>|tWX9^jQTH|9f1S4mRKT+XmAFB zVf`Mefo13#rF4(`$8Bz9f=T`%xVbz``!0o|8SxAVHsopmP$`NL&u>bF3eq;jgFFXp z2`^sj?T;=dziUntg-*9EEN~9wC;6lR9mYKLP!|s&3&sM_R|9+4aOIkoOhyM=RvexF zLW(rWYlVS>w#l;M=3V~#sAOvRT44w|F8*Dt*CQSN?TfDhc2A37nY@2-FW#& zg}~8_*(AuqDqaIcMT)3e^a1k>_TWEcsy+s7QB47ItOs2C_?YX`#J&mk#tFAGtaRz$ z93h{K#?`bXhSjDXwxxQ!RCZ#YcRN)*3U|sLMB9y$Q#a#wm8aok`82>v#QZnM$5#8= z+rv-Wv2ZKt&mSl4JzI3%$jvez8(rWERxyZ2?uXkL5pwa=e^Tci+QVzhxA_oiMqBgf zex(2i4+SHBK-qgc_Hu5Q=@abd-@#v!ShaQbFp}R~5u3K>sA=7nsjpR>{&TudJE_j1 zx<_Na?8aXj_!FJUI;FcL(-*U<1+TwVHV_~Kx5KsexuXDS7syJQSnm`dgmbzr)ZUf( zZQT(JK;;P`87-de!}i&>X;cdFX^TezKqF7}6zWSPEVEBw{*G)Pz|=&4R8gn-SlxE4 z`!;=aW>jx)JvDaPzTcCK>6ffbuUgAGnb^y2ap$*_g_xc3sU$;K6@G9vrVzB1lK5va zA!fb`K?k%$i_1uP;7(?lf-LMV*tZps;Y~1=*9Cz8H9V$vLoC}+ElHo)Y15Jh9B;Js zD_2Cv!d^&4L9&;3pS^|qY%dor$b=-9Fw!hMUXrn1`qr!11MK4~bvA-{;=wCBuNNGr z7lcES|E4Q}G^18cpK*}MI%w-ojjyuN(PLBJadF8ag*sLLxZUui;&iZQU3Dei6#KRi zzBIzO=h}>IPn%^c{R=Aaje+_B(l`Hxy)TDskh+2Ow7qcrd^Z(sTLAygmExI!2^dNA z3L+-_ZrA!dD66_wZex*Grf-z@#MsF2;<5UD+n7r~tLCeUWYG#*xh_T=b{4vr%C>a) zO;a!hz9(qB(q^d-jb$MGAWtuzPNUiPSULcADvCBm|*=({*utyur)Q&AY4p=~}Pz<#>$G!u(>`#l-h*bW=$gaq-E z;rsJu|8lrVg5W+?pdPWek5)t!XEF2uWvX)bjkJsJff*9Yej$Vzq1t--Q7Aqjv<_Hq zrh@dD9ULV8EHvMaiPXi2ZDx7_@O;8Rj`{tM6CwsOs9#}-CNli1^1~?UAw5$(PAFi@ z{tK0k!?vja{!5i4w!)qYA(mb9H(kt)TmrQEc8>kpb8;e?rX;cZ2+ABQiGx6loJcRZ zD~U!%NzM(}gDb@*Ds&$?@RNR*B!E`Z{r89AoQ{;Cs~YYsnozz1I0s@?0tpSwh-}2sexiPfLv-7ES^;mbLrn$_qK;= zWKR|%J%!U$racCyyH?rKb~L|hE*A#fp`O2N+-pABpX9yke2_BUB~X8?2mT@KdC4<8 z!|tFjw4O_F$=yyfj*ntz2ehz_Fv_W8*YbW#7a%WdHa({9k(dx_rxkkunK_CpzX~$1 z1oo`hn$G97VP&|GzgM%}sk*ad-j9ZCf@K5G?iu%Y+2aR^uYlcFM+*>;yS6+8Mvc2a zfEMD!&BEE2`896BKz`0SH-X7J%p&S65=8AimA7552Z(W^dK|TL0c0#-fu8&4>{*J) z;5t?3(^n7%_Q~nAy;NMMRaPgU4~fU;UJwmXxU>qrMXsTQnuNi$VsD60=ag-;u3%1E z0)ZzmU+?gN5S{uKBI)QElAyPBNRIPYOzV(fjllkVvNkTZo8Qa=!|!Nx5{IVUPrKl* zeJPNw@6(b6*O2S70ffBi<~~&;*0dn`6`B0|*~t;zCK2jy;i|qv!>NULOvm) zNi2ulJ5*q<#Zp3&Kw9x@X|ETHoZLEgqK&v?cN3m;*xP^8Z>dJfRNjJ)UF$(Hv4rauFNFd44g$1zWw-^||^QTW2Xp?6FKM_rxD4c|^~V zpunEb?v^Tdv7(pa_RJhD_g>E#mc;YsY*7ZYSa&1y>Y6vdz4>z?KfHRc|G6e>3wzzKh!_Lq!@-!cSM{Crlhf%I)s?GK~z6PU}A|4VLeL4;U zEx?1jxBqo~1dqVg?XB0Q{p6?vf`vgqod@X&J7PRkC{zq=2}yH(_ejI#jV-W838;!h zfbQobe`+}M&!yYo?UG=Sl5uYgHTi4&#cJip5XQd_$l(Q2JLG9jpFvr8HW;zA=wG?A zA9y%W=#<)xK8>vO?bo&FD&HZSdj$cyh3aHgCelcdH4*2;Zi{H0ESRHiY{phjLvkH0t``HV3+ldE$M&Z*Gj;cPR`Kr>0FZ{B9VeA0+v8(P04x6+Tae;nVXvGJ=j5 zZApz797xQhrgE`pqmrdS-OzAn>-#Y?5X}?T$RlAbmemQdSLxzIk{6xE^kc#fr-3Vn z_LFX$i(15{WOY5X%S{=GK$Lmpz>E3!F0vy7AQX-~jDzF}e_is)7+B~gSAp3=~0BtX)$x9p>9Yp{Cp26&mjkZgncq&^V>mz2CBxn4 zMqQQ$O`@x}hX&!NrJ}8SwWoyWEpCrd&OcIx(#)cVKSc$sej=aSHfGjK)9eicP8;xS zfb^L-e^JLtE`(8ulP7P#VzAT@=1)qMN|hqG&Md)-pls2vUk5i?sRcDh`CrV@c ztfoAxxBp&OIV8%`IyAApPvEe<#Nanpoon5$h-_1ne??fdSfm`ht_TBvKAD_+fNwK2 z`x`9QSA3vnEu5bhXw8wz(b5DD7(Ve(I(q7&L?SZpU?lZ+uj+h|dp~nzEl=vCgW_K^ zjSbOXTKgAeQb1)<5&m*42H#BFW=kWn&K?7bFt=^hR8dv8X1qImZ-$$cvx-PwmrroS z?fcXZPXyi!6JOI_s7$<2(V|L)6~4#zsxOv+6;k$?8O)dBpK<#4>hZT z^8%ZEmy_uv2Qb)(%H5wq%il^tuE|}Z7wh{d%=K60#pb4nEHFd%WBlPWA@C`vu1+L% zs!5mao@ET#{$pC%)P4AYK$|KBZp6?RDP!8bzd6=X!mO3xo7>CYISY%d>wcZ;?-7Nvj+N!@YQf#Da^VzSFgX2SBV-WOzV9~JHx^(<>(=|U0%J1M>c~2R`pg>ltm~3TkG59#^9B+jfFOj?F~y2J zL>9^js2;a?X19@h_4)LN=7*^mQVguu~OQEB+)~(^7~q- z9ukDUEVV0(o(C+J8lwi$>_wOdCE?QFJ!=wL8j&q4`Qt$C63A@7)6&gszoSp=yGh+P zv|s#sxC~eny8ZM@uK^_q3(UGYH{5qk9sgu3cYHl6bKF!xk-vAIZU@R8n9V)V;@O?5&?@IleoGj%i|X zWI-@6JItC=dLR`GdAzN!I7zb%hiK2YXEND^1hKzc|UGh;l&XB?J4V9>8 z=FI(3_PelC(YSdFW59a-O_)Y)w42`TkP#n@x2UvhYa5kMu$&ROCBS;MHaCF&4*2gq zg*PwY{3KqIeY(@RH9rJ1$d;q}+_W|gj<~QVihy6NW54qN zj!YRG7zfo%+FUReT;#r4y6t`}X-Wt1R{&?I!rA$8b(DQnx#`5(j8Oy00Cjde!`_iX z5n^jaNQIW0ayLkF;6{U!1%+&%w1yb2g#)F14mza=IR)UUdW9IbuOqy}I z-$xFnzAbQ$mB)z;8=a|`cSuI+1Op3)kn9{5PUkeL*a5Z(vKLaeLi+_ZY7Qy zkNasLysbIN;ULyTnz6Z7)|3o|QV z-`w;<&&G6F^t>#=@A1}d{M6UFhDuDGcx zSWL*0k5oU^RxFMB$@KwEwap~Uzrz5VoUesR#je5IIme0&jdqq5on19K9LS`#m*nd? zV<8BG>+~b^r*v7#1wSX}g1^+qTS$hbGBM8$fqSN04#*p@)u7<@a(Js<)Lafzj&S1B zWx5+%B~bMmy7P%Idznhf)i=p`)@{QrguokX$N8p_|2V$SLi9+s!R@e&kD34+5Z~GK zt+Qa+sdV4I-|Ku>n_%^=K~q7-oQS!<41fv;ZN|KqM-yav-Z{8Tmvp*YWj)*G&Desj zpvb!2^1rk##n_S-YU9Y=VxD{8XHSkQokau{4?A^@hvC1_Qg0DdC1IDU_5(`4Iz9{fUuIAC z|He~b<@n!B_hszKgw3}5o7y>r3Ty*tB=5I_hHQ80a$_qiUKNRDE=UA$iK=5E!m;e^ zUODy-!EhE+-Wc{!?I5+ndGn{t_nYrh{Nod2J(0{svJG$k*4rCBpBF+2b|w@N<+156 zhs4u@utgd4UqlNGPHUfC-Tax`d@;|i-W`}y+u!0gfaTWI9_H<{lf!G{X@Av=n2iNc zw%!}%23kmLKt#frs>$IfZ>tXfKtfS}f0XIkxQ&)u4w&4e$r-&V<|V7(VLL8Aw}RLv zcbc^R9G>e>$IqoHy^`B}ca%s0Y{ywKSkN*U3#(jbw`9TfVSCNYl24hGmK!-XLGxOQ z&N|OJU}K?-^{}1)E{}?P#~kyoqlKjtk~?3W&Ta#*@HGFHjB7 zb05>ynT^usJnqgNaHLzZWH`z4-4()%9;T7Rw8KS3{S7zvJ~QgTGBi|e0j)!`?L_Fv z+*8-%l^X%2+uC$1>#fZs`328ijg*}Y?;)laz!LF939UTF%z&9!O*_nZJU0PLN73m# zv$V$UvLU}dTYzsbEQ3Cz*0pHm%DCYRo}#PA%nUO#QOf9UNeyM~mrclG2p7N4kL6<{ z=mL=gkZ!ymHrhrfxZtw!XixDse4w7MC^pw%`0O8D6kkPQI@krIE4UG&(_g!rwC$(< zfE?BsToTOP1`Bhpr!EF&YR*DJ<~=qzZ_MzV!Bmi*9Y*vM{L6cuMHR%Q?ku-)^raH2 zx2^I@u~=lZCA^3icU7g(25wGlKV>&=^Kjcb^l4)nMHI0jPMG2PYO$qmAKdcm(Q(S= z1r|9)2BW@f7P4QeH1$BTEAVDnO%*s60Qg?gG6V0*f2Bxa!lb(Jncwqpx9{cLNrQ_A z&8zR3!$h*hyQ8XC;E)sAW#)W#9oo9?JA8CZ{$JpmR_OW(jLKX{K;-BYw`yLnA%C4X zpT+s|{&G4Y_LU5k_Wjn#R1yx+p|F)7eC0x0fS%3hw_G>6d$T(l2xa z0ZOkV-`2MZM-JSnd7x72(`%OS-DFY*hqKCZ@VkU6I9X1%odE(Th)K+knb+flQh|znEuH@tqLC+A~-Kxy2d^;h$4?Fcjkc2c7^Qm5*b6Rxv!;MN!sFwF~l zE5cxsHfsyYq%q}_UoSvOsdt}*QGRsbjK<Bl?KClekZNd&1mU(2qzb2u$v7 zUE8hFiTV1`HT4o{c=zXKGq4p&1(I;0c?Atz&yr#!%RDF3GtMD!B!CHTbir){J||%-COgPNWA!db;0oBdS8zL$vOj%8?x3 z5s(@C||M5EN`x~K4%{zNji5FAlm0c^?n`HjNSIj zKrx27)pH#x`Gl@?j{y?-fLeYoM?WsOAyTy}qN=SpWqSnRx};%4#D~%j{-s~hzrCrB zMKQa%SB@3;35VN8Wa*yPlpgX6rO!z5IfUHK2RPuxc@QWx266YX zKl;n6sP1NyJ^+rQ^?tgr9a559G{p*0yZbUaf3lT0C1#)T&kR_$J1(+u-Yu*~-rC~S zg{s_9C;8I#U-#giv?n@@e21v5qRdHzS@1MHmtR7rLiPE~Niy*6(yB248npOd)`^a@=1NHMgcFDanXh-k1aS5KIzMke>374Cal@OMr4KnA2lNLLf{qb`&vz8w-EVRI z>F|_17Vm`IPMv9YB)ue`fv;%I-8&5J$ z>MKMXgefnU!1U!yoeh7E6q1#;z^Y;ir(4}VJ7Q>aK_hI*nY3DWdeKoVtJ&ED?*l$?J6PVamCc+m{X+Mr z2#_VRz8v;HevI_*XR6UN-u;-7m?fOA{&N3Jw%@!C!E^MynbvkDcQ}wrEs2{k zm3i2Pt27#IHS}sz&K)wr-X}oWZwUl`^^1YJ)ANwN^X6wWDS4FqWOw>I@*QET*5ydq6GWZ9 z{QU+q3T40woO57~aQl*$XNOzWcESYs4Fq5?<}!|CkJ3f$TLOOSuS1Lp3GHM>LjbhX zj=w4Y{;Z&XsvjL_3j=WDt~u}&0_$U}W~G6A6H?y(9`WTeW`Aa*h|%Q<`3wC-ptjy~ z^AXrXL`@t3GXm__gZUx3m)l!I$n8*|wbN0dv59dw!2OZIS}@zq?fC6u29dGtr3cbf zk+}mIOuw~byK5L%bS2;@=9zeO$W;%hTYK!i8aGI+m$K|*9$%&^@5ZGS%@c}TV z+G(nP-oBRsK(J3v#s9aqWMlY0J$?UQ2nNSL3da9*0Ry(N$Ny=|=N-NLLgjk>DzJ4G zzNqXq)^d`=hqE~2EKsdKQn*sa7!op_U(X(E;sNk2OOd5yoXBAK{;hU>m&>KG#w|8< zch=m4jfmTi*B1xRUj1fZg>YuZEgd-$T!|b)X@i@ler<>DQ6s6iCX0 zOyJf^%mEu++LZvUIeQs|%l%Xu6y2rWKg=yC5}bL`J$YfF3~?Sit%grkG?9Sr(rbVNHzm zVx#v{epi4nR9|BX1A&H|Hg~8tH)scV#FD~2F3`qzW>+XaHa6So!w+bHjyg>v=V-*3 z$;uXWVkK6I$a0OLcl zz(^f*R9wg?oK*i|jAb<(+Z9L@LVOIKZ{ zBF|o2Pa*L6w55F+5^$hE^mSUY`&@VH^{iv+KLsi7jA|>P9gmzIF^}remfKYRl=|n;Afp|dPyLHD1uAY1BJqdoxSf@r2 zZhagPkdWa?dq_EYZSt2kjD zg2cr+1K(BO@BPEHL>On}7;+^G%}bBqImm7q9JVnZRFH&~YK$%OSDNZzh;A1&ks-l! zxbRDlufy57sT^Xiz1emeV&_dTB>`dEPII+TGnnKN+xpZBd zV8{ib6Hm28Ia`| zpqoYLjB4-gTC%ex05zFschnMAE4jSh$Fbj3vPU#5oU05?VUjo`?Y1(7Glf^X66E+V zBhB3p{fURxA~9z3>rmv2BL^7rv5BUb_6;v#89fLa711N-`l`km+dRC_I99|+P+ErP z&UhSMQvXwkA6^mVRYS*;RX?QK(uMFQ%d&$(grSAh45em5~aDa;=)1dLc=G7JLX_v;~j++ z#m}{o=z50S5ZInM>`~aDVEWN!h~VA>^DK};JhM4RfI&Q98k0f1-l4T$bETIdw&nXF zXaVR#>pn}N?xbPHI)Dd}k~E-iO7-xOIwooHP!Xjl74+KFcp1kQ>jfq5h&1c5!G?2A z{Ea-a`a?<*5bcDw*cr)F<#3qvhT@sdE_DC|Y(L?g!qNG$iT z_(Z}eP{*AibN@CO3no=0p7LlrG9s7U?s+E`PeqqASg3~_4ZzQNv2_NYmL1okeT9LR zMA{2HcMK(wH`<)D4^V*gAt#|(s8I4HY5oL^i z7Y12ibwQ;uQtBA2I_O!DdxS$MG-JGcw&PpY#nKbG9s%LEdMLc-=F1W>eO!7_7jgvz z0oP-h;h(A$e?W{yE&uCZAtZB<)F2X4az%6fG5pFjlSHhhlUX$ee*gQ=8Qxx*^1wPs zw3}7*go$oT@(YhRL>c_Vn}%~|HR5n&*RyBhfIFaNjIp48D6is%W9tlmqjDJ`7M!+} z5nraBQ9m?W)44k~0Nlg$($m;8F~{}TT_1vIx?=*-3II~zm(8y0bL9F0!C@U9ZhcUi zNQ)+uYeu?9@GZg!9xG!{|>lm84h0U>b3W?`RaHF9rL48# zsaXf`%E#XtHRcIOMR9&ErTKZv7PPQ3w{0JG7VQX#l0fS;Esv{EWE;QU!WeL5_>;(z zLcX0aX#f-vuM28@wDFa*^<`#|9HNccB`iPlZoC<3%>y#@m;eFWEdj~}2Xfn8UqgQ& zYv)DV?%I8_Q+KP&e9MGb{s=i)Gj=K2jZ&fQ1D9R0-boE8_iL|=ViBag({1HQ;5#bJ zD}KsmxhU%)kd4qa^8mAZQuDjm^Zj*aTc@=DDj@sBEmU;oFc`1zm2iQ#wKi7%^&eP@ zB2zc7_L9rbKO)3oe_EZ9TYyIYRD4C}AOQv>D6c6f%9dy%B?tJgitEcjYVjL0uJ9qv z+pX$>Ag&V&iP&ad0q;KctX*( zXA(1F>`!^_SUYozJ$!DBU&9<}xVj#LLp!q<2JoxWIC8ISztc}k828a#a+0SqKlf6a zS`(f1v9{zJ0Bm$~XGNjK{*cYE>6pi$wn0Wn+6~ImtSSlTUb(eb2jCY;1OT)uzc>qP=NrsZ{EZr{41*E5tHapD`02ci119kacvtf^Q`@+z}4@RGZ9@ zB9sFN?=rvd*wLK=>WkC~JGsdhAn&WBEMU}K`R9t!#CO?IN}Fkha*cT<+vBN-1J~83 zY+bk6^|&jOa54PiDz$+R(KP%{k-oO`e704q6KZjrX0i6lto(UZQ5Cc|Gkd9-i0!1~ zHSf)v?6K|Ws@qqg`Ta=|4$%ROM_R7YbBDGBe0V;|tPC1uKPnBizi9hTT~HsR#p1qF zD#_mSMu5j$0l;tvaLGt^Kmr024j1<=7t;WGNLw5N0FOwnO#LtDn)!b*FJWY2{x31p zrH1s6cL`F@b?waTkEJ+XPZ6z?CkE$ z>MTjpl4T&no`CSv>GcaAw&f5Sz6BWGZ}r``o5%B2tioRrWi}lApDfa>zu26NU&fhF^d1^E;(`DaC@~vZx}=p+HTq**BTP#SMY?0r zLO)ejw4{8j!$hVP#w~o_RJCW5@^J_oX+maFee%1vYrK)HQi0i-7AHt#9tjg5K$hel zP$I#mXCi>QB&Sy!yMFCl=Jx_tB1Ycb-<{Xw4^Le9B;7{%h>Aeclaf{Ms-7JPA3k^aMnYR%*}L6PdMC3y9CSi?N+Y-X}l=23c&j3{;8>VU!EN(kb)=5(GU% zjz~OM8p`R~^w^GsvPE#VFWU1K9b0LUwj{Y~WBlF(OM1l+-2hK|r9G;@qZhS0>Dj^6 zx?QU_rfQm^daNdht)H1v(m2gZBDUR1{xRfb-cG>SAIKQ-h`AfMuTZ}_XMr-4@gyo` zDJ0BF6~d{g)(3I z?2YZNDJ+IQ+QPw6^v>~(FMAyb^jXDEj=1(c4t*mOxpyqmjkcuQyMgg!A)g(V(Hb;T z$bJ3C0-o4uro8|J-+e3(Y}xQGWlYilqtAYB)~CVsA*^(|DII{h-vFLOPUl1O<7Caq(77vb;U27a9d#qMtUDk6gbMg0=M|$8u1A-% ziUi2!jQ2~HP8xP$x4>7Ju8S%EYjK=+VARoQfhVmjmIAXl|@*z{~~1nN!{XFL%d^E~LIEWV2?=w`5(yInqEy z_~0#ni zutCwuyF~+KcY47zcrNKL%3w(;)Lb~vIr$SZa#Y>HxnDuS@Iys_rhWyb%s_rqLzzL3 z^8& zdpv}U0M6~Ni*^HDnSv818;)HnBikuK3J>MFM+pOPL+gYBXuXG+^gO)CjyNnZR2xO7 zVUr#GKO(g^;PyO#-D;AjA0+5UrSEDQms>_nZ6o<|Sg%F^b=yJ~CdnpLlw>prnIYmP zhQ$=VQV&OHYA@n4G9kuGay9@H&XoDf8pzH*T6f+8blpfm`OBSOyE*)I;33}%P|rL0oV zwu9ZH9B9e2G1b6YQ=h5 z#LV;U-19MQ@>ZtbeWo^zFIVBs_&M@0a(e2FLqI-Hv3WSmLouy}NTp#x3~FQ!>jJvo zq5u}p%R)h6_O>7cIHC7q_O}+Y_^Y^E@-pGDlvUUsRw`i?d-6bhL%;G zDmQ7e&I9`mzWb@zfCmH`5PMMXNw8Cs?P*lP|9v;nS5X@7Y6y|09yJtIJ6CQ@le&-W zf>02gvR?T9{yvE)&)z8O?!?sX;UtGeXC4YDDMf_m?du(TsM5C!jmZ{u9W(7b!p>GS zs6bS_N$c|VcQLR#7godMQgxtzFecfkf?mpSFpNR5x%%0YBPdcUQY0_PNRZH9S3dapq|31^3G>?0GHbYA4i!LoVKJjV!YmN+aK)Xq_%i5zlKrjR- zP@Hy)c1`9g;X2~7d#=2la@(+b6~%?WW0=G#4vx1CJbs=bUcwT~7VTm#5za4WBee@M z{Rjr{4>QefVx;kQpeYV*k%$!a80JvG!Bvb+WyvOOQ&zu9;oRzX3U-JY@@{~3T$Pf@+yoOItubTaHy|MBTs4D*mC{dix0UlZ^Cq*5S=#o)FODq^z zTub=W2zeUO5z;c$LKk6VBq(lCW3bR?kuPU?VT3C?mywIgA7Y zOFv6L*T65Yja^X2KlkdXIsT8P?wSAk>{fOD+M#EvQ?;?M;LW}C*j6**%A1;s&_(pN zV6!Ru;)q9Mf(iaRg>p514nXXEZxxH==egRU=t-V`80W6fU{on zhB`0mU*y&8vy7p!xeANzf(ys)k&qktE$)^!_m=0m2T=1_Z<0EL@L3MH@qBwc7wGky zA^*-=nN|McNV~;D0qpe%bEw%by8{Jv(c)Mv3FG?++_}umxZW>s-XYS=)n*Q?E{Qg; zDh};;J>C*&zb)eJ&dLbyb~3V54JickCATID6YmCc_Ahf*wZ%gcD(Vo5@^Zi+ zjwWS*0`w%GY4A3^?|ysJ)S1KTh3T#mA8#&_HN|*`=TB?v$XQEsh6W<5VAv>rv=yCs zrEKe;={0JGSAdak_!@F+GD`%>`3vPz_ViJutG9q0(!38$cm$IXKHnS^K(iUzugmIQ zb}_aVgM*LS_(GMtr?n*EE+$hfvCs;Kv6S8#N5>lazbbzTMXCB%k(RVXb85U5E%8u^ ztUn17Yoc*BXsKQd6h>464Xn`FJ1woZdGld!5TF3qWC`ItK|yQj_if4mIxHEd=yg*c zR~d@s+#dvr%c!quyT`I#t)9$k95;d>iy$&R(!dTl+Bs4r-EMDp%y6iP4mfr`9un4O zJu9-kU4-xByF2)Lw1&WaLZn}3hj`cV*<9UfMLOfp6~hTDp+#zV3BGgG{6?M*KK)8< z_yFnW_eGm!50@IT&7j4ZapdbqBEIKw2a`JZ$*u;D4!~|oEByWS?Rc@*rc$?^?c&H~`iHFX_{A{$?{QNfF*^LSS5RZ-9L+?A9g`8pNKwWdnF7eou}gzY^G0Ld=Dh88 zM#&%bgxGbu=-Ahnx6j2nd{4zq)&aGjbo@$+c_{Fj1 zv98@~v#I}Yjf%jq36e1jwCOJx1$A3M2=lc}NYe=O~dtYFw!|38P4|2Yt2Vc`6a z@ER%r&U#{&*pqKhpl?!zOy{+~vZn+dcXK&yEqez0IwIUzLO3#|KhGbZ&p$m5mL)&m zJa==}c$7uvz^QX@e(5rQFZpas=igbjzq4`skMHM|rS#x&P-56q5-z^DzgVOkLK(t3 zWgpCjkOiGSuii>a=~3ArP0)U^0JA{YD7*Or^f1qIA0c5cj8i;-d|G0$`zyQ0&s}A} z3AUTu*(-XL$9d1Lmw?t*vTQraPb)YHxV*PF)~vVK-x1n{4?ku&8p(#yo}e0!^{MVcGi*j0yrf41c`!$EW$-(Vg=TbV5tgZ5Rlkae-NNd)S?)m zdnkRWqOrBT+eWo|t?M^H9k-KFLeoPD!yGEkO7%0L*2$_P40~rj10R6p^{o0`^z?@$c%aH-_%njNe zM+t7%l%+aLum0`WKd!tP9)&tsj=Egw&w>(MPYy3h&YS=C!m&ryb_?bTgL&`3c}p${ zW(PDouO$t`A()l{TV#)o2^>UB)Ib0@G~ZjOK#2Yk95PXN9mjG_qb z4=QLdMe!ifw!k77&RH%7ft&=Gk6IW-nq<oLqe2OBUy`-vR>zmV;@-CJBV! zi-s0S*AH^sSn=Zt@*_ma5$P*x8D_~48373k8uWil$9eGtySde*My15XyCx)cbk=bS zfFasrcZs{J|Dr2uDGvg0_7i($9u}fRfn_TR{Vg6wCt*q#F)GJom1b ztA&us6TgrddvKLo`N=IRq0;jU&V$~(JGA_w!jGlV&6&MkSQQ#F8x;^Bj@RM%;}FWM zLec;%WWEGMP-XxniGgrc2<%vQn&(BCSrQn*p=F&GU*6qR!Ch8BzpPTlcQR2`@!pJ9 zNrCDS&X`{v%45YU=!gI?&CQ&0<~H5T8aJq1V@<}OG(lsOhHf+5!^HUpnS2r5_12v$ z^VVK%%A%7X5aYn-71wqy&33x4u$CEZoUPdubGyBdQ=i2J?N5L{GX8bhVxP5SxMDNj zV{_K!6pa6%Te^9e@ohv?o=+MIL^>L8O!auX{+9SNOSDR2mlXr7#iWikA|>HvC&o_k zGM$`>3-3|3GYtG2XEQ`PYy&(bs>FdEfnWABajWJzlaPl82Un@0SG6lAlOb{?=Badz zcUnBPVBrU@%5bU#q6>%Iwy))5T2Me*TeeI(Lh(#OlaCD^fbYe*;?ok7Xk!c#8Uh#H zORrX*mrPft$!Y`2h}cDHOUu57qGhwm_7#Vj>4SW1JEiGcxZNT)>!UNA_L(o_;Az!} z2w|Xkrzw{=BZe)l!u37cFhrRLh2*BqKpGZ;-!9W}lRQ*#UHWeV5ij9anY!Pog2+0Y zv>!^QaYxw*-_41A@4y&|>9cJH5!MF2bQQ~lbGKEdK=}YCJjv?fi{SW>F0|sec$qcX z=KIofrr~r^3#8|eu33bYeuB#JWSbhY_#tqAb__7YT|~7rO)v+k^T(#d8s7}rh9x4X zo0U4Ukxs;8y0=*ICu~3%HYg=F5J>cu zFUU5J)*Ap@B--0tDY?u zBnil3<4*taeI7Kjy7#h9pD(jpH?wc8-<)BZX%##6Qam)nYg5fBMA#^yju|)|QLe7J zemId7#}BgXQ@F^KTeR~jPKmsIOQ7F5(8xlTtKCLKOnrH9Tf4yp-F> z_c^drhy5QLSw)`unRd5Ysx9z^{TzWM?J?U2T=x}LfhxEcSzM7-Mqa1_GsRcadD$9S zv{=K4cLu;~t?n;iQ>uy2Z{x>CgEfjgLAp`Q zvG?rpe|KLCf`B>pQhBNOOyjJ^NPymm1}y^q#bZzPfo$Smp!jn->FYSx_MUpzc0c%a z_#BN%RSNg+>&3&jF^#l!p)BX*qA0sn!Yag}4t8(%p$^%+T+Ou7QN}nOk$$S;XZ?M)>zADnLqdSDzY-BfKk~U^{ z6mMy8fmr5%{96AvSng#&ULv+s=v(5;ioTBiCngg?&X2y=&cxZpiR^zOwg2C0=YJqI zMs`-l|3Ye7lJ@HyXg`6iCs?4Y|3r(5HacV?5g>vDM_OATMGI{6W6>m>m|vgo+rpVl zy(~+x^ZextOzuuEKlo;AF>}92W-ESx+V8)!VcqBJLyPCybR>a_q0A_>sfwY6VCGOG z4(ejLwY>`C=K7euovd~KqQQC5&J~zMnG7$Y(^G)=qaNjX{cV^Y>eS+JbGx-QncM9N zMZA%LXhhpa-}FhUk>$xb9mH`AY!pkbs;a6B5BKqGq)?P`!#<=qX68p-<>$NHui+Yl zPU<}{#+hjt+PjuC-IQg)UAG#FcUi^JFuvY(iNeokY+zJ2?bXfT=xHnz6OZ+ES!Ews zDp7!Pa&#(z8ymRxW|OG|3P%>VIcczvQMiCin`C93K576HRF?U>_bR&Wr~AMIpcdTChPc}b&uREg!kim7+QFW)cO_NA|?#NnhnU$OS5 z&UV$YgHJt{XGB@ra{|HaoiF1V-RS;wE`30gEFz3gqV(!`M?5j^F-;WlA@e@A-4d&< z1P7Y3RQ3gkOTwk%DwRa6uH8|!Z2cTpgOBMIulgwrj+xY9azFEpwLoXOBd79XvAK25mB}|{F>^^y!h_b@w%Qv4j!al!J}O71avQ~jgnpH29S(FsAUI2o z3aPlIQv=p3=g?@$k8>MRax|-NsdxCeP#R`VdkDE%Z5~6B)I{>W)P0?QYPx!JPDN55 zoR(#nmILO4I89zedzVf*hMZ938!^BSJuxLO-7C;SK_QR<9~L+osyqbwsE5I=L~Ujb zeA)Bpk^Njj9i>LCDoZ9d<73YAwVn{Bc)R6MA?DG+Rq`F&nFq~)N_DeZzyLCCECHrk zWuR`+29DGZgei275u6_~22z}h&@f)Q{P%BHVk!j5;<|Go??&mKKWI2t@NfV&`|&RF zSMkM1KL8{A*QugzUa@QcA1FmRU0+IZH(|;<*<}l;AD3yo=E_mHAAVIN-#PY-Ja4oy zA$`6+F0`p;`6k?lHQKy)R_wo+UI)6eC1Zq1;;5u!14?D~{ut&^lcE}B4$v?k6)Dai z)#_FyGkT#%uZg=VdXinsd=(&6=fWgFu05Ry#i;>CwT=p8Nm6GnH6HCX;F96VA##1j zb@8P?pF}jch#@b$`6KcC`EIW zKdX1E2NrY!4QET99<}HDsW8+DvEaj~_-`I*QuG>;=`=J-_*duIAqb%F?ntej28+62 zcnns|T0W*w@E?!a!Gy)DcR+BGR1(c}J(=A)SU>`hq_MBoum>KCdUf?E3E^Pax z9WVF>=s|t-K$q>`dq@xE=0g)ttQzxSe`g}@05JTF`9IZ3*D#DyP~OBiv_4H)btZuu zR8wvVogItejyLTjo@9XfnqWflgPJQijs;LqNyAm-1G)Z?{pT>$QC{B24bH!sUJx!} zo(Et~6jXnsd$F7-{&qk+v^Xc#jq0|iF^yWXvKQh0Q;0srrUMnu;lFslke;}4q}8qr zp@#I(aXr#H$TI3wB+~`tOTcIN6N)hbvy-#7QHy&VjDkg%ng{{B!^s$Jk`|t48nMKr z@)6|jVDAb)NI1vnMjhRNHKuKhFufe}G5=?~ReA`_7N%cnuz^I|m5yCx3`oEENs{W! zslG+p)cEZ%XS06KcT;*c_>1?Nl>h0ot+FTXzMTs};tR0@$dstzH0&z}l<4u1Zwf8J z2(WQav`^}3AZf$@eqKoOyb9>^mHLZ3+?NmK@uuAK7`3@yOB%h)^1PCUb^v>y4&K&p zh(eN1&%!sN5CY-TLwpesi9;h>^Vfoha%aK7+k?Z%+YrHKV)1|v4!;G{aVHOmfD4QM zbqtY%XxiDVduSM!;Xg8ZE*Z6)t;?$Bg0^sm9~@s7h(0YhY{&6!1H*UrhB2Q zyndmZGShZ5YXq^OIqN}jO%grfIjR6GN2V) zDOSCy;ar>YeCuoHPf(9ADtPsHS9NIfki&0Rc3zd1xZDZX_4avs4d6(A_*y(J*Y57# zr0VIWNLOWij$eP$Jq#@|Q=f!pP#u`nyK~Jb@lSw}w~Dqg)W1Qx^3WFl7rFuGf71=% z{(I2I$eLC!3`UcN2m%HUn6BMXtY|Rck^HOb?U3zirQE4$&&0kC8969HBVCkQbRpyS z$wmMMje{f0**Ipmm<<#dBUYHJALZrwe$SnF@rIjyfs*}kv-q-kIr*=ZL>5X6MLKa~ z>lX?Ib}E#!M@8auC1P^qsFLx8iPQaTKB<$yVu$gX7zq2*Y8d zKMzbfUpu0rY?$qC0Q08`5llJREnJvbC>YffJ)b@heFj0cjJ%5XdX_un=)%VFtm!3!_u{ z*DNjyX8p4vZ-@GcJjD`Y@}N*HTd`luil;#YvA`VU#Ggu^017Ux-mGYhTY;qg-DdjL z{jznNMvp2iok5Mc>YJ9e9UU|XPxUtIH5FM#3cQiJZlqM>77%`r*1@Ym0)NtB0>F+x z5)aCult9EZuZ$1qtdQ%vdVk*4a3~mXQ`9DrILWHgOCv$Tz+H;i zM?i{V{ylw#>->e|?>T&eMp!t3L~NmsGg)!($w;M4&TqSAP7`5ke!9MT*E;L>c9u=M zu)iA&|3JP2Ml!xvLK13bggZLUBMTd-hwm8N&g5LBj>+#i7KU%UmO83sVZAOc22Qw` zA%>^c0NTziT+gIg9um%QhoRoQ+lvDV?45*g^BOH!r=ZXH%62T;wLp6`cMs#7kZF}q z2WRjT-GzN0fo)*M$)(HqS|l0Af^q_E?mcWD_bHAG`ceC1ZH#yt&u%=f)qaodHPLI2 zxD<&~wLrSUk--#0Pe+jKyVNuOuVc?K=4G;oyYwbsoZamSK~nB zpkn&a2dEm0!n^nnr+fNkyx?JD1rH@74@N3;OHQYn`1ttTlMS>26VDn+XkHLoQ8*F- zg$r~OJXa$Y3}QV^2_u5%d6#bjeL#ELE_F{;i2a? zz;JZ#(hkzuR}=w}RNKlvatH5^40Z2&TKs zyQ(b8g0xvMfwy<=?;O_RICXxysb?%`fOTX#-z7DA1oK64`6RgFgN`#Aw+;xW7iIr! zY_n|4kDDU}CS>C%fw!$4$bIeGtC)d53D3{W3q{^D-I?oL;kn2K6S`~jy|2goLTB{v z9UJuFW;e~-t;fQq$J(tBs!cqEd2VWyS3+RL>6#m|=5<-TC~o>Uga|F>rywqvfZoNC z`#M75M`(X{1kQv51dn;h0QLlfNg6uu6Dc0?b|OHuxKS#-A^Sg&l}RRZ>r@CBlMHnt z=lJlDnFwF-?$;Aj=Mn-hW=Md6%glPM$4NCa!iG=mMz*^3Xjw!AS)uxQG4{=pJ>G!3emmlj;vF1B>0t{ zNjIkmgzj`jE^&%Eow|18C3yRpyVtw@# zo7+&b;YR14LtT>L2H%&$%sRX_tB+!ZqX-69TQ$UY8|Dy&z^of2rB4wh;NQ~*+|w>t z&6b+0CL%(=4VGzT>smBhn$t=*;;j|bM4_oC;f%4~!U=q{A z(`s$dirqCvaAjnTT5J)^F#c7woBqs7k&au5^S@{*EZEF0o0_- z_nvC$5F<>NON{v4^5(ySfWTi$bXwFGD2&k|_&V0bl9%}$3m632)HZ%rtij6GA*G37 z_2xU;)ODSf)ej}dOIAx-WA)8iNsGD5y0g*37)kPTx|Vt~yu1~iUWv}S?&#U?8@jyi z>eHKx&hC#CuIl~j@P6IhOwF&Q_qVf`DfCBQ=Sh(8VkU7NH+Zg=fT3#19*{%clCh3A zS7R%SzpylWh@^kUOJAG%YhH@KYS5lEqU${4iV0!4gSkwCz46alxjI|y`1F?vOx)Rp z6%ok!duA+DV&zP?ru-ZHo`ymU0>QLRGCQ4>aj1-l^xeyR{@fRC?;x3OWl21MqK+Tg zI5ZXdSMazJH#Xiy0nAmeXz>29o^ySn>?31!-La3yPu$Qb+Y*%!1+>v)AP3|h2oq;2 zPWEseF}rD*L1+kdSS{+9wPci$o9%wmwBGm;R}#(gnXo*uh@r+Y;&_7;-dc;H%3HH= zF|RQW(}=3*Fsy;DE%8DdBh}Ar57vwehza$c)&)KHdKzj?RXS5^4!xV4z>&4Zsbs{d0!wp@^uSC{T=M4RaQ| z;2-C3Q8Zr*pjgaPn;_@IFNK8PXHXxNU{&1iW`>_QE$Shdy zBm{|pn8v6|H_WNQVjwsZ7)*MaAaA$G)?laW;#Evk!=m%2i z5nCiFs=SqD4`)M&dn#cTWlB+7iq#JTXVzrhpqdk4nljs<7#qJynEO2<>PAVBVW&J) zR*K4Mfj)l`vAtDLopu-C2R?9V^ybcoA*q@-6 z0BYy~i=<9KL<%6trwG420(mY_1ZMkS87ejUmZYXEqb%Lr*v@Odo=5(=OsD-@^jgy0 z`fj*-=ij6O z+hl+{O;4_7oYKiY51d(MRaUP zR!IUYG}!m{!($8c<7vTHt-^CcYByv>?-AMEAr%yZ7F1Y3PV2Z}fQk^JSFFhH0iso6 z5M|@-IVumg%Zrzfd%2ZSnDoz()GuJDk)Sjl=(xL0BM!dh6l;Zl8d?c@Fy+SnQjs+M zB}RugwLva)S6Z-YZ|l;euTeXHeRoz}`+>ZW^I}N$H%2!th?=A~2o>}qu$9D|C3CoK z?qd*XeMF<7cWs?`GdBdw2>rs001-J1yorHS9uApgn|rzZgMItf%6I-J8`(T8bOnbM z=kOX*e+29GMMx16?K-oc1L1Dc+?cOG(4tQtR!!lHe>|*za6hC7q&EGXijP3h^3Un6 z!WW?2mEXVY`1+1bP)CwpfTn?mlOQQ}LaIxBr08deSlJmMPAUERo@I0FJNhqmDtVH zWaZ!c^Yu30?_>C&56q&sBqyv|qW!F7Smb-T$Ph50OSgDqFw}##B&PruWx4T$@I|Hp z(DrNoDnOgg^m0^VBjD=n5q#H)mwlnz$L<9C%WU)2s{IP{FdKa3-fY5oiAY(C!b-5z ztqCHz+>M1Ybcr}7et?+>TQ4)6S<7T5cFNPSv!h3+&p^ig_H4uDC%?h^{wW_`Zvvn_ z(UB(5s!?+tZ70lAlj_#m5w^JX2%i2`3ZU8AoY1f0OW$H^1`MZ0hSlp%*x%C3l*H)R zFS)0yR?0_;M#*PcZ|E3bjw~H}rFh9cW}ds=w`e)9>9ALLbZ%3UCf(Gn# zE&}jC8r+kZl;U}v2-4=IDhL#yY3##1g(cPGE65L-0BEAz(Ic9)eoC?N&|wnuPCI45 zA0|q%tW7WWMDB4)Z6lW3pia-wA@9)}ym`J}i6a9%UQ(&O5l^Pi;Fs(EpEzq2S!uKT z?UT)OyyY(Pzc-Vlo{RqPQaa_Tm`kr>|G(QJ_zE+x$%>f%Y;9H+vRaNbpfo?MUvuRv zl|am1m&0<#Djvd%1LTxrNUs0Svhl0dg^Ueq$UG)DbyfZfXW%&{3zyhmp|O^gvHrJB zgy~qpLfo#O3n15&f_xsltJ2zcIQSm|d=Z2*lVaNJNR-zeOg@zK3c#!s3?L^GgXkXu zl77ExW|RwFz{1ZVmIQPF;tu#jkRDPiCYCqATbLhTDmntf%Q}5f9fcnLdj@B@bv~tJ zuVnA~4JjvKpK)D`Pa78|@4X;a?*OnF1n|@0_|n8YNT*M6d$u$d+ETM29;#CDt0DPm zT;2;JxoO;dJjeO_P`r3B+38Bt?-z6Mm+8Ygkvntr`{_e0Xd@UvSeXOAge$>x3ZJBF z4_iLfX;g5@%`!PlJ2}>W7EL?(e^l{**3dOGGIq~_WiG}dy(iYy33T=rtHwYY4{2L0 z%0j4o)LI%3P-gDbscsOv&loevb>5rQ>=`j8X>_{;&L&T49MuXQxpjk2_?rV*5z4?* zRsoF#Tik&}7*xF~wH6HpyM?GNwLDkc#xyY7biv(X7lg~m?#f|fuVsk6~Df9>D95U5?M+ntze>9@O1gThkjih zeNL0LTh}-^rR^Mye0|Hat8ag5js_bf??#icpOY0!MluI;Zd4~CHk#@-cXnjcml-q` z*lvhws=HrVrK!6E)^xYdWcf-xp32MI?S9p&9R*HhwrEV3r&m*NdY};=5!(BKNI3{4 z<`9qQbba5#JQaNF$@~zVIJY( z5=030G*F2|WuQYL+yU^>c@P}~@Sq*WxKd#0Bk!L-OrE%c=sGfx5Q=thd{=dYTJ_5c z^);%m!m}MDevQ#yBIK)VF|6_6XDr-<8o##ow`ug-{xs;F*wP3YW-_J}npSl}zC9Cg zM1T~-o(y>|?FpOWj`v>&4f5}d+2gF7wuy^{Vl(kx zy2gFL@q}Dg)v97%6jW|vOZ`hSRTdc$I0KVKdW^#z!vM@^9nvCk4b|8tE`T<3>A?O% znd{G|x7>{kzaJam(Qa|jO%2PCRgSxDcCGtQnyjtwU^`?o<<;L*N{m2KM}@ML!{$mq zpaCn@bev!GyoS$5HHbMPbYEZFEF1pB0Jul_f<%Cw$|?pe74K z8!rfToaj_FQFSrRu_0_e8f_(G%MT91SV`V+hkVy;} zgB|Q83MR>jJjPma+Fm+$Wx)z0eORzD;t726oF=jPx20OWb=VRZrhNt9Ft3(p*f$VA zUKGKmDb7irYN!l~Vqnhb^<)NxOPn!?HtP$mAVLb8urW?iwz(|?TST~aZlN77M3NkY zE|~Ya?uQ$vg}@^4Y1Y2*Z0n~D@G9ZYFi1)B-W0L@Wi0W8x3LWWQgd3NlQ!@9*svlr z7@@eMhY0neS9|ZfN^n82$rIv)_I%W*$g)k#le{V7;?43;*Dy#Qt=>dI;F-yVmtbtA zYR%qW_S&q*w{GqUIj0%-aw%(Cv~vTk1h?6s8#;sgh5&Z6`$Fx0{1bBt0Fi%9ood(L z)M1dcOav!tgB53@FdVR!Kdv!ELmSe>QelA=N6d8O(F69-t^v{hLgfF@z9QW1RMVdU z<7yis#)%CZudX zLQl=_pW-9FcnemZSOT0pphdmbxGa$CI(cs8A7zYg0m~DJ)V{n^dMR~GY;sEsaZ-3B zbTPgNClrh@_yUK#PO58R4rZo-Y3eBTy*;@SBlalTEpbG(5gL^Q^H~wmq)PA%CKPY^ zWDjXsfvb$o-LPXy=es<)Y{tZ%-MMRYRWcFJ!Q5{%vH98!+K>v z`e`JH&SQ0Q=-Kgoxox?B9T=C95zT-WUiB!t-SfF`R@**b^3m(IFj_*8-Ph4PPbN^U zW)eRQDF|(lld+|6K2F{+uqZ)!Kuj{5X}#?dWb0l73hEU}1P@nNR>bY1D6b21lcJa_ zvEJZ*4*`FQFfbDmF=1=Gv$KxP4hWfx2z0mio(F$%Pq`ngLNVDmvIWCcZ|~r5x|p*> zUQsv8c76RV|IGBR`F+)>V<5I`(?dTv(uf4QV@@ny96TP6Hk~;W)az4Q>Gh8CWrU2r zct{`&U;w5Kcb=E09I1Z^EzSMb&n14Sbk98X%K0YHOHvHZeO~SN<@Btatb4jfCz~pB z3~FlY>O%Wg-+wLhj)n}CjVJk#Mm+j3q#K;5G`6Hdh#I!tVwv@tr^Uj!Rul-+kmjx{%b~>< z{YNHkD!fs!GvXU)w$0Yg^<8tF0V2)^8Rp-nB&)CldM#2hZ;$&^5e{m&$v$-Av8J~b z7i{Rz8f;Oc0W&{P;UQ!~WA1qfSc0Rx+uw{}{0TR(%a8iMrh0VGrdw8k)EO7P*0`%x zfJOAvc=ZdC=`;wJ2j;YvZgnO-KeohlE}RJ#DO=ML#UbyJ{hi2;1(&Dg0V6Hp8F~B> zvYH1m?F-xA&Kl>el1+OLg5q&P5(pT}*;+nm>X# zxMurtTwZ%Y>9+3zj~*;ByjICr4>%<;01q!1Yhs+MP-7^_Tn(U0q`9fmn%tPpz?9Ta z&$O#xJGgcM67FRRMmL_+7b(<#-)H-5ZiKCn%tS|J$S-IfInbsxYs$bAi0ta$;F+MC z(EkhOWBFgGyv&Sjtp8y;o7Q{^`U{{X?R?OJ+;grzkx+5h=W$nG?y9<{K7Qzgr=9Ze zihu)8VlPy9oNPqvb-5H5NYekWMboWacJ-ZUC|IVz&r}Tb<>RcBaP`QnEiWqze$$8h z`}@b_=H5PegFy;Lt8Q}fv4j$8dXT&jJRe2tDNB7!-K*^F&918RY3MMk@*1#{weU?o zDLKp$ZBbThcfRXHjV4=Bga2N`XitM}-)!4Mecn?ZHp`}e?!@!-#_aJ=rJ=U69`F2V zII+WC!>Mfj&4FiSNuR!5YW(Qrt)_FU<-DPzS$^Qwfigkg#Qi6R!!CnJ3L{l^^CZYF z0Q%37asM$m=Jpv{w;+TikT3pbnhd)NG|E8aK+7CMu>p0X%>6nme5)O;|C6m}ESI=|bC zKH0CxH}#Lxv+hf-g#m+0xVQ5G-Q~DnQrPbxpG5P!7E8bL^9RZSLxh{$e_&K{4aI%| zYVGY@?X{0pJL<2j^PT}1r59`d30t^}oY7bP!-%HZoKf4nE3talaf@r37IOrM+|2ax zZp%^g@Tj_{KJ-n(%j?xTh)d36C^{&{W4(0PA9CmZTTaj6x){otn%8Q5BTGfmuSTHq zMM1q^KMBC#QAn@=L$H#99?55j1IwimRSNZ|-3WGPRa_snQo9nk_ zpIKPD78^cl`pN7Xe}3h71Q^V_hpoH`Bnx*#vgNQtW&To6$18b}jvt<_f^mreJlpS7vO|2t@L5Rn=L zzqB1-bb+H0SkDZwpm%K66}i&GHh-9rkk52&fo@Zl25s28+ZtDBTc=G zX^{-2;vaJu4nH_eHq{$KNgzs|_6*mGOnyU)lyG1bzfD`gN^~HmfWg=Y8%d|y%03JV zego-eN<60GQ7CY-i_mkf0pY?@vN0G7QQ9~#O-kL2r~C)FCPo6xXIbd;wiQFzFnM73 zm_4u!Q__e|q45`pr6SocSQ}N^<>;<2S+i3=4Vhy^I_SylFWDUdneRvxQ8p00`9jC$ zZ^xjHA_eF%kt|ewRh++lB8~{VScv1STs2P+H&vYvtHN+HME6FKZvL}DwDfLhz{ z{-ek9K7iNkYB5Der13EE7ldBdq`X!gc{t8-<@y9*=cSQ$bqsVAorA(n#g!zGH7>!$ zSuOlSyIckKw}6)#Sk?;))>>9y>*dX(l|a^AKk0vLb>F>nZ$+si0L2U+v2kVeb>ios)6xQXuQdSC|S$-lSNe=8MT{r_JM1YvsLp@lQ zPQ?Yhvt6rEK8+!(k01j)qxPusQednBipai$VvWTVEKR8ItS*;!YEzGwryJ- z+qR94(Xo>g+vwP~ZCf4Nww>I}%$>S3Rkvza?W+9)&RO63-uHQOiAlx8tHwZGMVb=O zz-&wH-mct7jEO_c$v}U(H>RE#qZaJ_jRRQe-@5A)I1%Xksni^0fgxH8kgJy5A44I_ z5g$V3lSTroM!iY}4}X94>(bLeW-xq+`Ok|A1MGpr|HxabiyK(6H31r@MA#xg@Nz_4 zFL}Q?PxwH{vONw#AaDo|9fS2%jaM9g1&*V@(kRE7akUzP$(ygYQ;lRw_5XGD)dq{J z>&!i|pYde-i%K4$2y_hT1Ri}WLhYEVT|`mp*qm?#Q7)rR25+dNf^NL8_+4y!Z-bmC z4-jvHaw9KJ_)GAqx@fI@!&+2N-eU7>nXEB?!Bqr3jMt>UzuXZdiKd)*ulv_tpR z-?q1K3_0);7=HvV3;m?!)eGD6DXLV7sqWSyCk%&WCL6n|zClT(&xDEbuZmXoN2Nq! z>%|Q)q%v|dkRQ3_kYLrrvq5*51CS(3GQik>SSLQbkoTncibyHdJ=sAc$t0x=B+v8& zVXgVXmf`A`nJ*B2?mBYR@zIj&d(%ST=MuWyELSvll*(d%b(QWyxtpQFE`_yF{d}xQW31Pw^4?k3Q(nk zNTZO<$?r7^!2(KV4#|6Ejr6|2YlJM@X(&flEYnNUA7oWY1j8PPj32E9J~sdGP%jKQ zhP7*jfG`(_qpBDbX8|0CvMW}!LgILHwc6t<2kE(ehh~@{o?`Q8Xdv_6l3n)2S7#F|4$JM(lseHiAAwulh5H+Pnffq1xULgOP_Gv zia8qEZO?A|_mvS)*2V9-yIEu7$UK;Q9xw6keP0ZBWW+uuEOajQN<;L2$rg1HoPpjP z>sTQ97J{HVB*vM+CeWwrF~P}-g%pgNsjDG-L!`d4i>cu^kFk=bJDNp@iG;LvUMr`QyCSfggnNbxPpEstHJpqF4Imu58Zv|&@ zeyYD)eTPUY8gP(vjbzL~Mu(O)Fne0N#37V`W#Qkz3uW_Gin(<=Jw-UYPCgK9e*ENZ z9EG8BF=$j%X7~3)0-I9*Xa-yRh?baM8|O@C>bRZ+>bcO99 z1`RLNwB_U;WnX5_8w0L>qAB~g_bq`z9_)pEhx$g2j%!-r3?;)L1Nl0nHF9uZ~V z7KYZMQ>_p{g1DU}*wbM1(7~fP)%ocKLA%Gj_YQ*>P=6!wDGg}ZWK|`gcW(wkqpw#p zef;b!5rAIyj6P;&j+2L;@}U!l6uyT8;+F{Eg}iInv4jWz z_j16dTB!K(yJsZ0xbh3q(n1^!V0Drdazy|1QpSbByb2hBb?SromLeCbox+rPT}UFc z5O>_T|MufB&>vLbp&Ellwvs8;(s57gqk+T8sbQj;#MqU%-pN$e^?$U6A`ap$;WWGo z+S^%Aj6hW!95ttjK|d?p6EqM*(BAp3Ng-hQ{wLzO_ix~=a#0``^VNA3I6GhhAwPBc zG??dPFcct>f*(icx#}+@jydtP4awO&$$~D>4EJn$Qy(}}dV{XGJQVQ#dIi+Iv*|x`fxIHGap+(_cx5Qt zs`7d0)#kja;xms8+YVYsH2A5DPt_>z?V4(K_IeNw5{lAVWc>h^B3fHu0bJ@xC9bn$bU)Y3ZY-!_MBx{zaB=RF{VIz}bl|3>glrO(s+7!^ zRo4Id>9y-~+C9^YAx*uwOxo6A!`30ABFFv2Ba)&7vAMk_7US-^@br!aR;uxr< zTxRV%ad!G4wQbgSnGH2+X}q6fYdCvGs;E*#)_OUzlh4Y?nE9xCq+Zr<8a&MRUmTRV6 zInOTp0$YS`Eo$f0fV>Fx8ahl3xRbm@S3UKfO zxPZv9DCqp(r|#!MgsejT4QAVo?qkJH3*7wojJspT0403S=WNL2nZm!NGtJt+Y#*Wg z3yWQTQ~_C&^HXlVZAX4^Zd~Xv)#1!^k^qN`j76FfvOH*0iYO7KuCn)NgKa0Zn(DUn zYQNF05*w{5r0)CuW;bKxbkrYaysrMf`TZsG&z<@c`d57!k@^a%8VWIxs%Q!~-Armm zEGmR5U@G5DL5Volv6DqaTJv9nVizB;z?I-LwpkIeu&F!v-cd|*D)ajX9O7EvfG<~T zSQ5?HC=?*~OsnaSE24~=zbbI4YG1Lyb<5+Q7quk~py^)lzZ7bzO{8)9f2D;QXZ>YG zX&CX8v2&UiD@-=?#r8LM)^8yEV>J5Lf2S-H17sDZm_7|@JsiaBt}-8F`WO75%~R6a zDhV+uWgoNe*2g~~08OG!^ivN8p!1(~n_k(+Uf&&+eM&BdDfd;OjzYx6C#wIp1pKe; zl@wE!+ms9Jc-#bn;5+lKAeB&FQQh}G;B~0Tt@QE{SKgD~&z=&f0dDK6I!*HBLS zI9#3yzMP;X;m(tslo1|npZy-(J%Q|`fFfnQa7L5S;*f+8i=yzoK$F!2FyMH71k&u# zRBS0H#i`P}xZ2+hAP8C*RFgBB$84M?FX3j(1djWAH-vv(CAaLHpK|7awrHkRn>ni3bZ+Td7e80af&H z^%YjwViB6Kh9m@=Bh$q)b>g}NhEovr1h{B%<6Q~?iZZJUKzBOECt*a2MLMk3H0cQ8 zJJ9an#eS+@4`;DLHIK+z@laTlQzr+<>t>sHfl%o-OE6^})Q%y@sEKCFQC6c&5ejvJ zDcYuKaS=CjK#-XG`%-)~VDx^PCXTe2k7_!v`Hvlqb4><0&Q5&H|KX=@Aj#WnT9$KYfqf$)@RiB3QwN5899 zMQ9ERgNgqou~VwGWvX^$F7$YLTA@aXI228mtcZ>pG)z*1mJJR7(@ba00EEZO6~2Ip z$pwIvbIpqn1BIox9a6#biatbbR%rIz`iB+!KBA))2F2s2Y|Z29w1TKcVYRRy%O?-@ z)jH1as%XR`kTJW}4n0+)DIGO}WjnoGGS}UJ`CQyqrZJnJ9r;f7hk5{>N9&}iFYRNl zSJOUS8uRKKmgeE?eCG1Eh@ht@R*?*A<#e2|439AuEl#?cJCkmFq|DoF0Kb91L94t{H4(Kzu`&bQew0gTlA);m1_q;rjtRP}_0;W+j8MQi2@{I*l5BQ%jL8 zXwQ|7Hlc;<#XAD2=VVABnfzAedpiUg9CP%RJ?j}|4k2Y=p+Fse8DK5m3T5VJVK>=P z$lgJ85^zu1#fU1!1FY-*fqc7~-@nI;$4L!fFCS7!psd}1;T0q{vCKfq{qqW#|Jec_~- zbLOq28q$*+0i7IG$v;W`t&Nai@J%{`4*I45kFmsc2!mX3jZ|6SkO{>e1Z&@zR_456 z8||2^8P)(YFB+CD3Q4JN&KYR)4+|l397(@{iM`No+?<_e$%PO}x<&2SD|_=+vFS%9 z&f|~Wad3)V2uLL7z|{K`!`$V|=MR>{QwuY4M2UXu(gRzW?A2&+gEwpG31F$}Ow}_( zIGO??!kGenck=X;3LEKc#nO;5VI4z^t_WY`w52jG9M64?Ivli+_YPsxVv98~(|ip3 zm!F=M&jpb{5|L6%Gk+GKL4ev}jZ~iIyJ(n*KXjZ>4*g<*{yNYC= z4D3j>J?wE?k8{m#kA`&S2M(;yql;R!hi*Rg+x4nGFJD#jdB4)GI4!6=f@3xTJrtHM z6xnQ;-o=d*FY{1P!RAoqC-dSwr4+~DnBj2L0*0O>H{GQQi(Dmnx5+rgW>tmt!U% zmOE%HLH!Y0Le=;2ae5qY3C2=APw%Cw-h>!32Dm-mX>e=xcU)5>Nmf(*xfsQl1tVk8 z_2GFvJrnqvoEckUXhnwdHzWy?B0vu*iNxvORblYY6W-E72f|hdmx6JvH;b=6JqAG? zY}V5qBuh7JP19e|vr3C%fhhW8ajLB}Xgh17emY23I8OZ+C0d*Qplghckp61|ZalXb z3$RH(QKr-v2GR;@LLYk73YXE7UWz<&YLdm@ZM}dNK#ULhm8pZzfZYqSdSJvaeV^>2 z<>`MTkYO$S2WgSU1470y?(-VeFV=YGcc)qTKqVd!dlWf0UU0m8c>m5Q6t3$H)l3BZ z@nAU@&YQWk_w7z()aRYg%}x&O4X-nVDS)L8(t8VuN-)h1blMV8@24u6og_kUgBSuK zdh@}~X#~!sh*CD8^qYnWPAmf?$3XDOv{$OWG@2gFi5_bmfc*SyAPtQcDRYUL69v$I z7wb`Y7fb#w`NZ^X`^@Lh{Z#JMcn{uQCoyb(MR|zu5D+%EIH$+=yvfC~tK9vmVtV<9 zRuqG~FK$lr8L01H;cAbC19B75gh%)yd(=mm%ck!-ra**~>t1KKA!!o#?N?*U zslsqjn^ zTXqhQR{~jm3Uv6@peaHN`XF4WJ2#?Qymra0I@uD?#Kz0@4LlMd$oqdUvW8xOD<&j?{D#?45hZ6NeM?uJ9FQ=yVzTG%lG-z_51f&_<#K4L+4 zciS6d*{9rpQB(dGG=+oX|D|jGU+;*8<^Se-e>kW6t;j!W^wX%#)vU9Vo9_rYtAb2xA?u^r2b^Taai3q zDrFEFe0+cHPOT%dZ(5)q(ky3$&QoY)1dfv?3tqRrdb~$6yFNdM3dma<3U$tLk5>VH zH4?FeVwp*{JC)?Db>oybpE@kABbLFt&8Q{~mZk7Fj4A`;l1uH8^S33Q>#DSGZfQ2r zuQ&6k%Q3euZr;=B>Wp1UQPnSNp$t*@i{q`5na^FXo7o$LxYd&&Xpn_cH7Aa5770{e z(HckEZl@G=APkw%pM86kEH;-){NxjLIy?v@%AOz}m-C(9xAYV}%ss&oRgT%r< z&JO>HfSrGQAs&}+Uz+%=G&csVm)@A-4d-v2+I~(3+Lc^B$!Nv;G_hjXS{MPMiupAL zJf`5d?+=#%sDC5!3BxcH9)i`Gpwi#Z*X)jgl@Tx>}-B)eQ5awFKKAB!&| zT>73w6d%*~B{0SORWk!B5Z?iSTXuhP*18`);$$QY^_{sRH-RmGTBGd`C@6J6EN7%9 zGmB4$0t=zOg79hCwwJ(j@OvCV87gZfnH>?h1w}PD7txI)I;C>t!=4*956$YkpOjgT z&~n5g$jz#5O^2`f@@pKXnMeMxsuyFIt=Ex{Y8Q(x4~&PDkd{J4lC}U4-0R@F!h1=R ze5zB4V6<9Au^26D7inD2!=maX-}LL#FYNAJ(!U zSufw&fbX~CSO6^J1{!9ICsWOvt!}EQRk7ufFp%$_u*p9^*mx+1Cj{jD8y^z3cx8jJ zX%0_+(v{y*0j+#-MD_rQ8T<&=1iHlH^LEl=lK3}$mem7uRm>SksY6af2mUx45 zlFvuU?g>C!1i~r&H@KDimkR558RiEhm(iZUuiG5$o1F9)L^41O@CY-q_AC`YozW-E ztv?|iNPh$DF=c+6?s|watSb*klpd)Q__yAe=+9Rv5Nz!!cMs>RSnUcL5EGM~-pM0e z{Gzr;Pb+$9U{hk-NvG?%+X9{g@M47>7%4pJ-o%4MNeS-t%O(&5Pr&blG^f55Oa(id zwG+a;{7b|M3qWu?jr@bPDkPYdd3*LGMwQrueu+ntslCuF?{fa_h#B&@;vpQ8lbG9q zQ4KR&WHxxrphc`aS;PniupwG+mTcv*%%-AZc7P=!ZHn|C2GjbBp`sw|Ad*ZAm7AL) ztMUo=T?CYIH(tI>SS`)Rd|fWrtXN}V=9!CsPM8nq1Av48T|%6bLChnFi~2~O@;RV? zA+Ri$)=WE6lV}Stv|_4zPf+U44p@rW7Z=a)FkL%Hdo#(>a#+^R$c`ByFC=6pWk6+G z@Ld%O|E^xY;SdyAJ8z$E)4m~lQmKa~$b3|6t;~0FUD=HeJ=ICHluM! zZ9pq^-vF5yDrO!I2inMSg-9kxzZloN+TuzAp@`eR{q!S)TbZ?WTfL6-0WPM&e`)Fv zjl8>-av9=NIhWhSU;(bIur54Q6sFBM?z=^C_=Nc1pw%UHN9?9dfl0=wWk+G5iYZc(c^#Z+$B>vy)!8^mF(8BJ$7Y$R{&(piq-X1<4pe4mSN0Sj~X<-uHX!7qjK9djXc<$--6xFq#k8qQN5($|U-^s71PnXBzov z?HC5k>rcmfX9pdA@;i&IgW==4G_dV3E0*niQIjo{f+4sI)qCEI6)+)Lo5Rw;FC7`? zltL*C6HNCw&X8qwb<84=__5Gd+4vw+MltpS$*i5c_L%LO{+|u6v}iT3a}DerkpO~& zM>b!7eToy)@q$pd6VXp>zBZD5bV9-S0g_mzOdBJ_EQ!5!dsx4(Z6VAWVYf<8_h%H> zx|yGU@88oFyaQmiW{M6sPv~N0MAOHVfvZa&MsyqND(wj89GRTlGz8`jjdeXTSSS)^ z_v7d0PD_YA5&ov01PQ$6tmDZBynyHZ1($r&vw!QOFy}jh@X54fvlyuS@|m@&9+3K` zieUsn?&`f6&O|=Vf#PigveVZUJ8Vqr(tCH+zo6dtNV}};fWEt{xV~LTTr6WvF1um8 z&$jWcdqWQczpcXI8x4X@qo;*w<7FqlN6v!E6-(iH(YkL-{$zbc*UXtEB?3-~7=ZG| ze$h3bv~y=P#hDA({StV;ZU@CI-!_JQhXI`G+QdYUE!MFfqg@CY_K4L=@&BgBGwdN{ z{<=R*g+uU7H^!v?p%!|7&!M4qAjTXa7=mjmSwFnA7oPdC!x)H42spddiAp>@6y*ZCx zrG}N6T`b2Cet^&~U;{|cMr8RXrs_+6?(R+jfROX3i~rZw_P>_4T>rmt3CjZ|H2 zBBumV{&?^A;h7rWw|IKH4h?6Aj@-!WkYf#v8h${kFW^LvGH%2v}(r)6dd*eaw+;89X7rbAMhIQY`-E6gHx6KzU zKvk|w+es{CD%$JGt;mb|&CI}d1qleQ-AHQ*k;0WUw{%&5?a8-v9jQ^zXkIQw5q7je&MFZ;|W6m-MBLtCX^4r zvB*YFR4TzIgWQ5KZVW^wpvdX%wc)pKk!O}if!=E*NV#2bZ>7Ztzl@kqw2Z^@aG1i| z3MtUojIw%k0O)xhWZ;gF8IjEy50lMktCp5$TNWgP?JYdhz}cmL?ydk*bePp|s z0e7^{4d`#hjILKMNfXP|QBHDbsrgO0qPLT(I?$)GWfs}t@nSYn~8 zxwG_GiPFrqlerNnu>*r8N^d1u|DqH?(9V_oMIoD50AqDUVC8Q>F|?k+&S0FbBHqs6 zwqN0LK^rUN7SfSu7n%at>na`&DszpQx<#3F4U;0U&>%1E zhc@TNyOj&5$LV|^+M}BiHDlrBo+t$E5FkBfAwQ;M0S$^i$b19nHDKqW)Y4K$jRB1% z;^g(>nbqEdJshL8_$l8w=HD{c#}5m1BW4p;&%9~5{GBOdwNm5X ztfLyehiqh=%By+8GT4=X%~KD1J9IR7uzh^dlI~AsBEtk+TPf7LHBqjXFsIz-YSi|P zV?MHn6XsL$|Ah%ZR+H=z4K{=0U|+*hE47%wp64KvH$4|Kg1U4P!5V*IYwV%V@L6q9 zNVR^^l@H=Yf?yxPxGUfCA)>#0VA~A16`5Bf7HDYL1P*l1Xj{dzp1eZi89}yFjDg&2 z>%p@%kH-f@pMr9+n5#HAJ@^NDHlCC^ZK7R63ntH;p&ihj!{KU;qMjO zUF2Mb$qvSjbXbOJCFX1e8}@_ zMrP*(Kc-nMAkBpS`FJ$TS)xHcX|Xx=;6wr-dv(BQ7wJFKWndE;>-wD*pFlCVAw^He z9o6#?SOb+&EG6+_7Cnxt26rOo7oKiQHzIrlFwjkv<&?jAwOh|!8BI^96p__DSIqt{ zJ!qd;vkDea3_1?syPoogLtzA&sv*jtTQh_8wB{Ib);rO0d!YHZ9w3R4-s8I*Qq~|q z{vCjaN2@9_By5WXepP%=0iy%S`kIU^b3=}}XNzFGEs27H$3dZCZFzsB3$0fqny7ywx0&jtNaCKU!8$notP!y2#^?T{YU zc*ESBarB7`j06<<3zjg#%j?>2bT!ZUm+T;|9p|gu{yJjkx2mNG^aw zL^tXLUY4{(@vF@Zq;BFF*$eEFTR$oTwL8mIT0Vae^-d`OZklT>1J66=)wwe53J@=X zBXe`XxS#Oiu8V@#3bywNvY4iPYTHDcm}!j00zA&oU31W;qI;0?+F_aGOQ~-;dd2dI z63xB67jGZc_j3Y9fXTK^Dl<@zsskV~1*f;gN}*O9M=&veWJcll;seJ;2+!Bx-i*b5 zp8p1gRfaFxu2XAynvI`%cWj_W^l|8-rQB>bcB7jg9)^pI+6}`9lje4O(Vi>R4u@N7nzCQ4d(}RhZur zwdq3>WiooL;8{N$b-H%C)a^vM)>J%Uzt)G|Q%OZ(P2q(&5SyyuzUI;2+V=|R6%^tvA@>D`379veVCBr;) zPa3_r_4+s}U|x(*4c)}(`{MighP$15d&5&Q8urkg#Vto4G=EoA9RTX$?3hVOkbg=H zU_C(HO#H$zJYz)#MYX3fxYX>pUbVHp`#>Mtj;kI)U`GgX{B3h48g`*`Xtv<3yzzQ) zMDlx6HszB}=S0MNzZhZMTNa}k6RTvwr_AEeX1XrppH+u%Fx()F|!uI--eBKE6uE)zv*L8%J^ci1_`2;SF3 zy8ciloch;o>nOymT^XY=hf9HtYoFO9l`^l{oH+{z)Br>DGXm^1p)iAbboMxS8>^o* zY;AKPNtYF*j7+%Zu1Q*8jJdEE$>Ev%Xh=hNfFd!hIY+BOv4nb)oSU9z7^Abu{K?W{pLQ`!uEG} zKg0@*8G6m?e86A(us>cJdVwwW%Qolyk-u%SuyvBWJzjCJa^><{u{n@$^+ird$`d0Y zZuLa%xi;L87frj%5qGW6iU)&guIHD&z1SNX7RYhUI?5ZKE<5!KQp2DX)UC%3HsSy7{sJJkL4gM<&Oeo~I_SXIfCyX$ ziqoaP@LD@IcA135o{GtQxGIE^YuH$-VQsmo>0wl5T(9R}=_0Xzpz?Ns+8_RY-o5AC z-l%<#HiNA#!r}{8lTR^NvjX*&YALZj+(m@CL61Rw{=|^tV(Wl=nbm4{6uyIZg>Jps zB|G-W{Q3Raw*ik@k7&ksz)wF@u%~!HOUg+w_BL z+3Nu1C5$Ds0>GE0owB!}1X0WSul+G`4}7 zxIb28-+yETczG_J+o#IDVW`NWWl4t(0p&;P)&n>t-O_2;2vyKNej8f6ndrQ?^+&@m z%Ns#OCwI8P##2z0G`fjQ8jh#-Wcv>jH|P^j`e3IA)Q%76%_rO4=Edxq31->ZZlf1N z@byD)|1+LI0CUiA?Gnhhbr`s*uGN_PGm>^*y^8;CpMt%|GOS=lK)M^$LxY<>&S_s+ zu?2v)9p9XewvDZ-;0&tfk#}4CYNe%+iH;_=8F(L_<@MY{sa&ICSua1Yn|QlEFf|de za5jiRZkgwh=!yJQH!lL71^?HwH;!RKfFap;*MP6$ZOvXu5;Kt-0@wa`9^0OlP1mv{lVoz={ncAX?4#In=g{F&7q^jZld9k=MPSI98FCjaeFd|J9>*MVBB> zCwe0t0_X^b$}aWNPJ_dX6=)Z5M$F-$!>g4D3WonKl(qQXhx(9M{%ckt#sUn=T#R%# zyg87j*HOHHlOh}mV+6TDb+{s_(qE%Z^+6YZ-3wfr0cKZ{0pg)NUQcw{LKJhg7$Y%~ zI!)G<8S?=YY>t1ilmP?SU6u%3c&4s>!51O82p}24)R9zQCOK>20$ybP0OL~(_jnK$ zlIn@l9bP22dP0lIs}2XO zv#PNdZNOn*Jw;x#Gd0!*M zWtMYJ?+tjbf7_k1s<&cb82)3>L!w(v5i`t~&Epx;Gxy@iuhSO!bH_1xc?8tFr!~}TGd}D<4dZ7+jBE61IFrfQ{3`3iEj&jS<3C1o>n*Z zAjJ;$EtAwSkZoZOOVVd=_KboGH-N48FFFi^ORHNKr%j-4@S;yUHs6LX)5WcCwyaNc zwlClAmsz?s;(_usPC`W zF5Pku-R-S2|NYqUypa&WE%pQ`!Wne9KdXm0RtlC6y?2k*(eif&UAJ#4gGS=2+Wq75 zkoRYrd{|kp|2T#++#Wp!e!%auwld;79`~K1zyH1;lXZs~4s z%xu=fJ^%7kZ$^8%o5ZMJ!Djrmq~3;aij7X9-V9ID6pf8c68~b4cL3Gvu*AJz*L^?6 zg}2}^xHK~_{Noh8*%aAY_w$@Hx_%B-_pCgo^tXr|=nyL=)TB140`70YBuogSMZjM; zw+TTqzN;y-ymFYZBo4rYn=!;&a>WgYZ{&y~Z@T#Aj(8>C8hgPtUJPdKqNbcckDj`k5Pvi)CHG4Wl#VKlLH65l6lL)-{m?X zwV4Ss_HSp;$A?_cM?7H{ibunPAT-Ova$9A4U=Fc-l4yQ_IG40Q#j8sL)3mQJI58H+ zI>)KuP*5iq(77y(m0V%zywWpk(>pZuYa)x+)W~7wOycPt<-)HNSVJ2#jh-w7f?T4l zLi$dyfOsoDs6RRRQKlvCx_k|!kourl&139jkouQ0MMhjQzlspXwH}Rd9U%{~w$!7q zj!&dQg=hc(5j6)VM$?kP6>2h9tI(`HlM>gJGErBU@GR-y<}*j)b*GD9>EkIh2DC07Kv**-O^><`ID5 znG6!&d~NPw-alG#Wzlg3Ilq;f=#cd{MsxqZt-S*+h#^MUmm~ohOfry=* zkB8~<>L-om+pPZ^;3k4{gICXJaw|pGkhlL-I_mUCke8I6$WI&H9 z8!(o%c+7TMUUyWd7M~t)MB_ztTQ;lX-oSUVOBs*DOFlEf!3ezL%sO;7Y3W@-l_fYo zc)Z#b^?BG8J*5fwrv_G30VS=0oOH#M=iHa;iY{K1NI>J9#u6wjTDC5mww~4f1^^r# zm)@xWdq8#fmSb&WCi$nu4J8tgXhkYaAR5rKWHPZadnefShPP5gK<;iBYLuwT9zC%w zBhX(;D8=Vuz1t#V`PakI9P#F@Lj~D#+9;u)m;)`QJroSfBZ;k7d5H>)xxVcupe4a0 zD$iW9-9^)Y&^Ob~fi}RCpm2d*@G9Zd|H`;@^PVHA`BbfZgGrDK_rcmqNM28CB4~?O z-?umGB5z1R*iIsav+$yQa*B%!g`}|0`3S0H)8>!sLw)%Sz2fmkCu6u}_I^ZcSYcpH zL7oLe#rPj+i2pJ3q$mmgXZ-fR8-h2SDyGJ_zN3c&6m@zIMY_}Cl-F;)S$Sl`tOL+e z9^~Ji90cBe{k%zQYD>6TVZiA??YNttKDiHPXHyDf9hQvtu8F%B@4K%l6_Fa-(AmgQ zaO`9q?bB#eXzWlOm-B^0P(kwy$bidHxz$cg&_)M{u6 zx(_Jlclg5qXN_k4_-X4P%=diiW>XDzqn&m;Zxb~ebvIl^6E{{bQ+p6+?!bPhy&$PS zy9TY6ouI{}JAPKCZdr#xETUY25F!D%J=;E;>aP9lmLd_ozgSW4+MppfuOZKW)D77y zoRn8_T-19-lAS1fJ4@jUJaqki7~I?|qfqmVD@DZsW63fj874VRg*|t^@sOJrZfs1V zJ_Sn(lBpBosg<b!92wYgv~M z3bY2z2x9TP5h8Hn(*xc1_Lrx#Jps(6HY5=2MJyXyR%+(_+WW<)y-P+;oq-)hY`8u+ z!pswP)>^f=-c^eCU`=nojHJZP zWX{~jm@os2%3_S^B1Da8o12e_coUSzanO(g?lHuETtWq6H@y2K%z81%FVdt_fx5rk zt&dyH1ZPw zwX=ghx`X{gY6ltxe;vVdA*lVN0Eo1?kQ|RY#c(zoB()3OW%AQ5KEUiEdKuE5SKfZg?4HQ|bjSkt|LAW1NK zxFS?W9}>b!G2Rr|LHT^GN+u{zEG9buwAYx*hJc9&+=jVfh9Ep-Ykjts=b0W7vnQb0 ze`|Bijos93`66Hl=KBWAL278Pg&aBZ-+DSort09Jy`x);529(J2~}LR+25z=cfO?c zX5IJd@m-gUpfdZ^Kh6};zF-?tNjxW?E7nO7sT+doMl@Rk0_Dw-u+KFzy?lp&0m%2# z43~^SXe^^C3P}7GQ*6!2;wrtXXUm?pG4K7UXUtU{%D(uCN>Df0O@f1U>?P~a`bfEz zl`SJXFMGy)Oed*Len)8}Wa6Hl0=DdJLTV5-IG7L~SoXVO^Lv&eQqVSLc=)&AL}jrH zhN|liI@(e%Ro;k*Q}KQL9sOnij7-xZOco16s<-kCfG1^>482AGeRZR$#!g_#XT3 zP-wx385}>DFx&J)5YpnQpn$}Aw9d6;ISur&b_{3;h^<9EfM&BFw_5}1royvBYwH~u zN8eB~SN{;PUz02iC+H~#L&S0J9?orDrd(Mo4E8KL2~D+gm@-ya*~n4G zvb+F?vV2Z*Qo{_gMx>J@7oYq%bqLv>B-aIu3gg@JLIea=dAd_;m?p@d7T)zc#n*ni zSg;K4NUd@K@&?soalbc!V`>q}Xnh!V-9ln*RG{5X8kQw8!gH*PIWGE%?c zs-WNQBQ>xYD6lIiA8-gEBs5bdvQzrEBiS!6gs%*zTxpD62__l<(yk>icDOwiB`Lub za06w3wOh-TwGvT3>hI4msE#d4d;MXeO$P-}v51E^oq692mpxJ1!sLfOmlr`V@5EST z%cn_B@IK7958<5el83Zxxf}rhIcziHmqLGz2&?2n8%bwtd(}G2OHpf0_SDnx3$K1Vyx4K5HV$A?;XkWSaz zFU1tfWlTCtKhI;nA8LEPEJ4Z#<+oda zmZN-Gd+|*_0{EE{&39fDJ|hD#WB%a9gmZSo2l(%=Q`rLqH8QgI*Ue^bFYN(FM}~<@ z4uaWaU%EuBBuk7JCY^nG5q_pgF`5FUY~+G;UnmB}?BIBM6N7FqBg>#4ndiWkldG6u zvu{)yU>BXVAhHLN$+7dME%a|n-E8;Au(Do+xif8uL<+P7BP1fe<81FQ{C;MrGky_L zJd$LR7Xtt#M}7N2D8h+{d>ly~&+@WG&Q!H_Af$tnP@BWAh^bAExH+q%10PT|pol4_ zEshHgzefEl+-|>j2#MY<7o? zHOj&ahYW#Vk3GPb2-%MJ;={H44z*{KNPMc#;hz9c=7k3uY`|c?7~gwhR*x_X!*$05 zXwFMo+_7%|fe>5z+oP4*Rma{ZMdrq~jVNYDN4;FNSue_OoPW=8J7B|+p*J6&NctFG z@iun%B;mkvfyw7@gUcG1RhElQa)ZTw~&bY7&rel0I{>shE{1l_<0f`&`$w#oUYf!_%0=gwyJ`BVkDU&|j<9~_VEOf>}fCAZ!_Vqnsv;(|k>vf&!&sJz?Je)fNrhdTFU3;t6Gl%N9`|pCC}>dKD1waUHc@{l zbqva6pT!n1hiJR0CH`jJd@JknI>tLD=X5opqQAP^eA_>yA);|{>3%Bi`NA*ET@nDr z9+A)I@{VPRr@2s;(_}4wTnv%Mb%xU+#*w-E!MSPU5ME)MkFG@1vBvVEP4#XIo#Wc; zm%A|whB)?-T2Nm=Ewyq7HFyUl&al;veVR;>R@?w!U1P~dQ3%f(3aH|oBZ^+F%qcD0 zcXYBQO1pc1tV>48f0RV7>^IJYu5FT$j*n2HPRB8gMwzGr>&S0Goa&2du@G7EwSP%4 zM5mOdz$B-|OaPZpNk|q2&60^PTkQ;*jZ!%C38PB}X?XKV1BYxgjrt93p(f3Ok$Din z0nHA`?yHs^gFL`pyLwco?Rs6V<9j;a8pVG3y2pcRmp}9AB49kT2B3fZwk#U`_ zJ>8OHl#vC`1U(o7@2qOP_JDmuca$yW$^9C@j%6jf>hdqIRSV_aumJTRsf(AbecR#_ zE0=+kTxVUotBJ3ZfChw4c+#Xm6y*fvKOy09$nSGIDYKNQX@&l;oyXg)U~Z{l2Ph-M z=+i~G7ZNqiFlg*Py{8~jH_()6vR%p&gTR0D4ojaeWRSx0kwnHBqy;qh(V7hqcR^VguT!*!zb#w{@r{nV$0}Rzl>2!XWdKUU<BdF@le1iyNPOrT z2y!68?Rq-d?^x7|2*si-$k{7swp^uR+kgK^^;G10-3Rre_})9M=W=c(c_ji^!u}6i z?-ZR$*lugb=r|o)9ox3;ys>RNZ`4UTcG5w|wr$(CZF^^}y~h9VJ@$7}Riln-j5@iW zdCz&xZ5~-J%~~$_2gI25DD4kJz|qoDVC!n_g`DF_Uq>Y35y zg@!|&oAzc4__pY87glSE3>oyR>kdDvDyZEk%SRw#NG*0K4-^*#Tmm9GCN3Jpi^sBd9 z?|=8Hly*5fEE@#sHp`h!=VLQ6r%hFJ+b_9YA`DwlpB+4M!1NWQ*CI7FO*efMpGEkr z5@Ht-57jxRuT`+EG-k*)p10+4izd0(?CXzBzA*G5zkfPS92a`H1A(@cLXS#xazbBo zL@#GQu0(bGJ_G+cA(isK8Iqv-3}dR~u`1;05(7(10+3t|m1<0(~^l;Voxa@$ES`~Fm=Rxn~UA3GZ)KQ zfJEc|yY&R*q{nl^td42d9>)F3Z`T#fSr9|>sy(P7(6#^yN!N!PLKBkckeRfV`0W-19LL4Dr_}0Vi06w!`$0 zwA%ny3Srk&Z{O~gs*0Ls&}I(79fK_ZGnqP7L(Oe_-9`5VH3HV}IM+D4iewjFPv zCRw&HaW}nePwdi3dm+d+KoU(}zI&ZSId-88w__ph88}UiILI^B<*jH16eo+OK{i6i z2d`tEg?N5`A)VpZQ{WPu7esXg)DXZy2Q`}GankZ@Q@1xZ89l>AL%V?E#|RlQ5y%0b zAA0{d<_=()BL_y+6dn1>n_e|ieV3U!OWbTWmuuK6xeyOPW36&fM6#B!E*ULe82)Zi zY{Pxkg6>^AAO}GDEM`JpeW1)cyMpbvl&ZJef#2bMSPSjc7 zZ2%{dwptmjj^F1dpZ~oIVJNOZZet7+;pK&l5J^>GX2&!A9@~8-?_~C5BV!M9G|8NCnG2|)cL z;RVF5$J*>?sOa%F=QoV&`bbm4jeVtRa=PtX)b5Cfv*_2en_PeJE!DkhJfZgo8p~UK zrSS*PyYB4-U7-d@%mD)6AQW|$lY6Py10q7-l(9U5m>|4B2Cl65p!8nNR!HoSY^`U0 zwvU!PMX1&yfcD*l!~s~I(1m~o*M1f=ZcJUuNPQsi23EWJ^67oKmp4OzEva~=c=DJN zo*K2)@~eHQ+i?Je4AkE%Xu9XS(FKJ1{!E`;xX7k(4$ zI@u#)WTdcmRu+oRfE}JyV!X=x!3TJUHG65mMrK$2M>Q3oMfz6@VWG-VB!OQoXv~wMhaMe$SjBsryeLFkI~^5SHdxugg(fGA^AV`c_^Po(94ZWv zD}*`9X3do>5eerPlVFpSErf{~zDgHKNei~_edrEdD*24@trh4h1`+@M+ zMOsu8`sih?Vk``--I|$g(50PNV={ zppvu{1t~0MkXU1=U4jcU5gXSuf3qOks4TgTG70CC@JOd9Weus+D3tK=v0G=S#bNYK zc`(|b-($Lzln);jY}gIh{2ONKhDZ_1ltcXLY@Ss|jH4yr$;F$D{Oq zydpduHYcCDXtgRIl1!ViT2~zk6H^03hITbJQ3s53a^(q{k=6-8+mE0jb6m;Z;kQ%x z-En*$sQ`J)m0FIDFRP(}9c$xOSM3czJxCS@5|w5(d_YVqT8tw}f40`yY}G!AV#}7m zbAfDjcX$OHnX2nna}#j$x5Cp*rk#3#%e6U;UiGixRbr?~RwWypL|ZJ4-=;-{7RkLT z=?bi2;O(Y0VF?&v;f&7^sWPo2q-Iu$`AJ5?Jgol5MvSjy#R-BE!9NX!PaLBWIiWFZ zwktX;jJYYSL?3+{t`cy;4IO=V2G?tIF8CdqE#KD6j%uKMp5%bxknlQ)ORr7@L@p{V z8pd*2^4RLJ46!<6C5Yp6ZnXe*DPp9;b9vite+APh5ke;djcXkd2`nm0#!F{v(9Njg zlpE5684tvkc*^z8IstrwiO=4=E&<-s@7s3>JnbXR!<`dmxN+K(lOEs7psHJUnP5X@A*66t#- zj>S*I?UegsVK~w}m`{SNUv%?+CAX3O#;w3~fPr!!xf=7Fv)?PTjDSJ&l zIGzR_tj7$E;tI6VG?AY0{qBhJ%LB~m-u8F%`}m`fERZ)V_`!ank@w;aJ4yi?wm$D z&DB022=6`oi_qQ4{fs(fpw@0xq@~J_9k&fZAc1fdA&rjQ0i!eU24v9zO~K96sRV|k zV-WLw4EXU{&*04h)}5%uND^TV`ZO<-2+odH=OS`=G&@PbYGuLz`v>KiT69556e~PO zfy7FV*z^UJMCYRg?)e2JS{xh7zJrPK68~7@NDL;*9lcnD4}48xPJNkWtQIbadf z4quEm-3c4D*N5oDcvek#{?B;oEEy%SQ~xn-5zwQthpA%-+K&PQx;+25`mu-%@pr?^ zT({nAhKU&a4ak?}tBdF%Wb?*M4WJO+MfsgUSk%wu-GAi6)afwTyid`(=69I}TCuFF z{zB2=etJ`p*M%IS@`Dr5!bTa4530n;ZIj=ht?7`Bz>u@2jkpi7+;2V4`%&d31FA3> z5~v|RrU}KQdsBj)x3-+QI-4bI$Tc{@Q2c~?Ib8iaAF13xWr1fY)DmB-O6Dw=8PP2* zOa54;8odLY9YG7^v_LASBmpL$33(Ut4@m*Hb34=yB?0uIP^3UJ=bm*ixhlrgYg%OW zE)$6(OWrfV6(xEF6)8#AuyV-tn2u3XJg^ z3`$DD?j8qYW+z>l7ohD_0+YYQ>=JjqH}mGepC?rB(GZ?-iH$GV`S~z*R*V;$UhlYm z?oth;)(p)j1VTUKPcdqFRux2+NXq*_6DmPU5XC}0Ot6oXCg9fOQ7K1Jd&}Dj$WPkaI$;T!mHczoZP`=hhdr}ZB2*@ zWv&`~1nL})Ufh(m$F!3TuIluZ!MPg{)I?ZARV%dWnIpzFr@gl)&Q=NQN%CkD{U&9ac>831%3qEXJgm353RrqI?sqo0 zJne7W+yZX#=fN|+<{;|3>Y85G_3R7MVm;4v=1`vfzr9#(~H^vT;s}=90aT=dh@L*~^swbTqyQ`bKA+nVF zZPbO>N0Q{8)+c*1TnDl7&lSB-m`6)$CbKG&l_Tou9iVSShF>^@x-9pX-`T@86p8L@fDO`x)nBw@apAte1w zE@&$n6e&tSAs0_?u|g>BTrPpk&b`cQM_WkI9g#S3E7gMyLBD>;<+Y^z3M~u)ZHt4v z>SG`t%tXqmqp{;57_M1m1Diw`Q>PEn?>g(_XazFcp~wA6?3^n=BM9sGrfdFGVYA|m zW3$wrizb?**ua|+m$6<#;6kS(T}dR-80g*^95a|@m86^sSje=DS&o6f87+*t*X7m3 zxx9+>w*R*(NgVdWgJJiJtnI2yt=|I97%DCw6ab~kJoY7uS&|BoY=}XP?C2;lQC|2K zbEfeH-M2cj@n6dVG)%VtFp4sAF{LmygHr+*G-bYNW&b^jHYyJY!(8)m<>PsG9Prt+ z)T*?N3~~vQk>v=Z=}f5^f#`)f0uMn1|-V;=z_u-l5l@|*3}pPWdOoXxO4Ilu%;R} zRZ=9irp(k{egnTUYYxFsH}TaqQ#rjNEXcKlA0nXGwMtHo)XaXx5r9*^+82(qmv$K4@Gzq!z4p&1_rA{jX zN)0EDDZ_XPQ$wjY(P+_lBgqc{kP?CwBEs_>ub|%QYt!X1JjFG^5o5nA%ZmPGYhE#) z>EDfjtjvymQGud=a(BCw%t(sWNk!#+ZlMSA7n7GTtlcT~mx`B4DjBWh9>Yw+dw!K@ zbL^jecNbC&N)Vt%>Q&35NKoQtGsBGfyflF8f$>+ zu%dc|W!pwxn7{{tnA(kNn+j>}4F+6-@`XKcKUr-z*4C{stk(HBHL<8T&n7YpkoKG* z5hG8a=tqH32Zx$z>}F6U5@-KXVGh9T2u@SQxX8loxZJ_bS_T2oyZ4Z{)=|{6=^V=w zG)H)om8X=QNOC(@~b1KYUN>8K?cW4_5qNdkc>`%r!XqQnB+4* zBEN(h(_bhK;`Ih5QF1V%DT=D_E?ONNW9Fs9ii44f@Ioj##1sATD6ui2+S(rmjV&{0 z;SyHYk-22!nOIF5S*UTlI^Xd+&(P|bSc@#)t`eR0(ZI?gZ?_i=oGHsylw)vD;@Od? zH`YY3;_BZgmZ4{M-O81szj1=2V+h6GEbhQ7^&2#gllxJL8R>OSn7;CnHD%eRKT|{? zU%CM4>e51)lE>Q;#8FD4WvgqYi4!SLN?q-T4axO4#WsgYR4Ami`XguY3x8dQn5W@F zHOdkJf0PG%vgNG~coCXMA3dMAxrM*7>FmSDZ7Kmyp@Nu{4)G+iwaRTtK{5YpJ!vy2 zDcJG698-43C&s2uP87`ij^#dzDfv9~^p^`Wro4mt4l)0TiV79SgM%vD1(AK@QEvf- zVvC)kBnMXrO2$X=FS+3YN`Z)<`M=aU@lSin>wb~_6^6jN13u7Z*xdD#7c+!W=@QeN z(ZO93fVCp!3yTlTt=28mRCU$@ju;ZgHpB=_$SLnrTIMpXC90Q3e+8=zE@TdQhRsZ3YZW8ymP0quG; z7o5ak&<34Rc8;xKrLe$m_GFHw?3y+nwC+mjuZmlcSXpK-qmnkg#Q~BZ(cSpH`!?lp z^F~l9d_@mgVn$qji?&8WtVIufF%iTl5h42{{htNlVplN#{02E%eaTCX@gS;H2}#Ty z-72$Boq&Jl*#k$Z6wI-z=Oxq{A^zHz{j}kR$Pir77G>hJM;--laEJi$Y)!Lob zZl|LWn18_P$u;Q^aVBJx7N2Ql^;5C+vXazZJ6GFzMRfI)t~e#q5xj=>M=*_9{oiLSz&;VM!Fqf&4z3vFQqSCvlbez6AR%5RY zx|AAgj0&V*mb{MnJYcq-Uhz5k@1@P|jhoNAs2^L(ar`oQtN6Al;%i0`xfiWY=7FEg zY8EV@VM@9$|Eb1__maseZ*5by+VI#U!7bdl(zmDqG|^!mOehQ zastr_v{+a-I9LRswR-X1x%@A~_c^u@3j;2rZ?jU^+#g_kv_&q1`6NAvtaN81^A*6U z{`@mc%z8G-WOK*4^F+txsa~X`zbxsppBPap1WiAucwZoRhZpI(zTsrArrsuaa`l-UP%#0@aRS{Vab6)!G|*krL;Isy&5oD4*+F z(!P@6##Gl~r;mgT9qyI+IaJ~CRO_2DChIH8_I(uIcv&K(?PBTPuM0=MyEs_;i^RLx z;&nBY$xj@Pt-n|a;Xwd;jZ|k&w$x>l&FQpxDGPOQT(}L?66RbArJjcj6@I~_1Oo~~ zdJxXKVsy_X4!oTI*whpSm!>)aLwWxLZ@Fi|YM~lPn#wPe9!6$!Ee&(s1 z_8cW7R|}+mx{_mjLydJx5t95#BmoXr1eNX_^`R@Rf$6o6GFZ!Dq5d2iA28zvM;k^Lf zrJOt-2iz18A221>@9?IC>j?^{Vb2Q%yjNyDWEwE1K3w!`W`Tqv%u$gxn8n${!t^eD zcQsz5D1~@InQ1mt%+L+flv7ns7v5SfJP_vur@l{)lQ7GTBJ`GUTsA77Ed@eiNrF3NT;)`f-=wT&t{w7CqEzt`dQ z>C&>MZjNBWo}e5VWVwPfPjVY&zWLb~2944H79HpbsAW{Ml>Y`8z-L|ZU9GOiETj3q;nc@!Z(;}trZ7xNGS3MQoKBs=~;nDDT^f)QXY7hoJblOTWru&_5=7-vLnm)dBkE?|?HG3w9B{-wXe zl7qL%X!!Dq9D~q0{+g~uF{Nq}K08t5Yr64+GeNHSkzX6jdGO(OF^7$o8_>l{q8kn! z?6y_W{@%cUVHRDctT^kmt+wbO%V0CxTbCd{@5P31rw!@6=$q_=R6T)cEo>T^ zuq-S<<>|J?_0!Qi?$3|wnB;&0yB09|YI;tK2QsKv@@FdP5Q#@v@dcmKjmzm?bxWsa3?z=Tm z{u2kReh#JC6__Zj4%rdBmDg#MKQ}NQj-^FhTdsfVDs6O3XsG2krtEnx`Hi3p8=1-C z+qkZf=(V-4Vi^c#9ok1R%F9;09Hn3YLoVr$^Z+Hob3nhTkvCG(4t}3C<9Wx*M|#|A+P@8blcy^ zs`w|QU-z`v909oZ^gdJn>1O`V}l-FO89@= zxpoA{c;K{C%z@_YwNNW->~ipJPFkr7LK1PHBUzE*KmAeK*LSw{9%7^yo~QHFo*7Az zJR0{wHU6Z)x^~Y=u08u$wfD%^4d4LRRa+Mq6nDUpuQWX&Rq)Q&aa5GAZ9=H``|)F# zBGSVrJ&PZ7lWCDesJst!+EOyRY){2L2{GTvhP2nX85rIUXieuzCZitZgW^NSOmLf| zP~+4}|CWz|@5aa>S(;GX(o(xtM3Qp3hlQRsP}#exSpLj8#BTPgvbJ0|lvxJife%VX z|K=Hml;@brvJmDmT{%t~32>SF$Ki4JbKbrSpf-IsImX>LBNd55?b(M*Ns%tyBJ|7J zHr{WEZ===!C89Q`wwih*Poxc9YTgCE(`|-V8&2{9fokM2#BZa3H{x@h%4Z1y8aza1 zTHqlX8#FYq-7xzW%1<7P*M$#w?o?%#aHwRBCdAzLucxz556*{48;P|zb1*ju+{L%N z8qD~&wjgKO_}uc>nnWL=IAC{A6IkO2(}W)^X<5O69gG{!wVN*8sy@hX$TW45sTa#4 z&x!tYddfwfFwRaZzes|EmeM-Qmv(Xs0r)4ko_1)60*>UG%<^fpSDzS8rt|6?m&B8#v%6jOrQXP zx^xgt$O&Bzf}--C?l}$|fd%7Z$E6K4H|IJa++E@zy0q_rmsKf>8T?Cl9lXI^Z+3rPF z+uP!Y&V|=ygZu)&1WUgF%lf`vf_b+t z(Vnwqox6rs)wkhHV(A?8T>ME>JEur#q|^KRl1r_kGPDw&LvzFLN88_TQA8L}QG9W2BlGdH7T2(oN5V!f-6sC+7qn?(=?bg3=7GSn8XFJn1cr zk$#zCS1!7Hh)0z{L1j`Hp71TogpS*rL;1a7L$;iAJg`59oudn1U4aD)#TXJP_>I(~sO_$f zn6B6B#(r+bkj@=2b_4)7CtVzW8+|z9m6vRP$H#VP<`mBQcfM&oo)ghVi*3*lL=YoD z4tk+wp$B8Z?@|JmVE7LL;iB6{>}fqrI~-DBZF2{<#<6XM-degR^h&G8h~gl~r{ z0qka3#}{7DJc6hd@wMPSu<)X@Fq4?pwqPkB>fA zLVF$86QH}N?T!j$VeeB5-CYh1>>d*EVH{(2O&dFJbUM36jLN0Kj}XAkcySi4sogju zIJytsI?*4BcGNm8biNjegaHZO7WJpOK?Gq>_r2@uD+7X6JG!?2w{aDVi}62*Q5=ly z|071>=-RKd-|}@C5t{0#qf;png1%03N;!%tq49w~&D?`jCbyB7CN;({-h95L@5Fv{ zm>j*9`gZi%(YWv?;g8ZkPcQ$g+>5hante#F_Qmbh*Zb+T42fi|nyfND-1ZVNJ`UbLyUgdqyg73kf*;uI%p%rP1g5{gToTiIo3s#>;ln9_Cy z;@sJvVbh4$36Ku^THmypV~yGOtCHCGTLs2Ad+t$XFqg#MYBlZBMD6+(G4>LK7}`5WG#XWx6B?d9p3&KawCbEY3txa z3=wm+IF>J>CPB){&)(0+CuH`x0MUUI6iV^0-z*5-+?Yu6PX-`DVuAIH*Gy0GE4Tc9iYzxgPdV z2|gWMcdPYqvbTin!IlZS`AEKb3`AdWRkawu?m@4iR{&jv=O{%7Y|h9ovv#gw&lor> zTm`gx?XiocxG#Gmov}>Fb z#`Ez9+Uhojd-BPS6StwxK#PJ`dl5=0G?zG@hR@GdSE!osqB4-{^Nk{X zr>Bz$5=lN35N+DmG=m7EK2dnjxSWbG$ZsFT5LHv6uPh5nv(#{=GzjfpJKCn)D>W!C zAbK&Y`**xY(C~FU(63AD9gmwi>gS}Mvha<7x-iBEYBqc?Vm6dUD&TM9&sdOb5{l2# z+1RPlr2UWe{Ne5z5g+Nj#0mK7er(WZeVDFaQ#-B1Ms1|T5odCK$r93w#pk)H7ymGb zQk0M9#zWa)Gsw4P%7ASEG}j{8$4L6x#V{fVkHSAI{Q$v5NK8!m!u`X|O-NfpP_)+a4dQ!jjP2y_<5$21HVD1etG$3cl0ctD1qs2gl-8LP}MGGFzx_ zqn2^9p0%XfuqXrKF(SP33n*4pCVLTqVHUgV7N?S9E=%MRPGhDPwb@=^Ztre!d8gVi zuk=Tu>jxJ}7?>J{j&XiHv%;K%2-Y&&5Fk4tP>EvKK*^Y(wbSxgu^_Iv78@$XT%{dS z^>4#kJU1+9y4r;Q+z-wAgZR|;Et>fglQ}{T*6$ub4F{||HVq$bj-zpzW-q3q>>ocj z>=N@upT($Y6|sj-e5~V1eoVV1^HD*f~iESBea?o>6vSKdc_6<(XiE2O57ezbBzBV(x2 zuJv--Ck|)NVw@=d0qK_G`FS{4TjAT&3an$`U0lV?J)?Z6-DlYNr4$dx+(NhRc&~8^ zfAkZ(<@%=u%bxn<>T`9_=>@76jU@`>tB^);$N3;z#4+#M{GlgXgZ^E~hZUoe1QjOB z->s3>HOtViZSL_i7b|J9)k*5{1icIEG=UNQBaL8x%d{&Q9-VvPIiyV8=fex=Heesy z46#B)&@0p)+TEsU;O(c^}0;VP~Zeh^@&o zKXe_}Zk7QJ8)TEfle%maD23#!<`2j@bIotuI3V7KuA55oRlH3)tlY=Zs2MSj+pwZ% z)?%6{$U2NoyJERkNboiZG7)pu30TVEP%ppiE~oJ&4ck&*UAm-d&X``$QWdT>35}Q? zIEYSlnAw|(P49Z&#txhM-O`&oQ*%Xs)KkKrNSVI}!vg<`<7;s*&$@2WoUDlqOV==fS z0A&D|LPxlrT}^38SsQLr%ofZ%c15W6YVgXN8MkHg4GfmnOM!G{Dk-igcCTa>5J~fD zR*p|XSJmCqMn?H#ERj#w1r4{{s=uNmp_|UZ2WX;i(#Xch{EbadPAYm#>~e7C-i3%x z=b5hqA76K@aPRy<0VHoX1>TJXRA^r5l(dl#tF{dqD6_hSOE5OId9gX+_#$Zrt|1E> zu|GjX-20tAaF#9(J?7!yk9%`P9-6I=L`vi8>ZXdY^D1S$*#UE!l}%^nYT+rQh$)HM zv~Ui4406U@wMQN_=tK6#T`Ha-AG)j%S(D9>3c(6pGR>IRe);zh0NZDLE|sZj%wtX0 zN4KV%Q1Qnz1$na6=Tn3{KgaHw{vGpz(Yo^Q|KL(;55y}!J4JuxoO+wU-L}~XO=Okp z&M2a76`R8G;=I#3cy8Yyu-!Ujcq~~zR>_lB_;}346x9Xl^}oEnOj&2b#us2?$qY4_ z4ckMPCORxu8u2u2024CPp)Fa)8hN+^PTdqz#Ig>zz>CFhBSj71Z!W~*Jna7vMdC#U z)Ur8K7ot+a%VtsZtNYx1h@$hC=^#}TWI>WkIMZl^kg`NfWcUOEoY8As5mO4dY+ zdrnh9M^kF9X5KDwgB>|6=bDA#rj3|3P#{PL7nDbO>so zoIPF(O2<^yHdBiOz(lPE1_r9#tsOQNB;=xxJOoM0yB2wO!G<-j8}xneu5^IFclmU2 zlm#0%cI2{>oUjbw6LZcaP5gURD|7Fh9@c^2_;ZXwUviKIESX8qFwHIy9Wmb`VH%SPbNLw`E4@ptPGj0htv<~#^bj-G z!-Uo&xXnzjMzDgDzJBg{Jv>-;;RY~VkW-Z*j4_1RtT{o$Wg=4cnUX%+%WS+H+*BJJ zkBvBt^TYT)*_u-MJ^FXAWfy3_V}xHPPemNuXypuhk~xk95B zG!L;9-?gcT!a1tH1SJ7`sakL7Ki1HS0PVJf6G#l34gW8R*3|H_VV3cSS-a+YTz3pQ z3K$qR)G*tye=HqkoPd=O3pbmTkj&i=Nc83j2aSeYQ!1g*rQbp9NR^VseP_8jX6=Sy z8gx)qdlRD$f3nj@3BcafZeRm}pz7FyDAeR|D(%sihAK)o9!6*lR29$?`3yM9G zRw`HZuaSsroob?BXF|4fgn_^;+ zAINwM{m=je^hn&F7)c??*06FL%ML|e$_A*czy+27Ws<6zB@nc`HR}oBm1k7=Qv4F{ zzsnlcQGXOR484pD+GP9Bw>4^7{ePdeTC`aeQ%z-e7f{CJ`G;i#w+mKvo$Vf7tMGR| z%@0irp>=bFi&?$e3i?^{4F~RUtd0ThD5RaW-d=v4;wtu`@I#rzeO1z@rkAECzn+x6 zN;=9#UhHo6M-YZZ-XacwXJc7SeGmFmlV1&h&+5+S>Q=1m0{1ZihOb(m$K((=!tpm- z51FW3iUidN7^mTq!FZp>!s60uZyb5~-dk6|XR}`&;@Hs+QuFji`Q(sP_J?EA7=1;g_@5&CBl6MCeq}+CvpEov*h9?F1?#UfF~? z!9o42lXs)bc#sI4hAHKYD2Y67)-h0(b;x8%h`K>^|E?yGwHG^x74oQBh@>p88ZAmF z*9@g>UMWzN8pZmMUQ*S%Tsa0kA7v6NpNjJd^2F1_+NHsT9{BnuAQ+lmkCT})#USA4 z<6ecYZbli)g=-6xw3}Yb*QNjU!vov}Ka>0j2i;vD)pn8IIe0aVO$JTnUms;^^hiVW z!2BUD-S`ZZ?;^dnkH1>{F!z~w#C`^Nn4&LI*p_XAfbZ((vzK?PZe|AUR=bxJ+7utug7n)z}J!2uy zY+u1M5wTMWL5obxdV$2{EUEiRT-*Jzh%2n0TJ(hr)trR=hGu1F)#$CQGNjeTAT`(n zq3;ezuO)-&0<(eXMt{% z_(B^8^y1Wum|jo8mx8|(QIpd>j^-NhO;HJj2e1O?NuS!*?{?4ktYYY`aMH7UT?_!W zJ(1jy=iQ~zIdF=Xs`%LgBLr`%sc@=$L$D$kQRG`l?3utxY4La5i7q|CS%X{Vl%- z{2kZrbV})4KVWp{8rMa1{+~x$T|}9bzS*^e&42fg`ArmFVL$l>LMCI*B?gsy4%?FQ z7?TgnCXR;z;Rvind9ZURlfwWN2Snf)U{(;3?ut@o1T&44Wf4)es2o-?)Rb1}B+E*C z6t!;o-g~-$v^K7;Fcx1uwbm^E;o&c%hGGc8QF9y@0xMS`SEBd0T6E*rxx*l9R-p6t z2Svb@P+Hpu1(|c4)A`3ynAJK^KAYPn_bn8@`poX_Pm9e!XAtjIx7#;R#{d{A=WP4Q zWtVawt~7e}alO~8bk`?(OV{QtdW)a#9W!~g{PM(F2))c?A>p|hO`9xS=O)>|bJmxk zEAG8=_%;DM!ncLDfKjqw{Nvu**SAXxSbkf1`}?-?pk}l!D?@t==XnY)M7b?@(NF*F zWA$pOvfg^LD4xKwg8Yxwl0I;TdQq-Y;w_xL7u(YI$E2Yp0%bMrYJ=B+6;-Z8VFP}t zQs?*A(^ixe7IQ?aH6*8YLcef>;dPUF?8fBek;$|W{N;P?VXBMXx!Sh4lv z;Q@Mmjtwmw%_*3_$ud~h#OsMTNeO_Dv^2=E>Q!? zk)C_=-AB4^`-Z=g@e7$?Y67&(E>O*s4mI1>iHr!Q^+HB>Xt%mEo^JQ(qtJj45I-9t2TjkQ--G1*Zui!^@j5#W2r# zdAfA-Stql;KvyJ@U;pncfxVH{53c`@^7nsay_vYUSpT zCUzR9y;=|XgZ0>Wh9Dl#;&0>c(RfnnwlhCpbIyEPuGRdLv+1AueV)!{oKu&6uf&Lt zhar$}{*YVIdnxW5Q=M^^$aTdAVtDHpfsxSIG$iB(4G4On60Uj`KgoNe3UBgTJE=pp zTpM_>BR3ITf%RGuk)aG0Q;9!_)H8mcy`iV%ltOnD2-9xA@=JINs);O8Et5+m9A7Rwi_4% zLAZGtdbiY>z{!oU{}DQ@x@ot=QA-z6kKRe{`%ja6S0y0Y6pjQ-U{CR`)6G%~FW3}` z8qWTEEwxqskfQD9jrJJjyA74k)N{F*re!999Hy(n@+^MsL#GhO&m@V~V$1VV>}l3y zt0zE@vihA#YgChJ-DDF})Hov-qfy7{(?`alwHK9+g=Hwzgk*6$*Tm6d4M&#S59V=H zzs9@X0K_L=In`5Z0M%i7){6giZ0+F?b2@9P;O}#)nnqMEv15|QS2+`U{`l7}ErGsl zX$ zq>c`;EE~P8Hr7R(Nr}X(Lew4Ib=$I!tdM5_DbAvadn#{ z4-Jz@k|1$G$mvN(f}fgS2|Q~3OER!&Vs?GzKkQ&Jm$`Q}nVUq6^@B{tp=pN%x@&uT ze1PI03>MpGbbvypORl}e4i)@K_f4VmA8b*1xjottM=_TWA_EX)nhG_pGD;VtKmWX8 zWWjs)yNmE-&H1-wuD$jWAKaN5F?>h~AL=eCIQm^W%EtjN4uVaz|LU<7=+&nAqp9{2 zHm22`&*#yLd+Qi^BQf2geTgyTlt3#HeF4jMnrAYJ10yWzSfywCw^kU!QGy6X$N<}k zUpyJojlmo-dAyV6B*5u*dRw~mrnjkyvGwD29z9lh zyeX%PpHK=3lyb9QliTYzllWKf3U`RSWEn2_wQZ)@MFDSQ{$JN(YG7+(B`b0Nq~ua5d? z#t|Jtp2ajzRjz)JTh8&RDM6B#z@_A3wN$w`Tg9p>uM!*jnASL>U_EPy30{}z_5 zy$q};NwJH7UrL*q3SL~zg5)NIz`w@NE!qdPq9%2i?4Q3ZS5EwnajF2?0}2g7{|;j) z*!7I6B}sc`V|YigjB573(j}-qXx6B%uV|V8opUe9g%fo+vCv46Fq zVkz%XRxzkpr2*6sm@GkiASi9W_{ z-zC!MPsz3&O<^rl-wZm|R!Vm@C zdfdIz!8JNS6=0EV@_JOq4iPz`Y!Min;Ha{%+G^!) z{s2*-rJW6&WHsg(OkNnX#|3<;g+{t!9Zc+H+h~pe)zY_7zzW!}&se@2jO>S$6qp2N zlOeRd(S#4tLF&eKhsV6$mLp7jJ$;H!QRz}#3^9NYFAmeyLrydgx60`=@rX^0b94au z4ED?AnxoEF*`I?#Ef8Yxr{GU5zyb0a0WFB~hf%<4LDy12nv_Z4Ru^h~oh~dbCF(Qc z<7&4oGDI@Hhd7YA2P$|MM^;rAN3UL>!rv|q+)RXt!0^{^&TOqU)d{fn9J*6ilKiv$ zOuiHzh|QBp_HJYlLV-mes-ebYy?7TRUCQ)ntkebe#U>ASOWhUIGpT9i83XUOMye4O zYM2)?{gsIz_O!w!h_yogH_a1+VwoR5mym;3l6F0MiD7~24Q-5AS^1Uy;Jud#&h7K< zv#$6@rWEt@zD3l<@%9XiXBGS>W@lRAib-mhzB0@izQCx`sY0hVqP3ijw6f7e5!FUQ zg`PZKS6hC)aepG=FHo6x&E@|v2Qd97s}(p4CsPVBAruu*Q^tAyyRz*}W1LPkDTEw^ z-#3Bd#;)KoR%@&wloL9}UFn8F93?&sS&gMcWdgfrl#e6Y_95@5%R^YPqzG_he1 zL`nB`N4I%QH@Le?c-+`nNPkjlM+wM+{JXq^PaeckaxZHS1rW>T8{1!%FLz}L~`py2_Mt%+?kA3Dnb*Itdtoy_^-w|ywSh@oYl3m z!gX0l*#qX5Ui}!zm>lH;49|X)T2}yDON$LWC*W0YR^v$v*Jjc7JXrmHJIOYs2Hl1b z1MR}@ijI%bLn_(%R$&nq$-Y{i~(RFkiWrk678y zbD)q(l@%SI(LEB!a=^cXM=M#2#?j3A>s>8G!ad_dZbSyF!0V3-dwj}mCU0Lm8`ZhP zGUCQr*Dw=A&Z_{ioSlH4;KAVl?k2nDzr<)xOsTMd8)n_JAh*JEgI1@mmU>K8W^5E$ z$1362)C%`)mEL9jo#WDLzPFxc-NueAbI5*G=v0u+o`RM|huuDmvO)Jl0gqCUCX($9 zmV)Cct37MDYb<%-lQ%GAZGiZR5UG^=_BYTg9H-}{_GR8p@kVoR_b;wns9$e3gJTZ$v|vo()s~EX zLyk4PC$n1wuKfsQeeD0~5K3fex0eS-vevlR&h-=~oaRZ{t^Z`ZOGkPFqNTK{1ggu8 zt!e$M$&q7g&ie%-+ef&8@-KLz14d}M9lsW!tHt;Sm%=6JMx zr5xD`HnW+WkAZ!j+Z@DJ%@|H0cJxent^hs8U1Fy3YM-f2%JBBymUvF&i*HvFm820#cxfs&7752mB(di}ibI-gZ$7StojRQuGFU@oBne`k!`P zUcYhi64#S#ajet-`O7^f(%rOmwD$F5SMuS$Vdht<*U|h^6@fuV_~#t4u2u>}-W;T?+tWr}ZDxfGGW;Qr9cu!PkmuBtvr z2W-hbxZteKi51kDp?QML0$LimEB6|JZUVAYo3Fe*P)Rq)7n?>YPMM+3@{ZwAX?5}g zZ$@_k1cz7BXz(p!XazejBV|~J9O8{r?o@-w2B9Gnc^%g&&4UMUidCsn4b})cgk_H-H8%%-T6YJmW_P-CgaO2&+vSL50_Dwhn+i_yW^tbC749^91M2g} zQq?AW^O7F6^oQgD$|J2sdbkF@@aWO3yu;6^Aq_a8#Q9ZnBK3#-P0wi%S_o7J$k(z! zuc0GyGX#-dw3P+FJm1zw9|Kmv{NSHzF%d)k3EtwzWcGK^#&`f-^W7oUHg7!`Yk%;FFdq-tbuj0YX%nIojQkkuHgtEnjIV_&S`(%3e!)y`; zY#?dyRFYLK&FlzKhMYZtV;+r5wY79Srp`nYilP=(X1M8yv>^`%zERLrC1mUrAt5Z! zifCG{VBGIh*isbrCHWh`%I{ik<4QKf3Z*xU^g;Yi`A#9QheFTtG)F%4>DO4USy9~E zmkR7!DvvKb&R>00P1ey_L*M411o(x()dvN16_V zVT;)wkOlPkWmgJ0dhAR-@`m?Df1#tpU>Y)O*@|NIMA$u_NTHV`i5kTXNhd#u6?!Bp z`sXGLnT(l1{V4_ktD3<8p*9?jZr>*~cDA1~0{waLf8lZ)4fz;$EkVrACXe$AAqaWC zK&SS4tZ5NZ4m;JtmLJsjELz_k)c5AFwYwq}ZP4=aXYXVv@bgmQ6!lO_Z(KK|LK7bQ zrg;?-uUXuX1?0~*B&-f?<1>9YQIxIYTcGP9Y{W`Xqj9hR_j}gZD*T{ICBZddLqXOR zU}Gj#S6sz7wOZzCrpqW4I! zwxEYhfNi8Y$7xT)`5pYGyXhJu_!$CAdKhCn{AX=+TYM5Y-e1)h#CLwU#LvTsq%f@} zsY)j`lDh!{K(#0CLhiV!&;Se3dkfqyr$&P>PdG=C*x@0S&&eAZyqjvEiI8=bh`VO# zY@IGCllajd-xXx!15KQ@1qu(Ym#4k8y-gkT<8FiKwl}gg0QL!1*ne^%{m5U(Ak$Zj z*!sbz?v)&iDKthdazxVxT2H6Be&5T+Mj!CqOgQ-O@Bir~0|V1+Y2S&EK2l$Zc6R<2 z?S$(-iyVfbHtDHOg`@SM%WRyAuW(8I>B_vmX9o@Fv#TZ}Kxe%L#}tZq))Z4cFB3HY zu@Qd|LQgOJ7S(&BrT2mlDp=GT=73BptZGW|{O$BB<8?8FMso2I1k8tq8 z6f@0q3W3inft?E>&KD9P6$oS*#q~G}(D2+21@~KHuKXW1eLtW6{JAV``BT zSwd}5t!-dZh1aEa9D5q_6YiE6)LYytacnObO-XuGGD-+T2y=UPtR_aGI6 zjZepXrqg3e#mz4MeIuRgcS#++jjrMCagWyJo||Iq)krR))>wz?n#3*OMpwVZpD-a$ z3XjIh8G9`qf&rf4$LwI*!h^4D33tn^x+>Rp#jMGVKOUr<C1+_Up$hxuRtQJM5E{ixnGXIT8bwRI$z6 ze7G-Bt=17W{#q&;LA!*M><^83_P(OqN7g|(lnlRqxBU?36N|F2V2s_#%NqHu@4P-T zp)ckHmAz#Phv!IJ$68y%CGc;;MnJ`ZQ5w*n69n=r@0!WnXQGLDy#gWLKR>#|RF4OD zv7AS8?d5utj$2YLl<4vaPr5!3@(Z&O=g*k(Vxcf=c{J6b{@OVwQ*{0Jo*o8v@%E8Z zoeO^hI&2R7!P=p3a8q43LR)bNLYr9@J;Nt@+uyih=ah(|e+!0YZ9p2&-W67~oevN! zh#xf4VaGZQ%fb5Rp;{v#l*y0v#`JJrb#KP#W@^8 z_J!ZuC>mCvA+?UZAeU+3lcWLaIsSpbd`p||sC0%_C;sKCnb)~)%MdrHjUT~?K6VSP z_2?3mP6$pyhlB2Lt7r-1b*ME>uLwZnF)IhDlHda+LTWVEVYsZJ<$E{%M-c-9RV{#WbEP`=>v2;u(DTn+oOFXVmQTg4ZnRATwRab3pAfcz(CYAMqC~bw`bm znVDkSt3LZcq(l+E1}OI0-q(t?2?sv(j%h$c0!i$e$SG48a(&edPT=08S{EkA%80v3L|!bwy9GYZmTCZ^eEXv6#1foTkt^f!#QYsTED;oUI3 zw_$@=b)i;K4J3h?y!A-+=7^p7K+K1%xb# z=iu;{c|H3~ zS>6c+&7E)IA^`-^Apqn^wzy}&ISm>pT=eOUCSdT;E?x!1eaPv|n`ZavAuu-p;jwKV z#D_L8*GKTQo6g=UUWr zRV3Kry5?LPl4;eP^3?pPM3ZCwy!YWuS^@W`Fl* zmPFdg2!8yqFtUeY{sbxZch6L&%07o{3;lR3yWCpCnqp+~v>j*D2p7)T=)m0oukEGi zYgHufS^=>eL?oW9> z`L|0m+um-~kzjF?8XHjy)oBqv`JqX}rhmi?eqL1mjCod1uEC=J_ZWJ2leAb45&iS# zfB*R9CyF~iv>{_$e|)U6j%2k7%QSnl9$T_|#~ZSWP62|y+K}H`?a;fF=)r%F6vg*9 z8;k~?6F6^ShY^@#b&gJHdbpa%>;_-(H&fr%GYK=$_4N#c$4;itnUifO}bWuT= z0En&Lz#&tima7IrIXIrljE3=aYp!g`@@A|J$2k;JiZXQSBs)|6r;7-fS|^4Sp{9HT z7kAN(R{+I0W>|vrsFcIR9R`p|=u$LNQWZW@G^29Tf~QD09OR|oa0DCgUxBV^fiA*^ zp#4cciDH4O!n`Gc*e^Kf->gr0IlCqg+Y*W}InSiB`BS8_95K{6uoYe@jp$b(%V>XE zJjdq#z;I0fc$`zd_=e&|=n;a`d$0GYomr6|O#mN{d#9$^&;-q@-PRAPR|n?#kX3S$ zlPmS*hAgq$rPCF(-Jd*Af(c}{MpRy4uc_ayX!(2$)E)Yx~9$@eJ?Soj_?v+(& z!E-2F@Q{K*QMgL2CmpqTttwU9hwgb4ZB%mP%?j`=w(hsHEMqqx5e z@BqS>GWxUDdZ#4_VofhNr}p+uTe!IZ!mB)YhN%U(ZI72mtz)ls-@;6P6{pNp5QCGR z!Yn?-zMxiIv5EdSz&dX4)Cl~8V0=c3?AeI#aW&!iFZ`o|e+%HcQ8J7Ev(88;yV)3Xn1w7{j zZp^{b;g0;{q%YEQ_$5$BIQYYdKjRJX9CKR)n_2k9A?9$%z(T&612LDGc^5rTpOJRt zD%-jTp*KRJScK!52Ym?_Qirt2A(C1`(YfE@>GEQ!CyF49$h~Pl7ab3;N+PMYw-s(n zVjw4`Haml#mo{e$RDTqDgY_9n7l!Obdv`$(d?1s%eg6kDE)Uy(>dI#SA2TlSA0go2 zA5!?HZjM1s9ReIeIHC65n8-krLV@Dw^!O>LkQi|iqatBR;drO)2jVS9%INxf$Rrh5 z92DN^>MBU@`u8JK1COWU%W>CU7E$<3=Vz9q;JFzY_oNpk=lde%q?X;`$Zf1MWXi!m zUj=}=^NR7evzyJvfJ(A7>jWU?>$m1Iy7I%tAKI%#UjKt$rwR#biyh;VwX0SEqU{lfJb{M5=CR3p3w^onzl_Mfx@c>b`h7-&s^!!Cn~VEV zLAq335_+?fg8f%5vMzyuyLqCfc-ykMA_F%oM;BJ4+DlZ>Qbg)V)HQ(m_7BIUe)0Tk z)EjUa>xgQ`v<#dWKiA382!@A4JbOe=23FTYci5e8mWwU@Fz85YzdCcf1J7S_|uez}HV0y6B7 zSG?)aO0<~>Ednq8mDW+2KYokXw?lm?z-?kwV_px*JZ@r0 z`EhFhmVYmsW?QWN^D*L@d z?7X6E@wA)?_)7qc*jM4MmppS8x&$1LFx#~MSRnQ(E;N9mm*pD;=C#YB`+{LnuCUBn zGBQ*oJ5&bQwgSc_V3pmy27NAV&Q+|- z@tiRJ(R9Q0D1v2$4COH-vPJ@e z%iGi0=_=iDVaS|*#{-nb-?g(Bxmxpvmf6?zNO%CJmyN)tXNtlfNW5-JwK%pFp~5$< z26#u}m=oOOLEA24z?Q2Ogf0kVBJKBklbs0tS}n!MbZ0hks$36q=R{VrX;wDBYKKTh zB)XN~$GZ(Kw+Pjk2qriki~Ym=W)C4x%VV7Ls3s1yg`VI`csyXV%w&`#akO;Aa$EiD zoWB7HNNT*Akp0Y&g#BC;tD=Qt@UIi_+;5P2g}U_2ld*I-tm9(^%sq$d>)vXhw-2y?9uWwP1po8_?v=WL zBDr}2;!eWZf4d5x`e)eYUd@BJ`9x95ZPEc)^rnn=Bpkfo3-qM9cHR>{V4Gvh$nUUBGnvokJcb_;I2Rll=xQU&eo@^<|@ zgWdCpRPfQ@l6{J7vRom-Dg7*@C641RkZ%dtfDg2nvmNN4QJ}4|Aw$S3sb}fZ;JtsLD+ zMncGa88f6YqY2T$903Gc2$Kk9+{P6Hg<}O72R^MW2^OrN17m-lgQhHx&{Tb3LT^5J z*GZk@7&!z5W8Yb(teO((A6))9OTmfdj2FqUgK>U+>ibJnhoa~v^C6mywVMKv?sYtS zf)QOx&W}5%tr<+v`is%(s>pxm7ZJm?Pw`)Noi{#o>FMkv9bU0m_V@u`Ej3frF-cK( zy7D({;~(H>ZdIBC(F7QN57yi+0f%9v=`Gxj+!GSe{-#Y|>i@cbD1Kkdw-hqkhj~2&?++GikuD1^>jmw)q`fao5S`?K{-_Ldc42 z8z|PN|3`PTQHefkaXc3=3>SUy`v|+B?SlbB6QOnvUVds-E`!-5df)0okb4G2`xIo* zwofixSuVB?^j}r!Tm+&Am)MDD<0GX78%&dqPT35hestV&rW4`C5(kH;w$9dhq60T4 z-4X3oXHq_dXoEgiZedm$6R;g>{QqW62AnmW=4bcrFd&dy`ndtd_`-tb)?S+oi2#P? z30rjtTk54jaPzZQRGgnSnBZRVO3wnLr?(TP&Ceu$h!3w@y*Xhqx%0^p(n19|Py-SZ z-E}!w4_Gr+%}n>33)=Ct5E~aC0;#0#SKqYcP`N#|U(ernDZbgmq2+37`zxujHj%JD zB44ma8|Jl$WP<>?W1n(mw0|=pW`^61Po>&s-)-IH`3KoD0dt9jj}|hQTu%v6C&4F`D5>&9u^v- z;eQ#lN;l}RA5(gR8b>a{PDfMCs;YZfyTwxBuM@^qJ7+p-NLHZknph#8K=dbR9AVtW2bgDCHOdU9aFjmJ}ZC zW$JwTSN}V;Y>SYPY;TEVdgRjI|ZM1{V+9XkcG~-Hx9O#lx^{R#7l5vcR9sCx)M2UVUm2kO0wH$-CSrXh8hTG^hpmYqRIScixYNz zuX_9hHe{&vTysMtQ>N9fv}5|{=uPo}P>CwWpe2Y=UWXRQahY3bs1qYVc;#G{L+Sg3 zKe6JGNL9ytwROM5gm`9ec`iN2zH)z(^0)wPqNUMe2%wO^1sU{N}wVkpkN67#t5@ z0l{ZSw}`Z%hvfLoopCWhyJ(<<<33H9!)B)n)r1<&c}_Jyh|4NID7^RCk+8)(az&C9 zwukH5waOL&m8+^O8a^2r$Ak0XCLsYbq;xpWW_i~urQ*@biWM4k#x8YvH(MlC-j$@# zn*I8%*(N5HelBKcsXc>t_mMeM!n$7(>e1dPqo($^ibuMWH&!};0XnQo)f!42wPJCi zEv!8Iywc#eMUw0~JUDBYrnx3h^t46_S4zkLVnMdHDEtp$ABHJsj#9`;L|Q0DY^C9z zyKd=U?|bnh7%I&9rme$CctCYXx3a$Dea`27{gicwuAlV@lH@!V{9D)DkF~q<+Mge4 zf1hd>u5jIU#Oj3sYdg))<~m39baI~#hT+f%IICh=Jwk*1V{iQ$!5qveB2O7vOYnVx zlmNF49;o;_T-%eDZWrjYd=ZMclMd(Gd}#izs2eDGrMOYlzw&UQ9G^w(rrvL7BLorI z6g}M(-^2dCb?#)7*T^?>Z%!|E5xHT09TJu#KL@Sm3uD#*M@}TQin9UC2d~xd{oI^z zVEAtaVYU;ccv%Zi4Z*VMiJSq31x*9;fUUXR&N@T;fMz+6Cmcia$Pix`xI!>LSB7yK zB^93pz3QssE*E_uZmZMS04X8#d(3;-T+oE*QFY^V1-6-D+4{E2OLQLf z*aW1XSW}c2l%-T+GCBC>i1WTgg(C$*T4N3ZKca~}2;nin4NeRm|1-E7LdM||gG)gg zUz|kI(-OQeo~_Mb)GkghFPtu5KC0Yb@{r3qOL7kHO9tdi zj;Ff6FZb_beeq3K3e6*kP{#`NpJZMlzud}`q%^}Y>ya}ftI4UgE9EuVXE_?+32Xk;mQjta3jj zDD$KM>kls%JuFWyY!^^CwJUYEAhFJ(^ADRCTc5W1$I5n;vm0GuiD!T>m%DEoH)mQ- zF#OLa@9nK%QT)qpP9#rKD=%J|Q4Ns;5CnlUt%cck&sOl5ft8d92A_6jZar9u8GT8{ z!IM9~0#nBfnzf(l;z;^NR}=)W?F1{Kx%bHdxBjadGMhU!FI1URE$N+Ef`TGc@J`q{ zo4(IF4X~V#y26c0nHwtuf8EuFMXX732WhX3mW67a^VNy`+*wqsnMm2)ykzG%h2|1R zddT~C*G{_yAaUxJ*ZH5jq28k$6#TL}C9JyE{f#TrOWAtb+ z=ERfC3aK4R-nd~i_q<@fsS_Qm?@rJS*llzOuBf$4tS_1+_YLwMffu|yZ>;;I2;$%C zwqJd6X}H>gTSv?OH(7(Mx-ZoKZ1pcm{}UdSoI;^|?;`!Z5;j%LeZ-=#&+sqv{z(mN ze^9LAf{UzTjut{3Cu?KEl=uKhe@O}7vxgU+afP!=MGk2kewD%jE~~3fBCgN?yTzj; zVc*+zcXz72hiGZLsj;AZ8Xc2D5P!qO$e<4!AB)g>I9({RB{uj2&A* z4#>(!F9c44i2DgW=GlE9cDN+{!ESZNBrYcn+Yx54_KOh-e0TW>j!-KXeg_$)W<4iK zc7MTpo_Prh*BD-B_3neb-5#&+WR_k8-DmBpwS(vNu7Os^I68T5CzuD|3(lp0$kVg-E2Q<*Wfo&>feL9cBc>;uW*T+BX5O^ zP_63Mhl45rIEB~dds-kIBnH-h>a1dB{oe}pD;;~sO-_`rT*HE2NE%IkWoxxRIvfae zFsxfGP6JzrFmx5zxs&L|WjYOei=?}iN^Pl}1CdVCq*G?3?yuWBPs;iEKOYdIW~#{W zbELTcK}Ek@d>(JxcTxMLP2~$0C5kx;qb1;MLwWc!q;9AbEt}lbsVpZSy<{PC^$5@b z{4&2Untj|p?j9-1jdJ0_$w5D-9qSg%Stie!6qJx4d0<%AWd&i*&>{!lvWKdvC%k`C zx#KNRsx`S#>86mlhvui-&3is>p3Rq$H96rYM#@B$+g%EKvv>0Qe4|RadOfiYM4oYX zI6yFw9b4#2I{x}{!g@M3Qz7e@q|{diwDQlss8-fzxXa?8>FLfJE=n{StdK22Gt^P< zr`xl13nilyOsh>#*r{7ed{LVjk0;oq_VOKjB`sqYm@9?1E%^G#la71(#tnUNMrNu^ zQ9VKK{XmDEtbl#j-&mTT_Fb!UaM4y$QL9l@7_aiygLq-xVd zL91XWFI0HrD}k>J0I$Cqz;0s-L=q{D5(9FPwRYzUaTf~N{0LMa8P$L`!iccEcnvcY ziq(Pl%|nrJFX*ltw4_LLvafqTLG%`b4zuP8iG?4H%EGf<39QveA(h(EH{u!6k@|w=QCZe*Zl8)>UX~=T28Zxs>p4>B! z|C%RjO)XZL(o)J~WT0t>@k#ssdWAFxa5NM4>ezo*SFxdL<(!ZwEw+p^U{}uAnczJC zd}S|xuJvu*3ig4-G|VFcNVH02%ptLA4$C;?RF9Q(fLYZZs}l;VmnGV2%I4nZOkj@i+%>Y z;I+|5X^O~(k$aME8I?Ym(Xba>)2$H(VJ@C_Q6xxG7T62RSe{}l6jx)hop|vx{0CRGPm9> zaa;P}r@QC<)PsJfm9CN-+eVwLDn_vJ2+rLH0-OGwYUcqkhgs$Ccl9)GnQKfEiE3pq z5@tKN0mi!(W8~9upvO>)vfNyQ2epOi1>kJ_*W2$in%xgq7sW`ZGH_c|zkQP1e6+=t z*P%^|5I1Qu14E3rMO_{8R>S-i2nRVRlfg8!4J_5)`mhWuX`-cuxmQh z3^8$J=m!A;slDCPx##X}WdnE93s*>Z6rOX`gowr0az%#*?6UEywP;zJn?8a(Erm$&(T z>4~sZvn89+r`f|>U0Er6-(;jd7Vm?!ry?U+gwFuD?s9lejxQ$J#JabcxeU-M-6}Y2412PcV2|8@d>IC z5tjj0X7LJ1X)ccYhGMf z!w4aN<$A}4YVb*SUCyHAX#v;hQNj{M^OOIfeq2{|he2t87-C-n#|o6qzIv0|9qSxI8Ii>ntt ze`@nACm9$7Q^fp|yB5oBz2Qpjl^iy9TVSQdda)<#sE8%0AK{l`@*G*eKiu#4Zweaj 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,&F&uf}CQYRD)8byM3 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

=e)B|Xd=B@cUS2-T&a7xJ&bn`I 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

XC`@;To34USXe;C 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

WB)FqX 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 delta 304409 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

  • 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

    ccL8)Q<&AiLxsFHz7S8mMV zyt};WV6c}B^~pvXhICfv0ms$!z4m3_4Rb26Sd$^&MQFBwrq!SG+{YHeO$XuuVX4pV zneSehpm37V?T>uTf#wG2LhLzw`Qp$>}nD&-n&4kw2;e>Pjpdu z9p)4%E^A-F3-|A*)#ZNaxx`4P1bN#Mi-L*61IW_SJq=i*IW>7%TpTD8 znmRWWChv%@Z&VV45fH!aaqtIEX8z{?YVc_yG+s4|luv1DS_}+0XPvRquhHFQP9IkK z)i)Lf#Q1&DfRlmb0y2*J(FJ$l>Kz!!WziT6&LJfkdV_Y|F?`;V z>^Y-7#?t`r<`o#m+majV&{W%iZc4P)b&rzsIG5?PB|~-|rkigLe7`hsl%| zlQ;%_Wpq{u2-NGap}uQpxE*6JD{L)g0@gv5d&MPKofw>6(-+-b#x(<@+E3qMxJ7cv zvdSD>*H-7{7z{Qd7cojJZH>-x$y+=y{bq#lhuxb6aa~cwGeJlb$(huf>oTFs@<9WD z2a`-9-MZg?&ND))lq76xt%Ks5Z^a?qToC<+T={M@v`|9Wwa4mE8B$;E&r9!;aEzwha zSe#d$g{iL_Yt5|P?<)G_vy$D0XBwdahI_SKK>kg#D~%UI0C^yt1X*v?cs!0Q%Fq|4dl1EOPr&gRlWI`!)sK%QXIUgl_~Y-eC~xTte>wP(sfi$v1yS?dTi08eCe|Z~1R8B(qUd+~lig7GXgQ?n<^+Rs{^=Ds(%*|2xr23vc`_uFhB@tTIR)07XDw+4HL@u+%9T&ql?cQ26 z`okHzG9Rs`4Pr${fNqok!I2YBSPX83$>AV9<2xBKISY^9vc{)Uego?qJzHG202?C3 zW8SpNzGI(ueKRQK@kJI^!${*HQhE~$N0!s&Ig*k>5xs96DqOOjtTueiyTD{zkNe*Y zjlmEjLo=M)meKWPBa$9rYn!`?I#fMLa_lFOWR3N|PS}bUz`bMAIJGf$h+rV??`J|Q ze8L0OK9Iyi*F2j1Bp<#%eXBk2)IkpF5c3$xZ^9y!3wB-@&3kW%HV$eU2c|d!WRQTb}iJz1d zb&ccJ9^HgqgZ6!ORP;1xn3j2IA*h7wv9RDyN*oSq9b^P`VjQ*DkKw5Xkk)L4=kHgi zQ>o`M@LW}C7rfH@N1OIyCSEU^7_{dt{Ny>GUA z^E>rBSXY<;rd$L-)BkxoW>WUEmm!FlWDH^RWmb|(E+~n-_^#Qq)u4@ioH1$~d$LxA zz2~U8O6rkjwcR%AFiN@+nhzceD2n}3?l~)CLd8OVs~?H$_~AG@9S)Ytuql%mwKp*& z(D{!|6or@9?!_2luz};d=xByDjUJ0v*Bc3WvjQvfV0?S}I@(2K!`mF*8#c5Kgx~VBOi_A6}Cj#zeiE;22^_@uX$9paY*4fhy=lz2dC_(Qh)cel`nOpqWF!9~I=pj} zE0kY7j$a5boas!vjR9*9QE!L}K%x@b%bO|*Hizvbv>4J=_Z{O!bzYI_2k)JRCS}Fi zgI9ghO;XnY*qr<`KhX&k*uER9Wk?!z>y_WuDX~Y?8CPpiK%7xEL;Bmj zq}s7$Y-fhCdix^eq3#v-E<#eb=ANDyOnDib)GvsWd1I(a^%tUErZj8NAhlUXoGNht}eV6+wLK)Af zLXL)4ZV~N>J|G&$ZW>dS3_cyFbG%@52uUhMU~6Ih5&bR+8;Y1@ocy<%Q8lI!4~}%L zms(EI#}?xsI&3PA$HM7fPJ(@mEqtQX1xtD`%M);4s+Z}u&s+2$0DMP7mxibG9gBu3 z1W#gb(#s*Z+<~i8ljMYF+%liIGZ#mrE*hg#JwjKCW}8D%<&w@b#+~YBj&)?}#A)!I z_xJ0$z-oufkk-OnHGRts?HdWSZixIO_cE8?WQcW) zKuvvkssEeeJ_peO4+yuxmK_m5X_8#!FnsF#=EOTjG1LuuDp_*xMQABs--VnezmZC` z++|n6Y||oTQ#MD3s8(@J%!WCaW5z{toHT$n044or?W1H^YAB-r!eKa|mpHbWv%A41 zk|(9+DoG`%w$E4!eG~otsKMz`w%$K$MT>Iv_zh5pLWA=oqF7X^tQv zX||-8xY9)q;m7u&uZUB3u;3*MUJf*Tcwnh{L)e7#HQ^rdjZ;!2o+gOu1c~I~%{xxs z5C%+CKSilv-Zo%>CXov$*}m1;PcENLv|m%0z$DS1u%EDU(+O0C2gIoh=Is7A z+626Qx|T|>7q!e(Df*^9W+9z6CS%{L3_do0{97;!BUf&u-Sb8pI=kcIz5~FfwMvfExBTM?XTQ%f$FQG8$!B;sD9;vao1Wt z7c8hNuq{)^edn!7EPAuJ88KYcO3}QYK{Lp zJ!0%1i9>6fCCir{{qfY9LJ^#U8NcDhiVAyn_3jWEN2Xv$mQ|taF>2II&fGS{4wRpr z;lbfKW8+Z;hsgO3bL#WIsaBlKHN&wFQN)Zr7@_TnL+i~|*lxt|^ksqW?C}=#c62^G zG=NX`z#{I}n+*IW*6_RT&bEtWsN{Z}cdRLz!B|WG+a^cZ$or|p-uHl={IR+HYk-i< z6_j`aAqm#^e&yKEwEkiA&~dMvpSY7hNm8svND6UKR!QVU`~jcOKGK|fZfO3Mt_}6B|KbiN z?pA$J2Gtj_zF-TJIlew<3zIXN#9I~8Isyey&>E|nEcNvlTnhSV=(srD1vz0<0Q78x z-t4RKvwlFv)g^j)k+N|MIPm49hxw+!8rsmlT*{t6zx^=z`A}^0NRE>$#zU#* zI9No1esQL>C_wUAY4)QkL;HyTBBx{iR_aik?w3W_INERe|HITb#%2<>ZP&JK+qSK( zZQH)vZn3p(+qP}nwz1{6&#QcYCYd9XNhXG+7?H2m4LjA<%%A()3_bH+ys zXHlMe*a1J=V_TjKz-VLkaK4O1&n%WHli2%B#Y6qVRW^FPM1!^_*UY}T?BQE`ROs@= zzV85VpzLeCHXwv`fFI;MV0n?ax8SV5Bt>r6g7mH+)b(RC_ByXFukO$WWcY~PY*&t0{ z{1qNtKGyjycgIxr`;Tc+v15?Aq#&ocZdrgCTbUOYcb_h0y*9B)yfX>YXL8juqz|Qo zHV-gmvYlEIz#IVQHYQpaNP>bCH$!a78DY!yI|NcZsR+Cuqf&p5K8e#`<(LYA9{NF+ zL6!3jXDL{9P*na4>(|$>@TBdL?WxdXjW3LTd{-IDCgJ0MmBd7mY<6JjmcaJMn<9sa zzVJ{Z?e-OZ_OGSxGY3nQ+^yTcEEmBum|UCIEk??J0NlVE>RX%I!t?N$t$~rt2?sq@ z&tJu(2lZcjgS4a{=En|Y!hX_(<~mFuA(Hs!A#gYF68?z0yYF4B5rfjz!RKLNqU4?< z_|{{0T&Zq^N^OFMYe#z5{w(F1fanB4$4@ym*^Lz$_N&7dz06Cc<&T5KV-9hG_x|zB zP89GHz@5P7R$r!c^LwLuXORBiSfu;e3NHPo`9R?MfGO9-!Xb6oKda{LI_wK(qy0!nFgvzjyrrVlF2U@2Nj%kHC%d;rA&deTiem@-?f@ur(r#(jTcaU z9cq}4<t~*1u`Tj=C@-A|MvKinfWoB8xIGw z7N)9V^Pg!K-WsveHx&{sf-%Q@(nZTyU%Zx_vyxwD3cuHR`;TER;hga4NfY?2+@xFc z0A5PpMJcxFh@Llw+Wmx=ZY3Gb=Yxk2Ymkt9_N8fajvj8br|@TZK-u$96Ab5w3Dgy7 zlWj)}TP1LR#6Xoe{UFx#q#lV#;0Oz;i|_YRAXZQ%EF@y&W9-m}`!W%pzp(VGYdqLzmQh$_I3M z!9tiiEsMZZf?TLHY!>iZIP49jH3G@F+h!aN_PLR1!Wi zd}2DanSPz9OKI8_>BOSBF|!8j>FF8Qu@LXzy?0yG7>zOw%Sr5x0koA-wievEyAHg8;f-7F*$Z&5s(AE@`?1`t#t9 zgiVsOX74nQlK7=h#}DH`H&;he-UUf)Y%TP9Q)<6*C3K#JKkz(#*MVe14Vr+$gAJOm zvh}Sb$m3d$K|x~FtM$KnBf4r2AeId}jM}qWHQ9RFcqb;~m3IFzR~eU#cdnL{!MICU zOn+j^9k!SfT`iD8F^xTU)@#Yk2$n!>xKKgHX_Nv4>fe6aUlgtTaVz9v(;ahmj?=}p zZE>{_mEu4VO;69|1@+SR8}k8wO{UQ1_loY)_DtvGJlHmEQe2Lbb#C?)Kw{3yTr3+! zy7z<;Ka{`&K^6l7#fNicLY&Y98Bg8OG7EEdfvUMP@e;(VtK0LWAlo2)V0h>HsG~h#hfC&_BC3n#8FOWrkwa2CX7Sz!PN6%(a54vlaROBq0eX%u;hGEQt{0opc^Dit9lYEome=Vu+nrY#B9W)cV8kESXFi zM(v1EyD>=-uzSZN`wEA2$6t5N#Ph=<_$zoIC|=R`@7ZQ^n^3RS0FBCF7i?I=hLE z9F9B>>Ku+u+AS=ooiO~28yGD_nA2#~qh!6SMoJIfLbc{mc!eLXgzRHt!IwcPr1uEY zQu}0p{xYL`@KjF~0``kp+d~H#sfru{_zX4>{4LdZ=XJ|T! zL$ie|EXW%Jd|2<)=~M~ANFW(Wi78uB!&RUePV_ztzd zLem|}d8ve~w+R%UW42OyzgwdRk>{ZU>KAu@rHH_iIMYPgcs-Ewgp7DA!P)H;x;CBm z>Loxr)LiDh;H4#XxynJ2Lh|IEd#l`mF+h6bg56+Z7KCSjfaEMdL=}QDMX?R*aI0D` zKw1S(xJKU%1G16gQx|9N_Bfcq?PpYk=$UisR(FS+nl+$+M|${}-yg+1n#0+9U-nR^ z?%R8^9@R>dFFGh#sc^;UL&!Y=CA0Q`e3S8h6+b+hRFPPz?R#V4gXZA^_PM*OLvdgo zf$nT!s^luumy!|&*`ESlU2brC6XdeLR#1Xa+ttumfY{s?53FkR1jK~3vY#)tNe!yJ ztIGhRP4`43S939$&IAuT)nl#cj3I5-tsoq0Yj5gW&mNO=e1>(IO11^&@M3CiuzB>5 z_KyCde}_qB#c)S2@BKsym5m-&_}@4h6>W?k@jR^uoX6$LXhxMFoijPRuFlKAqm^wB z4np+?fb20F8&|0J{Dl%6IT{)fW-^TyvVM_%2zdf{+?AscZHK!Zkv(X??C)V+sdumE z3r>*2oqZDj=s>OwC!&vq9FaMUwzD#y`EB92Wz3-{+^PhtV`e4*-ZzJMgf|xjk2|SLO`q3PQv}w-Pf}c24zd_9hUn@eiRiPV}6`Qkn%E`x{Y$DS_ zKmp_6tMwa^rjdO2U-N|BQ3?2&T5mR9;- z$l@{tH_81`UNR9YHI!|D`(VeD9xvwJMg4o0V;}Opc}(_IX5ESlpa1F4`YxDTgUO(! zJ>dtAI(@5xOv7TWmXt&aPY8i`2-)5`z-GAv0J;(8cU!P!%>;)o7sdLINE0kxXu!-N zgS)5~<8RKDL5oi04DO)$QS;FEblxv^0P;rz312mORgSgl_jRboDBB#c0^J?H2O90A zK58708J|3!eN8;bTWNX5E{uc7Hd<#o(}9_D9x~sQXTY6Kl}&3TNaX;ACyHq+;9(-? zBVE3M3$YGaulTK>km2!B=Dh?pcQC(KiL2Asp9)(uv)Vw4I#sn``HDR2GC}k8u_yax zYuu@dUwK(wD<#Y>p&tLb@*~QO_Xw+2{e9f`_-B6H-4q(P8-V_$be(f*hB(iT;*>yE z50N2+k&`ZYWbgNAuu?!lw55~)c)TV(%40Y5hz+5xZ@BP1li*eCSia{Y{OvkfU*i9R z1=7ITMt;j1J#~Bq65Z>x0j93}?@zN8M#^0J-e+h7NBsFSu+tl7!auK{{z931KN?Li z1hE)wT_}-8S@#a&@`Hx0+D@pK0QwjWlRb^GJsZ|lBo8!K*qV^!jdywhfMPNbFXe9c zM{RIuy?Si!{qU*zNGo3rCcRHY$6mPLUNUpXA41noLCFV=Pmb2=|w ze$0A1w@Ly=5!YqZ64o~qjBYtd_Cz-HrC~`!?^6G6)b-V0%3-x3M z*eG<>=bE9GmGb#L&&f*ws%{FJlyy({Dj5)318_D8kK4;RHL&d466`W?%U^wjedxXw zuy~YkOEf4PL#z#jL8w(!gph76X7ek4vIAt3e(GKdI7l|2i^#EKL$sJW7Iaf0F3yKmy0`(rS(epn?{+7(84lL^+d8 zMnnj$+;3NNkQGPndlpT`Zm-M-sFowWZZ5ZC4mW`Jf6MYIA65T5dKhY_=aE@xduD6$ zVsL{^0mI}FJbV@6isR{vFs-nK;?C;Cx8Loi^CYa`ZE|Xx!amVm5)r2%Cvw(ze?WfUiZV`9%txX+e*nBml8hthPM=%5xDySV5m|w5EJsKm-CsOb7#}! zT5f_00(>$xgOL5Sl4|tX*1#AS(O-*SmlwTAv)s2{h3izY0a(Ss<>XoNBYzS$`0~** z59RORJs7kv`DWAw>g*<9ag5UsdG-8}H^{t@~taBb~huW--Pevz^?_ z{6B#(8?Ap+TJ=O8N98Q+ zp=&aYTw{vs`8I5^o9Y=4cp#BwcfNgI7E@;O)t-Pm2T9x{Atz2v-% zovvEd1_<~II?NkXGg6HKsN;l(n=5S#TZ~pxkHp7#Y%xTKF%X$$aD9{?dK^hsKIBK_unU{mUsTnMHA7zf9<1BkLYdr3wK{t*vrU;e!45L5afGD01U z1*JmX|BBB<$ToqZqgd9rlk_C@xlw7^$-@fV0z~?k;D429+M8JHi~mrfmm_0D}S=WWxKcUCeA|K3MuokWwJ4C z^ebhb22mpuHXE;s$8oS;lBs8hBvcyV8Q2&`9Xy1p94i~p>Hx8lI<)F8+ zh7t18y2>)R9$$OH)_JoaYFhF1UFRY|1(5SK+BCB=tnd^QOzBT}_nX#9twf^jLi&SP zrL%Ff1J{Gxa4tB%ex2)NYi`OgzI*&4jA`P9sy~C;dZ~8$9yA{V4`VPf#cy9e+GxG3 zJR7IOX6s*ovKUjapzhAhZp7%iZL-43w<&HeVEM3I$_!&Ri7->Z`Q=P5M4e^01NhYU zT@GEdtX`xI`lGWcYajY3>!ffz(;6X(D3a88(5!~*JQQN`8h-RjawMZ8|MpwY&a9nY zrv=gIEPg1gLO*^04&cs6OKgfpQCnVf3f6+@`aN^T>DiC+klXIA12I5u`|fkh(>SOF zz01C;_{0PwyX?lNVOKC#LXIv~4X~gT7T!`MXsJT_fReAjNRs*64tYOMAYh*Kwp4oY!gh@l9BPG+S@@eIjA}(ddMq)QT-c^j z3__Ni0JPh2LG6KG2@&R5W)m(BF7N{^Q^jGwP#G5eOTO!`N61sJ)@`OIcim!~J%RHG z)0xL0o5Y+iZ@moa03He2!(#-p{Hy*{rTD~e-KmfjA zBtH^?o;$T4L zB3)=E)PaTn0{E5HHSRdd{x@*#u^(s?A9dbYrBUJ=+B26a{t0OJA4yiyjyU$1-WM&N zY_nFRX+5|3>US6`VnpThlrn#z+}=>Oo2}qG*~-*r`c>P0v&J+Fj1$?CIi#arU?q~B zBu+z@*NGe{_dEw5ejn}c$SC#4&*Y-Mh;+dyvps1BP(Wum2KFJiNe|_0R=7pXJuPs^ zZDe(}uZEl4d;WKhGi*#v5dX>|QV~@%*&9E&O=9Rbjl;iD$LcKf~c5%LSoyT^)>!Pl5SB&QQa4uiL&PR+K z6t&5HSGpRTdsk1#h%))p_mQuBO~gjbsQFqI0Qe{A*6S4xEiVQegkf1EAbS7a^b{YX zz)yd*pc!sUA>v@#Z&n5(pdeCEEJ313Y!2Vr!UrnTAzYjjtS+H?Td8#sXw$A85 z3DDX2)U;51H-gyFwqAgn%23yf3Mnh8^1?oWDV-QZ%!WuS)lS1!607SqrGr9$H_@Zh zO}Rqg^9u>eo|T|4SPkPJVi zw0tb1#g&9frTA8fO=hc_aZTlr@!g8WrlQBz;-3}S4u0>hZL6~a8^87+)uQp)Fm3Cs zv+i_X%l$7W9g*r#N}Ltjg{Pk6kuZ>@J+jFJ7B{Y+LfpFbacozRLPB891ReZo0G;`Q zl+lq&y=e@{Y2uWpmvotW9%cB1MCet-Uo}BRoPUEhHQpDBFPf|pWMN@M5EA(v2~sWS z%sg2xK3IF5**(_an4{K5u<~e;u+dh<2kt2@lwYP2u@s~9x2J*_dV5Hy_o#bsPo$_uiNY!kBOGccZeM2#@|Bt4Is)4Ki2?@ ztx%b#15+Mz&w~Fo9h5`SNJV&uV$1{2%0+&gaWx@^pj4DiF0o_+6_uTgh8{3OE_04* zSDnAiQ1X`d67*Rzxa6&Zn;1?AI{C#hs3BU5_p|SWw`_<7cyDU{|JNP~R`X$?p0Nx$;9dhmd~Bq%Wd2 za{E40Bi}JGA$kXy7K8@Hrmz|*cTZ&UbS-%6!-kbWR7i3|(DQ6a0kG-b%6}|}Gtbe8 zM)iu@?c044K_;=Bo!D%Z%iVcJ7e#NL!yiq0sIe(Ji}t6bp|%|uh950yLYSG&9NWyd z`M_naX_dPTF^1tNpIWtDvNc8HVW z9Y->gO-cC}7G@MG04Teq8$u{9?7eagKVQLpT;3B$$>Jm+9;gROv5*J$KjG{8{bExE z^?K1{)3rwWoylO`{##5^676|~1e;x;uAhCU2Ut+O5W~*^&24W?`c!llDx-i()i%lg zRt(AJD|pDiF5Sx%?bF@*$<<4J&x^?f!-c)5^w8cl{13_ED?py6i__zsl*OAVg!{eA zREXD>YD<=GK`Lw;)~{}Cav_z5kRoTmdIO?ggQjyy0_B$gYJyNz(rC`z0EWGD+i0{A z1xOoV+s~4AhdmoFv8lxjaC!CTXR(m4DC?>%&(nM#YD;FnpYY=8NRb$ZoD3aZ1%f!1 z|Ar$zrO&oXFd#^L@Zp-|dZXsgm~2ZZq%g6|idOrPbF<>MHJdIRpC>`D%oa9rX=Wgx# z13q2VcRRd$ufm7pqV5n#KA=`8L`-f7sew$yPTe7T(35d{0??87q+JW-Ai|lR_c6Lg%1}hZTT(RvVAn)g zsZHmVqTctYZ9EpM!QIIWMvxyjlV4Wz4ghq+tx@|w0%<1p|H-^c&F6t8hG$~>Ur$vc zHttkM7cd&YHJ_EkW?RedBkj|@J{t3|xNd-P0NFN+e5qAJy1OoBW@ow@jki@vF@l+u609UvRNFTS5yDv`MJd64+2Y3V(V!>=h2^M@HJ{mmlGD$2eP*j1}8z!o0 zNIIk{kqWPXSaK;p{D74Pl4-1Mi#khf2mA65(_WdV6cvvZ5~@igKeZBAAMzY;I0^)~kbPhU#t1Bi1vM|4oxEyaJLAwx-V z9~&hd<(n0(uCPY>wNRnrdW0exyeY?knVrK?pDXDX;HZ$_-MMC0+qt)a`-acH0jjZ> zh4Z7`2L9*xP(cJzL?_>Y3-Dl$PdkBtf#ctJa(mx_AvjWVoga|StV%k0W6juHg{@dr zfBOQ7TOkC#H~{_vjHk=gf`)d>y|D zcq`2lho34kykezZ_0TPbOZwn!xGvoz0`^4c(WPac+e_(l z3vdr;FWjKsi4`LTkf02}HHFsYLxQ*ImOHn>#AV_KWUdAL{!Zs=0~VvW^ZW~>CPX3% z=P5)B5fu4DL6$^-+p!nyFS{)l7Wv?7o}!mn6?TwBpJxlbNK$R;#+AwO>k3Y1r3!C62pQiQLQ2( zl{)cpYiL}QMzW7s+?*5~gV5N8ue2dop5wSxfdiVRpU*?wa2riHK=k9IKAQH0;J$tG zyv`G9);cf*_SJeXu!a;^N&N2+cog~0Z;JAPAVp}4D4=^=BA6;}O!Wf90vB(>Ch%L# zVIWp`sPX$NxS4{+c<;VJ>!OE0KHR5FTj@7wJ1?V{Uab@l%k5P=s9iQqhh0RS< z3-@Bh{IH#%U8MMV)3<%_Dsc@j-Ew%dDEJM_{1}0}*e<3mAYsNIEIvX@pN~??+j3+b z_{=n4nnJ0o?^nzN*OZV{pPYcLAH@?c8} zPnGz5@~gBc0POws&QXpeyBIWM7*6&=A_3Qg_EXgDWt41q)&9O!5N>O_2gFfn`6nkl zzBBq$~HO*-LyPt(RUHa zn?cXyGGf=Q z*bS;YU!0u?+gDl|ioeXfOA+F|?C1z>KaJ~RsS_VrQy}9IXJkmN0K4AS%cHqaMMKEB^ONDctBX(VIZ1F>hP^64mz3a7DQf>ylU2G2Tfb!o%Tk(Y zf^_$Knl;nq(vkA23GYf~yn{^V2!%>w^y*R(?w06gRX*=Q+5;K86U)B(&{+mUjODSd z?523@@8$+O$@CF=H0cCM3H!$p04WOBn!&FI0L}x7rvzzu2eL=ksT$eVV7>n*&vEc2 z&M_O>P7vcJO%2iF?}mNcF?9+X)M;BOmcNLQ7`lbrOm$;j^EDEQP50UuY{DC9!CKxc zmf7`_PQt$y-F)4%=`t!TjJ$Xo`b<@39p!I1T|_oR-Fw(nJvTf-AFH% zB6M*ksUP~L<xNl7!zF`bf`O3{T7T@g!(%)Apdy`x5j=m~?r%Eys z;>Xrf9Il(H&P;yw+PFcBN*q7a{qnye?)KR}CD}YhcpJ@+T7Jv8G;|MPG;EId0bG@J z`6w^1a?U0HB@p#|v(3#kj>VsyRQ7XY>LF0W=HtuNXa(eD?wH&TkcDIyW;#bW*nSTq ztP%4XE3PqrL}xd^zCiknew*HEjn}Njsa>IVnsZi}|BOpqr9`g>Z`V_2)^qFB)n0w{ z@*m7v2aMj+)AbP8cQ0O^j`z>^12z{E85B!wyb?(L+FF6Yd+AVO&}xQ}jkNLN`SF-Z zjHK#Qh!xjaU$S;Mz9$scXbop=4Cip&M`i-$dqE3#II3tY9<8-!1sY}DwG`Hmo4Ve0 zrzMw5y=)bc(dwQma`fr#1*0n*uB=%yqV|1#bWlp6ara(J-)Zao8qz>c0kx%S(6Yb5 z?0a^%RZUQaERcrFGNz>n4!w2j?+;!YGG;Dpl4il|x9WL)%@nbeCI@>#=_p12Wm`r zd)hspU*6{DD@$)Zd-Oj-0241Ei*2PELaOY>)ON|G0}9Cor(UsTY84*|r3DP5tKnq~ zmzPHf%y14yy&z8W$s^OL*PGsLS5vo|{5cw{i_UCS79NEUA1W|mbt)Uu-l=Y#F4p%uMIa(HS0}yD;mdtAZ9M->)tB~)URxw?ewF=8gaN6<8!vf0p7O&K|U@4p!05? zo5UQjUGh(R9=lDlk_**I)oM9;bi$H{%~R{@`WEuDYD#TrZ1K7K^|Gw(CM&hS3{5$` z0=-;5piMc?@i3R*D*d!yK;_XD)~m9XwX)?sbQ8+4&A-zi znTa;Ss2Msct92DuZ|j_SvOm!?h+DQ&9&rivCa8I?N3P%0=R%d;U@gTX?b3iB>ed+ zG~^hA9{-n5I58Kec^k_-)3h;R>+)=cq^QRf!@5l<28pxP}( ze`;B_@Fz+^U8gFq{rd#$aH=V~O4V#hEOq1vo_D%1z$8A9T!N0igx0$~k=6@vck{MK zXEvzi)_rCI>Wwbzz~yxUlU^6ty56^Gdsazp8}BGQ#(^0l!hTQd6aGA~Y^-mm25*QR zNA^=_HgkKOF2h`RS}P!EFg_ER&9}0D*@#IwOPD=7d5=^u_4jo%k>Eya%I_}hpnVYR z4<&>?;0Pa-lm67qXDu~@OM5ZFN3mkQ%e0gojO7nM*3L~y;{Jj4j5(~~YFAFwrr2e6 z*Lo+XMXdsZw%BcM?8N=2V43}Q`_W_!@^vTsQ)?Ncqz5N?XH@{WsPWM0!%dB8;lqow zrf~;nZT-&MQ~37w(iOsY?y{{nYaoyxdhN~hhpUL*6C2%MYfn29t0r5ay(tE@{qmWmny8O+^=dL=+XuI5xn8ArOEc?L z{iwRYw;1bo?daqH_wvR%RAv)xkB!CsbI+<0r_|UyEJODejbFi_hpYFkn{)#{2UVOF zV2f6*bpD-W7v5rdOt0&(&#e}}+lu?>EZ&j5jrCB2ONPI&3IC0`HPw`{%*v59#jIR| zYgc9;Mg>b%dM;A#`g{#D#jKVz?+jWR{2gm0*Qn>xyP@RZC3vCI*zKa@!{eg{`wG{h zT$g?D&_B7DXrZ`5g=H<8n;^_h5#><>z$ag{BOkO^i5a(lQLAEP;N*&vmkDJsjV>kP zCjvjaN8IcPjV3Vi&(&NJ`zSrE97j4rlnWvPw&ow{{ri_lN=q`G^mwezN|iscU1L*j zB5xzzwOpjS5Eurbwk(G_5cJ#}ZeLbc=d5z;|E>7t_Ekd;%#T^-uQ8pPW_=|WX@BX9VQpq#yC$Z zRAzp=?y*bMm-ITrCl@5LuRb{nP@_!!3`E%hlXTXcp?Uw6p8R#4qWAxAE72HujZxHM-dk*y8LgbO=NJ47e!*Wnm* z_(rdYtT*bh>fQEp;}Q)(lw#?Q0aWTl(rwI$pAR)HR5ey1E4_O2);?&J(_+go3=8c` z8V^K`Ee*%_uc4OmCw<{rTd~?|wZDqOw><-P;Nq?PkRe~(>g($R2FxSq`5SC|Eo~#K zWPER5!Px#nMuEi^57c0&nx72>A{F$0Wn)Da!X<4#0ly#oaVtmxKhR*uyE^{9NJz)6 zgRI4a%bte!uxR^_aQk7th+rtbUKsvs@gZ6Cu#CM8ch)4ZomGfn1%t*EK=nq-r-A2p zrJN9cJVtW0#<(6I*cl!|NbFk;i7@_l!kz+Jl-CQz&9awNdr=w(Q7!?WZQN)ou zs;s>h4wfCd@>p7k7T1z){VB<3EQ^HE*)Cbiu-M%9d;Z=sEAy2{W$>loddN9AJj5k- zRK?O|jdx!a9Lj;KuJr88m8<8&FAe8U&vs<(zGKeMiqIpg5wTrY?S<7RKEIDHSQW9j zfp&PJdmSY*=rOl5Sc_B}blla1>gKnO<|XH9`6$d4avO0vqv{_JLXI-R{~6|S{;!u| zD)Rv-AtDzy^Z!lrSh%_VJHS3!d((bv4B2m0 z3lOsRCFc)Q)T4%H8KkB6C2y*RTfC#DJ$y@6>S=&kNv_F)5RA~s2?TUEp<969NkJnb zu=QoQz%vBbw8ia#rnKK-VI>tq+8|71)YJA0X^F}K*SE#*#W8yV;ory)SF7C-(cBn@ z^Cnqqdc*;t)*TTELts10h2Uy7fE-Bs4Z{b=<7Ednh~aBuz_>N_cL^1MQ^28sPe8b# zsr=@FDHp{bI#QMlY5;ibX|>6)ECGWh6vh}Pqm>Q9^W_mT&`>Lf1vZG_Lrmbf5eb(I zLp~%zlm$N(C11fbB*xssBqSm%1Z)*SP7t#X3n7pUcZE5t$~fu^>%&Y!Dkp)p#U-oY zO+x057ziuK=pY)PA<3OYr7rB{SS^jci#S#W=cMWa_KD^~cu#wgH?qobL7ADd zGjxSi7vPEfPmqwR>*~L_(tp=`aVhLeQq1S{-%-S7H*Tr*Bnhci;N`JX%aSASP&!Y= z;k9@S$l;hQw>C`}?O%+>*l!Zp6bIbI`bY<*WEKa@Bv7$KE;4+pMeAC^zwgMPrrfpl zTB1;3hpYn4TS-glMnPlIjode}6a}HF`81F)0I&mK(<{G-=q#o!Y;N@WaS%dXkNxCV=q%_9*=dyy@SMc;=U^wCa_bH>_a3DJ|2#TQi#J)FxKO|<@^}}pr$tj< zwGZjh1-gNoL=2Wk(c;n?s*NWT)i{^g(uJ9UYf#XSM#Xoq#9Nri)Sx*flWvF=$cI}F z0#r0mM?xy4IvM6`psy(;J7bzIQLZ!Q?46q~{|kh==8^1-XsSfHj+m=)Y5Mmh&3p~i zHO+s(NtEk^xfb9#Y;Os19eR&>4R6>)5nuu z%_?$06{BvDmnEl_liA=j_71XZI`j^=>Ezr2vdU1*!^wHLMkg-ExINi47(pm-N6-M4e*|8v=WjYxowMLM~D~}A9`7;qc$0h6*@5F+BCNESPJPVoi zX-0~$J{*;7)zN;BZgF8;q%xUwyCoF;=*p}Rj>{tNV);*e5~U*Y%ieuto;uPu(J2pl zm*rRo9q>11(T!P`yZy3ks}}A4K)cTLNV0TmnV#UebvuqZBfG%qPeoPcxpyLO<~^j`KVHY|^S+s& z|JPhrXa}MF`-$M`N!yQ$MtMEDDlSCs`+Kaa58(6Ou6Uc^Hp7AQI$t=9uhQAudqkX> z;d|lQz)y^d_meX~`Q>tsuls}-OMeHcU{Pavn@V790hf z2bl^jO)O8@5H)ap-{C-ZC^eu_g&;xPB-hggN|_8K7K9t-BHzdRdCueXG_|K4u$#S+ z54esg#b?`T7}3PxKkab{J9*Ch$9BJctu}-Ua;A9X1{#R^rpZ)3_T|~{5C$CD2w)qC zW@qI1gq=&J)HHqgal%=aILVjTYO6P!m=m5Sy0j>ggOq{i%8x&gKJ}zRsVz(hWjKTQSz8#L= zc)sO(w9}WX@1A^spO`k_P=e8Enr1ZX5r*8|&5mnBt>853afi%bUqEy&Tcr&0d;Fiv zt93yVi`RbI?@EUos!CkRr3ivqo42*!^Z3H~zv<@b_a6^Ue(%jYzB^ea8-aB)0me^X zW+mTnSJe8_joWQvdf|bro#!M){HcmJ7McVEqldH@g|zRXh1(Cb`uWxD1p zd-w+tE^~yA8(vpw?&hD)hAkcyP}W=YUFzoGx`8vR=Ddi6fjz0}gxsuF8H@huoO8ZEFH5Hc4x0U*9FPaT!`H!>#A& znd5eVKqf&}<=wxIdoEw6J8!-+ZIq1pYS~PN04Uq)eN0iu=p81H$Q=Ep_GO5iSSW78 z5S)=)-;fqMbod>$@;?wW+#YU-$1AWHF?rGAB@3rFO0Tzso0xdgN~V*nfXiHh%={Rf z2+JqM($2{Yr%QGo(CT|!Il4QCk2Mm*V(yt=HdfgRv)A{hhlBa)FU>ju-y1vdv13b3 z+xu%Og`KN-vHaHlq>TT#CP*{Y$8FLai`zo7*Ba#%m1`3x=h=Vmsfwm${v~0WXc(te zuQVoO@${Hn2IECsvk*sw11?fg0@iPXwZZCZxks%kSDgc$8&hQYvdx}|&9WZ}V}eTJ zLU!rlTNVS3ncS{<5OTb_bS4MW!zP!542_JUH63-C(nB0En7mn2k+%nmlA_|y=4%^~ zjaWM2F7DBo0y`ZDXZ%q0ldx}1wgufr-G3So2hY%mGKX=tkO(q}0c>qHo|t*B@cX7? zu;s)n4Pj~}vyKWPjw*6K{%B0LsXWPhKu9FXP<+$(swgua49R=<8r2odklj>veFI+= z&Yy3c%r;PHV-wIYg)}breW7`1kB#gqVmdsw1T zLbl`jg4RYR=@_EC0rML`q1}-X&7MRm%T18n$R^l>V(p{bJbqh{{Pw6U_z zSO2IsRCSBU&|q#n+wv;=WDVtDXHFc`5;$3`UWN}1{YC2_p?ceia`ocOC?F30!SH>> zsvW&(1cPeUMRg{)IiqGC|9O#-3Fo=K^4fy*1jk|c}T_cHmQ2VXcN zL#tbA{VMbz9Bi!r zySQ)DfYt_POGVX$CV^&RXJTPyV`pPY70`sn`TuT>G@<2{=~)=q>HmeYF)=W+5mBj{ zX%fjeMm9vX05i1wl|8*S9TpX$S3Q*L5Y^}|hO%5c#-P%2q79o>+ z1&m1W1u*c4l5rAg2WSvc8`c&aEoXACMf&&q?0h)`vIY0YhP30YnRINGBssMaX^FB4 zG9&GRygy5L;PO!qLBvTij9Mb?>O{(S@#=+Q(Ci@m)TDHeHA$!=*xew~NEF4bgJ2N9 zl*QA~A;{$cT*q+aqFko}5#+isO(xj;+TP(P_Qm4i$o*6&hFMVgY)6JcQ1Aeu1ToF% zd#pOcJ%|Jf6-&Z@i@S?LO_FHIK30U1f2rbh^fG+5>1{zLTr!9V4&fE%F4{l%JE9yW9^51=}Yt7>5B(q zhnvW*?335rnsBqV98R)=td&gr?(;r~_ml>$Q~4h2eu?b5avef(a(bLsOe`pT&a~+g zgNu_#cHjho$QZ#Z=?2SAZ(wiH=~r^mAib_hF6h>} zo9tf7ZliW=_s-3CPT6G!j_YA# z^>%a;Q`iLLTJ1s>Rs{cEwrJMQpl!x1p(95A)XCYAm|Alm3N3BSs)g5Ld&?N@oD~mX zZkd*gfk~4?b!qx@8N#}@TtIy~vN)5|E4*AaX&HH@-XLMCOLMi@2g7sBXs6}!HNT0c z##^}$j#m0`gRl~EsiEzKfiVL^Hfi{|w*%YTf_g-9uW*Ob^Hrkv2N-*g19|#~z-`op z-EDY44bgsOxlboE@bsX5ymO$H6L$(Q^zhLUv}4IlMV2KeuW@vizaaK%DH$Ujqx1U} z%R8Wv?rtwh5|Ku;=E8bo<^g4vybx08vcyph^Ncxt$sX4@)J~A8-R44YKByGyww`i3 zv1?z6?&4qSax?)_u-88gx>=x)oP_Fa$~Sjun4W`r^=&pbBjFV<|JG$Stsp<(|21~q z!Ek=>K6;4NqVHluO_bTR*N2W5xqwA_UeQnd<79CqOKNV6GHTsMDK!)p0Mm{ zS;8uJ^S!^{ow;-G+_^LFAD{DiKhJreGiT;J&pC7EeHMK@hK>A>o~^cN*W#LIXTl^N z;i$W6)$9|J`*FDPyX#Tz=2;Tlnmo#zn59S>Msf3@jCvU&xuauSh|b$(c70=I#wFh7 zo(+N`HKSZGBj@$yIuS-$&f1f~{+mnH>E@#uyyCRJDa)93)jHkfa1ncH(25A8cvUb$ zj}t@%%rETRzV-_v&s!@H27W-p{q!#hf$Smz=TQ-_NL@=hZYEy5;%PO7h_}EN zAW6J$Pp~g%l_QGmUD1HB2uqPRSet5;HNE;u_{r00HuVXqcWEF=Ng9YK!r)oPnGg># zpT9WVE|BJ^NPPuTpP??`+4nA&zgsx{<0X+BfCEh4u`3^0l7Jg?;oOWIcMy7(A<0a& z&F}2U+mutCEJQCcCbwA?1;w3f>9ZaSb|=~MEg{po@L_4EP+diSET!%B)x%@sAmuB4_x$%um z;iYIx*9`VbQq@+|5!I*nz?MFl#5qQ#v=>!M>wM+}z3UYwSSKvTJGUq89d`>Gkym#WH1-VUQ!Ev0v<6*@6#22Fy?(et z6+;)p5JMY-p>xEJ5E+#hVP8*fiCSO&!F-U zn8EaM7f-?BwNwzR=W8Sd6}Zxif>jCY&SxG^FQxu4O!of!*4XIVu^llTvCv|!lGfAM zL)o`qO_ETt$QUN**rg}q7X+YH{;*zftu&eyR8ny{hF-m68kkW!Y8BY)Y8c=Q9_vV< zvK7tBqcVAF_e(!BazC+Jw9X-#?Mk&pg}k&KVKDU-#qTOBzHFLM<UdFpWSE@#$ z8^nG@OENw^E{#w|WF|WM5eby~f}v!GUKdsTJ&aX5yfbOKg+Fa_1is`rFQuWAJQc;Pm@*+|bb4l=D>N=i9+bA&DGQgep%XWD3w8Pj(}|lytt6q+P)QPNJF*fAY7)1g|EK033F%Y1PTns5uB7xp zS~|zRl1vB?{Pv(iaNeeWuR$NzI13=UmT88IgKhT@lA-rrw}WExt! z#C-n=;n_zi5kv0y%Hl0U{3QBDzaq8)TX|kgQQQC8C zb5xiI5@DKES8<>4kX*!o>relmo#As*a}O|7b!(et9aBy4{o_7{;CH-&@K-<*R@Y-?T#?hRMY^G@5LvVzxQ zlQOeaAJH%2j?GfDRmbS2jpOEe`)gt_#lR=Au(H-SLsO|&^AskkpFB?M?(Y>Xj}K`G zz@%0hr1|uzsyO4)jJY4|7H1abM&s(^ zpNe-^#WCqIh{U!k-UE-?ZgOu=+0TLU=uN4^2rwKwE}k^NkU`UaU}AR7r{`n7j$`X$ zdiKwU0pr6tOHvDOLZIf3Bb}JcZLdBrvI?m;q4o@*qMyKWbLLNhB(7J< zS43N2$hzM)(@@(GF44aip`oY_rB5&=u+o=dxj5BLt*xy67gC$_9$kD7_30guQ2RtK zof}mbCQ@q0*$d;D0m4AF-Mv|Cs?6XOoZOX92lPeoUuEE7ik-$~@?A49jC|+aGRrPC z7)G&EvrM=9fxDJ+r()TC*O|MPYNvQPbeEmmn{uac*?E@S${y^Q$WwPUuv2Liv01g4 z+^`4=v*+7Rr0}IbEcrFRn0m&b-m{%B&0JIE%U!lq4U*0PuM^y7YPhgP zQdBU8>FPex98>kaVv^fc0SaxB~rywOoqf6`Pr#rhQ720GEtr%`11*>DG z>Zqr?sAn&~L`rKcH?zI5#xUG3!N&>d1>IpS34?wejbQ5iNtTp(z@$+WLYb8_p`~_T zAp(+>Ie~58B%mHI&#d$qbg||~KW1tK*7$|U%f(~IeNIHIW4C-Myt~AjK=h>%X$5#7|4_&{EW@-th>$E+W{`Pw^XH_Ty8T4fn$ebv($l9_m zMySx-f7DRDkgxd4mZRM%=nFm*BiMon%-M#0vw7F@FzCx#<`==g5jS#lVU7%)Yf{b( zB+%9|CFM+8E#~Omu_)zCsS8`JhF!WdaE6jTjg^0&ORqr~`JMUmzdXH_u!TA}zDRoY zsQIDSm(6`LWgreBPa43Q|Ci0o3BmG#iiYl*zfcD^h12?fXYQ?AS((n9QMzLzfArao zV%;$Y1?j3BEfsmhhTAm@uP8*;&Xo;0j?6nWu&4OH_EM-`%j2sOhzKN?P$;o*Kf=ii zkP&hwdZ^LP+cDD3oNF4^9?Es=ZPS z%M9Jj!5nE_lJX3HEnUx#5taw-rNg>wCy#v}oQGxu@I1SJg=AZVBRa~ zgX!m!$0 z%!=7|-3$i#EY+MjoHLul0P@Oik{iM_((A|{N=9Yj117=We0{LP=SHV;^@a@2I$u16 zn7?-FD&!tlXC0?y3DY!O8!=6M!7pJ zSSeuDD-SdUEl#v_ko=U>OcNohD)Vmav!(#~(B94sZBUMv2?{fkKF0S{o zdrk{QEPs`DCjbEjwSKTB02RUH$1r-KD~gaz%u zH3X*p1^B{MSTxqOj(fVp(t>8op29Ouua4_OhuJLkygki!oJ}2gWuS*QX@{8z1=_Ad z;vIbv-bsC0=!gpk*WM`AFDagNHAVcb8X^mgYjc)-GpZSL@_fP1-A!dW2^%^~f@n z2ET2mM=*uo=*feZNQe|uf*GeJVDB1V#P$dMZvfLXt(`mj@7q)JrWo=%O;8)Sp_yykTfj5 z?X6_XSbwb8=aml#jW8L4EC8|5Z)}Xh;CPr)4tX!@-GtYSqSYt9stw=|X)oVV0xkG_ zT=XOL^skQIjx20R9|?W#?_5$!*P4fYI!@gWj?>>cVBlnI7yl-XTU zyE?#U^V@u8T_P4B52RRiETN8U@bdn@XN#_TVO7;!eys&5Cj{A7spC*SJ~&$U#hCq{hf)$$_wpbXVkumd_ZP!NR2nGA|j7hgk(w1Eudr8b5v>@AFEhf?|-F+4|v7Wvp$$5DEuaFb9 zB5ba_t`lp$m-V>amo~>fh}II=hIO48qZ)(Utk?0AEs;u=eukgbuF=FpSpO5;4d>5_ zRcD}65YmrIABZ=&6K}z~AkJyGt=)=JP42#O=NftZWmbN}q}%@!Fxy3GyiOW1`JZq1 z)?7xCREq1i0c&i53a^VGxYs}L^k77zbMO=Mf#x8%-UWV>z#A#~Vc(CnKZQHZNgzAb zLe}A%P}{o$ubxKcMa^*V9tqqZT*bWq$3oJl=a1>U@y_P(?;ItgopN3+4;O62ZjCEW zrPD%*GurYbQx=(L4*r&kk2{k>pDhhy1nYX_XLnX+T=CLpOC zZ821kVBrzQP~UaP;vkHb>ERz5+`xnS#@G56ADK~9El}L_r0|%h@Gyym{X&w9Rxmh6 zJ55GAeTeRz=v2;Syn?)DQ3Mf95JX0JAmhW4g5F4*aAbXO9gAoqgIPCs-MAuY_2^Wb zMGAPv4AoIpdoz3}{Q{hH4F;S_ZT;*!=lk1kiJgvg7XH}Z&&l5F5BhT|{@CB%&p+6Y UwEdQmhs(&x(g_OQHPEE{4;SYFIsgCw diff --git a/lib/colvars/colvar.cpp b/lib/colvars/colvar.cpp index c5b6d906c1..22befdfd43 100644 --- a/lib/colvars/colvar.cpp +++ b/lib/colvars/colvar.cpp @@ -426,8 +426,8 @@ int colvar::init_custom_function(std::string const &conf) if (x.size() != value_evaluators.size()) { cvm::error("Error: based on custom function type, expected " - + cvm::to_str(x.size()) + " scalar expressions, but " - + cvm::to_str(value_evaluators.size() + " were found.\n")); + + cvm::to_str(x.size()) + " scalar expressions, but " + + cvm::to_str(value_evaluators.size()) + " were found.\n"); return INPUT_ERROR; } @@ -455,36 +455,42 @@ int colvar::init_grid_parameters(std::string const &conf) } lower_boundary.type(value()); - upper_boundary.type(value()); - upper_wall.type(value()); if (is_enabled(f_cv_scalar)) { if (get_keyval(conf, "lowerBoundary", lower_boundary, lower_boundary)) { enable(f_cv_lower_boundary); } - std::string lw_conf, uw_conf; - - if (get_keyval(conf, "lowerWallConstant", lower_wall_k, 0.0, parse_silent)) { - cvm::log("Warning: lowerWallConstant and lowerWall are deprecated, " - "please define a harmonicWalls bias instead.\n"); - lower_wall.type(value()); - get_keyval(conf, "lowerWall", lower_wall, lower_boundary); - lw_conf = std::string("\n\ - lowerWallConstant "+cvm::to_str(lower_wall_k*width*width)+"\n\ - lowerWalls "+cvm::to_str(lower_wall)+"\n"); - } if (get_keyval(conf, "upperBoundary", upper_boundary, upper_boundary)) { enable(f_cv_upper_boundary); } - if (get_keyval(conf, "upperWallConstant", upper_wall_k, 0.0, parse_silent)) { - cvm::log("Warning: upperWallConstant and upperWall are deprecated, " - "please define a harmonicWalls bias instead.\n"); + std::string lw_conf, uw_conf; + if (get_keyval(conf, "lowerWallConstant", lower_wall_k, 0.0, + parse_silent)) { + cvm::log("Reading legacy options lowerWall and lowerWallConstant: " + "consider using a harmonicWalls restraint.\n"); + lower_wall.type(value()); + if (!get_keyval(conf, "lowerWall", lower_wall, lower_boundary)) { + cvm::log("Warning: lowerWall will need to be " + "defined explicitly in the next release.\n"); + } + lw_conf = std::string("\n\ + lowerWallConstant "+cvm::to_str(lower_wall_k*width*width)+"\n\ + lowerWalls "+cvm::to_str(lower_wall)+"\n"); + } + + if (get_keyval(conf, "upperWallConstant", upper_wall_k, 0.0, + parse_silent)) { + cvm::log("Reading legacy options upperWall and upperWallConstant: " + "consider using a harmonicWalls restraint.\n"); upper_wall.type(value()); - get_keyval(conf, "upperWall", upper_wall, upper_boundary); + if (!get_keyval(conf, "upperWall", upper_wall, upper_boundary)) { + cvm::log("Warning: upperWall will need to be " + "defined explicitly in the next release.\n"); + } uw_conf = std::string("\n\ upperWallConstant "+cvm::to_str(upper_wall_k*width*width)+"\n\ upperWalls "+cvm::to_str(upper_wall)+"\n"); @@ -677,6 +683,7 @@ template int colvar::init_components_type(std::string c if (cvcp != NULL) { cvcs.push_back(cvcp); cvcp->check_keywords(def_conf, def_config_key); + cvcp->config_key = def_config_key; if (cvm::get_error()) { cvm::error("Error: in setting up component \""+ std::string(def_config_key)+"\".\n", INPUT_ERROR); @@ -1022,13 +1029,13 @@ int colvar::calc() int colvar::calc_cvcs(int first_cvc, size_t num_cvcs) { - colvarproxy *proxy = cvm::main()->proxy; - - int error_code = COLVARS_OK; if (cvm::debug()) cvm::log("Calculating colvar \""+this->name+"\", components "+ cvm::to_str(first_cvc)+" through "+cvm::to_str(first_cvc+num_cvcs)+".\n"); + colvarproxy *proxy = cvm::main()->proxy; + int error_code = COLVARS_OK; + error_code |= check_cvc_range(first_cvc, num_cvcs); if (error_code != COLVARS_OK) { return error_code; @@ -1059,9 +1066,10 @@ int colvar::collect_cvc_data() if (cvm::debug()) cvm::log("Calculating colvar \""+this->name+"\"'s properties.\n"); + colvarproxy *proxy = cvm::main()->proxy; int error_code = COLVARS_OK; - if (cvm::step_relative() > 0) { + if ((cvm::step_relative() > 0) && (!proxy->total_forces_same_step())){ // Total force depends on Jacobian derivative from previous timestep // collect_cvc_total_forces() uses the previous value of jd error_code |= collect_cvc_total_forces(); @@ -1069,6 +1077,10 @@ int colvar::collect_cvc_data() error_code |= collect_cvc_values(); error_code |= collect_cvc_gradients(); error_code |= collect_cvc_Jacobians(); + if (proxy->total_forces_same_step()){ + // Use Jacobian derivative from this timestep + error_code |= collect_cvc_total_forces(); + } error_code |= calc_colvar_properties(); if (cvm::debug()) @@ -1394,6 +1406,13 @@ int colvar::calc_colvar_properties() vr.reset(); // (already 0; added for clarity) } + // Special case of a repeated timestep (eg. multiple NAMD "run" statements) + // revert values of the extended coordinate and velocity prior to latest integration + if (cvm::step_relative() == prev_timestep) { + xr = prev_xr; + vr = prev_vr; + } + // report the restraint center as "value" x_reported = xr; v_reported = vr; @@ -1450,7 +1469,6 @@ cvm::real colvar::update_forces_energy() // extended variable if there is one if (is_enabled(f_cv_extended_Lagrangian)) { - if (cvm::debug()) { cvm::log("Updating extended-Lagrangian degree of freedom.\n"); } @@ -1502,6 +1520,11 @@ cvm::real colvar::update_forces_energy() ft_reported = f_ext; } + // backup in case we need to revert this integration timestep + // if the same MD timestep is re-run + prev_xr = xr; + prev_vr = vr; + // leapfrog: starting from x_i, f_i, v_(i-1/2) vr += (0.5 * dt) * f_ext / ext_mass; // Because of leapfrog, kinetic energy at time i is approximate @@ -1638,18 +1661,26 @@ int colvar::set_cvc_flags(std::vector const &flags) } +void colvar::update_active_cvc_square_norm() +{ + active_cvc_square_norm = 0.0; + for (size_t i = 0; i < cvcs.size(); i++) { + if (cvcs[i]->is_enabled()) { + active_cvc_square_norm += cvcs[i]->sup_coeff * cvcs[i]->sup_coeff; + } + } +} + + int colvar::update_cvc_flags() { // Update the enabled/disabled status of cvcs if necessary if (cvc_flags.size()) { n_active_cvcs = 0; - active_cvc_square_norm = 0.; - for (size_t i = 0; i < cvcs.size(); i++) { cvcs[i]->set_enabled(f_cvc_active, cvc_flags[i]); if (cvcs[i]->is_enabled()) { n_active_cvcs++; - active_cvc_square_norm += cvcs[i]->sup_coeff * cvcs[i]->sup_coeff; } } if (!n_active_cvcs) { @@ -1657,12 +1688,49 @@ int colvar::update_cvc_flags() return COLVARS_ERROR; } cvc_flags.clear(); + + update_active_cvc_square_norm(); } return COLVARS_OK; } +int colvar::update_cvc_config(std::vector const &confs) +{ + cvm::log("Updating configuration for colvar \""+name+"\""); + + if (confs.size() != cvcs.size()) { + return cvm::error("Error: Wrong number of CVC config strings. " + "For those CVCs that are not being changed, try passing " + "an empty string.", INPUT_ERROR); + } + + int error_code = COLVARS_OK; + int num_changes = 0; + for (size_t i = 0; i < cvcs.size(); i++) { + if (confs[i].size()) { + std::string conf(confs[i]); + cvm::increase_depth(); + error_code |= cvcs[i]->colvar::cvc::init(conf); + error_code |= cvcs[i]->check_keywords(conf, + cvcs[i]->config_key.c_str()); + cvm::decrease_depth(); + num_changes++; + } + } + + if (num_changes == 0) { + cvm::log("Warning: no changes were applied through modifycvcs; " + "please check that its argument is a list of strings.\n"); + } + + update_active_cvc_square_norm(); + + return error_code; +} + + // ******************** METRIC FUNCTIONS ******************** // Use the metrics defined by \link cvc \endlink objects diff --git a/lib/colvars/colvar.h b/lib/colvars/colvar.h index 271231fb2a..989d55124f 100644 --- a/lib/colvars/colvar.h +++ b/lib/colvars/colvar.h @@ -171,8 +171,12 @@ protected: // Options for extended_lagrangian /// Restraint center colvarvalue xr; + /// Previous value of the restraint center; + colvarvalue prev_xr; /// Velocity of the restraint center colvarvalue vr; + /// Previous velocity of the restraint center + colvarvalue prev_vr; /// Mass of the restraint center cvm::real ext_mass; /// Restraint force constant @@ -352,6 +356,9 @@ public: /// \brief Updates the flags in the CVC objects, and their number int update_cvc_flags(); + /// \brief Modify the configuration of CVCs (currently, only base class data) + int update_cvc_config(std::vector const &confs); + protected: /// \brief Number of CVC objects with an active flag size_t n_active_cvcs; @@ -359,10 +366,17 @@ protected: /// Sum of square coefficients for active cvcs cvm::real active_cvc_square_norm; + /// Update the sum of square coefficients for active cvcs + void update_active_cvc_square_norm(); + /// \brief Absolute timestep number when this colvar was last updated int prev_timestep; public: + + /// \brief Return the number of CVC objects defined + inline size_t num_cvcs() const { return cvcs.size(); } + /// \brief Return the number of CVC objects with an active flag (as set by update_cvc_flags) inline size_t num_active_cvcs() const { return n_active_cvcs; } @@ -371,21 +385,21 @@ public: /// /// Handles correctly symmetries and periodic boundary conditions cvm::real dist2(colvarvalue const &x1, - colvarvalue const &x2) const; + colvarvalue const &x2) const; /// \brief Use the internal metrics (as from \link cvc /// \endlink objects) to calculate square distances and gradients /// /// Handles correctly symmetries and periodic boundary conditions colvarvalue dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const; + colvarvalue const &x2) const; /// \brief Use the internal metrics (as from \link cvc /// \endlink objects) to calculate square distances and gradients /// /// Handles correctly symmetries and periodic boundary conditions colvarvalue dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const; + colvarvalue const &x2) const; /// \brief Use the internal metrics (as from \link cvc /// \endlink objects) to wrap a value into a standard interval diff --git a/lib/colvars/colvaratoms.cpp b/lib/colvars/colvaratoms.cpp index c8dcfc0766..3315007b54 100644 --- a/lib/colvars/colvaratoms.cpp +++ b/lib/colvars/colvaratoms.cpp @@ -21,6 +21,8 @@ cvm::atom::atom() { index = -1; id = -1; + mass = 1.0; + charge = 1.0; reset_data(); } @@ -395,7 +397,7 @@ int cvm::atom_group::parse(std::string const &group_conf) } // NOTE: calls to add_atom() and/or add_atom_id() are in the proxy-implemented function - cvm::load_atoms(atoms_file_name.c_str(), *this, atoms_col, atoms_col_value); + parse_error |= cvm::load_atoms(atoms_file_name.c_str(), *this, atoms_col, atoms_col_value); } } diff --git a/lib/colvars/colvaratoms.h b/lib/colvars/colvaratoms.h index 93ae594aae..0b0dd62c70 100644 --- a/lib/colvars/colvaratoms.h +++ b/lib/colvars/colvaratoms.h @@ -90,7 +90,7 @@ public: /// Destructor ~atom(); - /// Set mutable data (everything except id and mass) to zero; update mass + /// Set mutable data (everything except id and mass) to zero inline void reset_data() { pos = cvm::atom_pos(0.0); diff --git a/lib/colvars/colvarbias_abf.cpp b/lib/colvars/colvarbias_abf.cpp index 771955a4fa..e5edd92ae6 100644 --- a/lib/colvars/colvarbias_abf.cpp +++ b/lib/colvars/colvarbias_abf.cpp @@ -564,6 +564,8 @@ int colvarbias_abf::replica_share() { return COLVARS_OK; } + + void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool append) { std::string samples_out_name = prefix + ".count"; @@ -572,10 +574,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::ostream *samples_os = cvm::proxy->output_stream(samples_out_name, mode); - if (!samples_os) { - cvm::error("Error opening ABF samples file " + samples_out_name + " for writing"); - return; - } + if (!samples_os) return; samples->write_multicol(*samples_os); cvm::proxy->close_output_stream(samples_out_name); @@ -583,10 +582,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app if (num_variables() > 2) { std::string samples_dx_out_name = prefix + ".count.dx"; std::ostream *samples_dx_os = cvm::proxy->output_stream(samples_dx_out_name, mode); - if (!samples_os) { - cvm::error("Error opening samples file " + samples_dx_out_name + " for writing"); - return; - } + if (!samples_os) return; samples->write_opendx(*samples_dx_os); *samples_dx_os << std::endl; cvm::proxy->close_output_stream(samples_dx_out_name); @@ -594,10 +590,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::ostream *gradients_os = cvm::proxy->output_stream(gradients_out_name, mode); - if (!gradients_os) { - cvm::error("Error opening ABF gradient file " + gradients_out_name + " for writing"); - return; - } + if (!gradients_os) return; gradients->write_multicol(*gradients_os); cvm::proxy->close_output_stream(gradients_out_name); @@ -609,20 +602,14 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::string pmf_out_name = prefix + ".pmf"; std::ostream *pmf_os = cvm::proxy->output_stream(pmf_out_name, mode); - if (!pmf_os) { - cvm::error("Error opening pmf file " + pmf_out_name + " for writing"); - return; - } + if (!pmf_os) return; pmf->write_multicol(*pmf_os); // In dimension higher than 2, dx is easier to handle and visualize if (num_variables() > 2) { std::string pmf_dx_out_name = prefix + ".pmf.dx"; std::ostream *pmf_dx_os = cvm::proxy->output_stream(pmf_dx_out_name, mode); - if (!pmf_dx_os) { - cvm::error("Error opening pmf file " + pmf_dx_out_name + " for writing"); - return; - } + if (!pmf_dx_os) return; pmf->write_opendx(*pmf_dx_os); *pmf_dx_os << std::endl; cvm::proxy->close_output_stream(pmf_dx_out_name); @@ -639,10 +626,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::ostream *z_samples_os = cvm::proxy->output_stream(z_samples_out_name, mode); - if (!z_samples_os) { - cvm::error("Error opening eABF z-histogram file " + z_samples_out_name + " for writing"); - return; - } + if (!z_samples_os) return; z_samples->write_multicol(*z_samples_os); cvm::proxy->close_output_stream(z_samples_out_name); @@ -651,10 +635,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::ostream *z_gradients_os = cvm::proxy->output_stream(z_gradients_out_name, mode); - if (!z_gradients_os) { - cvm::error("Error opening eABF z-gradient file " + z_gradients_out_name + " for writing"); - return; - } + if (!z_gradients_os) return; z_gradients->write_multicol(*z_gradients_os); cvm::proxy->close_output_stream(z_gradients_out_name); } @@ -672,10 +653,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::ostream *czar_gradients_os = cvm::proxy->output_stream(czar_gradients_out_name, mode); - if (!czar_gradients_os) { - cvm::error("Error opening CZAR gradient file " + czar_gradients_out_name + " for writing"); - return; - } + if (!czar_gradients_os) return; czar_gradients->write_multicol(*czar_gradients_os); cvm::proxy->close_output_stream(czar_gradients_out_name); @@ -688,20 +666,14 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app std::string czar_pmf_out_name = prefix + ".czar.pmf"; std::ostream *czar_pmf_os = cvm::proxy->output_stream(czar_pmf_out_name, mode); - if (!czar_pmf_os) { - cvm::error("Error opening CZAR pmf file " + czar_pmf_out_name + " for writing"); - return; - } + if (!czar_pmf_os) return; czar_pmf->write_multicol(*czar_pmf_os); // In dimension higher than 2, dx is easier to handle and visualize if (num_variables() > 2) { std::string czar_pmf_dx_out_name = prefix + ".czar.pmf.dx"; std::ostream *czar_pmf_dx_os = cvm::proxy->output_stream(czar_pmf_dx_out_name, mode); - if (!czar_pmf_dx_os) { - cvm::error("Error opening CZAR pmf file " + czar_pmf_dx_out_name + " for writing"); - return; - } + if (!czar_pmf_dx_os) return; czar_pmf->write_opendx(*czar_pmf_dx_os); *czar_pmf_dx_os << std::endl; cvm::proxy->close_output_stream(czar_pmf_dx_out_name); @@ -854,3 +826,9 @@ std::istream & colvarbias_abf::read_state_data(std::istream& is) return is; } + +int colvarbias_abf::write_output_files() +{ + write_gradients_samples(output_prefix); + return COLVARS_OK; +} diff --git a/lib/colvars/colvarbias_abf.h b/lib/colvars/colvarbias_abf.h index 0260401292..52bf2df210 100644 --- a/lib/colvars/colvarbias_abf.h +++ b/lib/colvars/colvarbias_abf.h @@ -136,13 +136,13 @@ private: /// Write human-readable FE gradients and sample count, and DX file in dim > 2 void write_gradients_samples(const std::string &prefix, bool append = false); - void write_last_gradients_samples(const std::string &prefix, bool append = false); /// Read human-readable FE gradients and sample count (if not using restart) void read_gradients_samples(); - std::istream& read_state_data(std::istream&); - std::ostream& write_state_data(std::ostream&); + virtual std::istream& read_state_data(std::istream&); + virtual std::ostream& write_state_data(std::ostream&); + virtual int write_output_files(); }; #endif diff --git a/lib/colvars/colvarbias_restraint.cpp b/lib/colvars/colvarbias_restraint.cpp index 4ed1a95f94..2daf7a0876 100644 --- a/lib/colvars/colvarbias_restraint.cpp +++ b/lib/colvars/colvarbias_restraint.cpp @@ -996,11 +996,16 @@ int colvarbias_restraint_harmonic_walls::init(std::string const &conf) if ((lower_walls.size() > 0) && (upper_walls.size() > 0)) { for (i = 0; i < num_variables(); i++) { if (lower_walls[i] >= upper_walls[i]) { - cvm::error("Error: one upper wall, "+ - cvm::to_str(upper_walls[i])+ - ", is not higher than the lower wall, "+ - cvm::to_str(lower_walls[i])+".\n", - INPUT_ERROR); + return cvm::error("Error: one upper wall, "+ + cvm::to_str(upper_walls[i])+ + ", is not higher than the lower wall, "+ + cvm::to_str(lower_walls[i])+".\n", + INPUT_ERROR); + } + if (variables(i)->dist2(lower_walls[i], upper_walls[i]) < 1.0e-12) { + return cvm::error("Error: lower wall and upper wall are equal " + "in the domain of the variable \""+ + variables(i)->name+"\".\n", INPUT_ERROR); } } if (lower_wall_k * upper_wall_k == 0.0) { @@ -1279,13 +1284,16 @@ cvm::real colvarbias_restraint_linear::energy_difference(std::string const &conf cvm::real colvarbias_restraint_linear::restraint_potential(size_t i) const { - return force_k / variables(i)->width * (variables(i)->value() - colvar_centers[i]); + return force_k / variables(i)->width * (variables(i)->value() - + colvar_centers[i]).sum(); } colvarvalue const colvarbias_restraint_linear::restraint_force(size_t i) const { - return -1.0 * force_k / variables(i)->width; + colvarvalue dummy(variables(i)->value()); + dummy.set_ones(); + return -1.0 * force_k / variables(i)->width * dummy; } diff --git a/lib/colvars/colvarcomp.cpp b/lib/colvars/colvarcomp.cpp index 39b84b26d1..cb272eed05 100644 --- a/lib/colvars/colvarcomp.cpp +++ b/lib/colvars/colvarcomp.cpp @@ -43,16 +43,27 @@ colvar::cvc::cvc(std::string const &conf) int colvar::cvc::init(std::string const &conf) { - int error_code = COLVARS_OK; if (cvm::debug()) cvm::log("Initializing cvc base object.\n"); - get_keyval(conf, "name", this->name, this->name); + std::string const old_name(name); + if (name.size() > 0) { - // Temporary description until child object is initialized - description = "cvc " + name; - } else { - description = "uninitialized cvc"; + cvm::log("Updating configuration for component \""+name+"\""); + } + + if (get_keyval(conf, "name", name, name)) { + if (name.size() > 0) { + description = "cvc \"" + name + "\" of type " + function_type; + } else { + description = "unnamed cvc"; + } + if ((name != old_name) && (old_name.size() > 0)) { + cvm::error("Error: cannot rename component \""+old_name+ + "\" after initialization (new name = \""+name+"\")", + INPUT_ERROR); + name = old_name; + } } get_keyval(conf, "componentCoeff", sup_coeff, sup_coeff); @@ -78,7 +89,7 @@ int colvar::cvc::init(std::string const &conf) if (cvm::debug()) cvm::log("Done initializing cvc base object.\n"); - return error_code; + return cvm::get_error(); } diff --git a/lib/colvars/colvarcomp.h b/lib/colvars/colvarcomp.h index b5c3b16098..1a6df3771e 100644 --- a/lib/colvars/colvarcomp.h +++ b/lib/colvars/colvarcomp.h @@ -82,6 +82,9 @@ public: /// this variable definition should be set within the constructor. std::string function_type; + /// Keyword used in the input to denote this CVC + std::string config_key; + /// \brief Coefficient in the polynomial combination (default: 1.0) cvm::real sup_coeff; /// \brief Exponent in the polynomial combination (default: 1) @@ -834,49 +837,70 @@ protected: cvm::real r0; /// \brief "Cutoff vector" for anisotropic calculation cvm::rvector r0_vec; - /// \brief Wheter dist/r0 or \vec{dist}*\vec{1/r0_vec} should ne be - /// used + /// \brief Whether r/r0 or \vec{r}*\vec{1/r0_vec} should be used bool b_anisotropic; /// Integer exponent of the function numerator int en; /// Integer exponent of the function denominator int ed; - /// \brief If true, group2 will be treated as a single atom - /// (default: loop over all pairs of atoms in group1 and group2) - bool b_group2_center_only; + + /// \brief If true, group2 will be treated as a single atom, stored in this + /// accessory group + cvm::atom_group *group2_center; + + /// Tolerance for the pair list + cvm::real tolerance; + + /// Frequency of update of the pair list + int pairlist_freq; + + /// Pair list + bool *pairlist; + public: - /// Constructor + coordnum(std::string const &conf); coordnum(); - virtual ~coordnum() {} + ~coordnum(); + virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); - template - /// \brief Calculate a coordination number through the function - /// (1-x**n)/(1-x**m), x = |A1-A2|/r0 \param r0 "cutoff" for the - /// coordination number \param exp_num \i n exponent \param exp_den - /// \i m exponent \param A1 atom \param A2 atom - static cvm::real switching_function(cvm::real const &r0, - int const &exp_num, int const &exp_den, - cvm::atom &A1, cvm::atom &A2); - - template - /// \brief Calculate a coordination number through the function - /// (1-x**n)/(1-x**m), x = |(A1-A2)*(r0_vec)^-|1 \param r0_vec - /// vector of different cutoffs in the three directions \param - /// exp_num \i n exponent \param exp_den \i m exponent \param A1 - /// atom \param A2 atom - static cvm::real switching_function(cvm::rvector const &r0_vec, - int const &exp_num, int const &exp_den, - cvm::atom &A1, cvm::atom &A2); - virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const; virtual colvarvalue dist2_lgrad(colvarvalue const &x1, colvarvalue const &x2) const; virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const; + + enum { + ef_null = 0, + ef_gradients = 1, + ef_anisotropic = (1<<8), + ef_use_pairlist = (1<<9), + ef_rebuild_pairlist = (1<<10) + }; + + /// \brief Calculate a coordination number through the function + /// (1-x**n)/(1-x**m), where x = |A1-A2|/r0 \param r0, r0_vec "cutoff" for + /// the coordination number (scalar or vector depending on user choice) + /// \param en Numerator exponent \param ed Denominator exponent \param First + /// atom \param Second atom \param pairlist_elem pointer to pair flag for + /// this pair \param tolerance A pair is defined as having a larger + /// coordination than this number + template + static cvm::real switching_function(cvm::real const &r0, + cvm::rvector const &r0_vec, + int en, + int ed, + cvm::atom &A1, + cvm::atom &A2, + bool **pairlist_elem, + cvm::real tolerance); + + /// Main workhorse function + template int compute_coordnum(); + }; @@ -887,7 +911,8 @@ class colvar::selfcoordnum : public colvar::cvc { protected: - /// First atom group + + /// Selected atoms cvm::atom_group *group1; /// \brief "Cutoff" for isotropic calculation (default) cvm::real r0; @@ -895,22 +920,18 @@ protected: int en; /// Integer exponent of the function denominator int ed; + cvm::real tolerance; + int pairlist_freq; + bool *pairlist; + public: - /// Constructor + selfcoordnum(std::string const &conf); selfcoordnum(); - virtual ~selfcoordnum() {} + ~selfcoordnum(); virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); - template - /// \brief Calculate a coordination number through the function - /// (1-x**n)/(1-x**m), x = |A1-A2|/r0 \param r0 "cutoff" for the - /// coordination number \param exp_num \i n exponent \param exp_den - /// \i m exponent \param A1 atom \param A2 atom - static cvm::real switching_function(cvm::real const &r0, - int const &exp_num, int const &exp_den, - cvm::atom &A1, cvm::atom &A2); virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const; @@ -918,6 +939,9 @@ public: colvarvalue const &x2) const; virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const; + + /// Main workhorse function + template int compute_selfcoordnum(); }; @@ -947,26 +971,6 @@ public: virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); - template - /// \brief Calculate a coordination number through the function - /// (1-x**n)/(1-x**m), x = |A1-A2|/r0 \param r0 "cutoff" for the - /// coordination number \param exp_num \i n exponent \param exp_den - /// \i m exponent \param A1 atom \param A2 atom - static cvm::real switching_function(cvm::real const &r0, - int const &exp_num, int const &exp_den, - cvm::atom &A1, cvm::atom &A2); - - /* - template - /// \brief Calculate a coordination number through the function - /// (1-x**n)/(1-x**m), x = |(A1-A2)*(r0_vec)^-|1 \param r0_vec - /// vector of different cutoffs in the three directions \param - /// exp_num \i n exponent \param exp_den \i m exponent \param A1 - /// atom \param A2 atom - static cvm::real switching_function(cvm::rvector const &r0_vec, - int const &exp_num, int const &exp_den, - cvm::atom &A1, cvm::atom &A2); - */ virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const; diff --git a/lib/colvars/colvarcomp_coordnums.cpp b/lib/colvars/colvarcomp_coordnums.cpp index c34dc77215..ec53391ef5 100644 --- a/lib/colvars/colvarcomp_coordnums.cpp +++ b/lib/colvars/colvarcomp_coordnums.cpp @@ -18,45 +18,36 @@ - -template +template cvm::real colvar::coordnum::switching_function(cvm::real const &r0, - int const &en, - int const &ed, + cvm::rvector const &r0_vec, + int en, + int ed, cvm::atom &A1, - cvm::atom &A2) + cvm::atom &A2, + bool **pairlist_elem, + cvm::real pairlist_tol) { - cvm::rvector const diff = cvm::position_distance(A1.pos, A2.pos); - cvm::real const l2 = diff.norm2()/(r0*r0); - - // Assume en and ed are even integers, and avoid sqrt in the following - int const en2 = en/2; - int const ed2 = ed/2; - - cvm::real const xn = cvm::integer_power(l2, en2); - cvm::real const xd = cvm::integer_power(l2, ed2); - cvm::real const func = (1.0-xn)/(1.0-xd); - - if (calculate_gradients) { - cvm::real const dFdl2 = (1.0/(1.0-xd))*(en2*(xn/l2) - func*ed2*(xd/l2))*(-1.0); - cvm::rvector const dl2dx = (2.0/(r0*r0))*diff; - A1.grad += (-1.0)*dFdl2*dl2dx; - A2.grad += dFdl2*dl2dx; + if ((flags & ef_use_pairlist) && !(flags & ef_rebuild_pairlist)) { + bool const within = **pairlist_elem; + (*pairlist_elem)++; + if (!within) { + return 0.0; + } } - return func; -} + cvm::rvector const r0sq_vec(r0_vec.x*r0_vec.x, + r0_vec.y*r0_vec.y, + r0_vec.z*r0_vec.z); - -template -cvm::real colvar::coordnum::switching_function(cvm::rvector const &r0_vec, - int const &en, - int const &ed, - cvm::atom &A1, - cvm::atom &A2) -{ cvm::rvector const diff = cvm::position_distance(A1.pos, A2.pos); - cvm::rvector const scal_diff(diff.x/r0_vec.x, diff.y/r0_vec.y, diff.z/r0_vec.z); + + cvm::rvector const scal_diff(diff.x/((flags & ef_anisotropic) ? + r0_vec.x : r0), + diff.y/((flags & ef_anisotropic) ? + r0_vec.y : r0), + diff.z/((flags & ef_anisotropic) ? + r0_vec.z : r0)); cvm::real const l2 = scal_diff.norm2(); // Assume en and ed are even integers, and avoid sqrt in the following @@ -65,22 +56,45 @@ cvm::real colvar::coordnum::switching_function(cvm::rvector const &r0_vec, cvm::real const xn = cvm::integer_power(l2, en2); cvm::real const xd = cvm::integer_power(l2, ed2); - cvm::real const func = (1.0-xn)/(1.0-xd); + //The subtraction and division stretches the function back to the range of [0,1] from [pairlist_tol,1] + cvm::real const func = (((1.0-xn)/(1.0-xd)) - pairlist_tol) / (1.0-pairlist_tol); - if (calculate_gradients) { - cvm::real const dFdl2 = (1.0/(1.0-xd))*(en2*(xn/l2) - func*ed2*(xd/l2))*(-1.0); - cvm::rvector const dl2dx((2.0/(r0_vec.x*r0_vec.x))*diff.x, - (2.0/(r0_vec.y*r0_vec.y))*diff.y, - (2.0/(r0_vec.z*r0_vec.z))*diff.z); + if (flags & ef_rebuild_pairlist) { + //Particles just outside of the cutoff also are considered if they come near. + **pairlist_elem = (func > (-pairlist_tol * 0.5)) ? true : false; + (*pairlist_elem)++; + } + //If the value is too small, we need to exclude it, rather than let it contribute to the sum or the gradients. + if (func < 0) + return 0; + + if (flags & ef_gradients) { + //This is the old, completely correct expression for dFdl2: + //cvm::real const dFdl2 = (1.0/(1.0-xd))*(en2*(xn/l2) - + // func*ed2*(xd/l2))*(-1.0); + //This can become: + //cvm::real const dFdl2 = (1.0/(1.0-xd))*(en2*(xn/l2)*(1.0-xn)/(1.0-xn) - + // func*ed2*(xd/l2))*(-1.0); + //Recognizing that func = (1.0-xn)/(1.0-xd), we can group together the "func" and get a version of dFdl2 that is 0 + //when func=0, which lets us skip this gradient calculation when func=0. + cvm::real const dFdl2 = func * ((ed2*xd/((1.0-xd)*l2)) - (en2*xn/((1.0-xn)*l2))); + cvm::rvector const dl2dx((2.0/((flags & ef_anisotropic) ? r0sq_vec.x : + r0*r0)) * diff.x, + (2.0/((flags & ef_anisotropic) ? r0sq_vec.y : + r0*r0)) * diff.y, + (2.0/((flags & ef_anisotropic) ? r0sq_vec.z : + r0*r0)) * diff.z); A1.grad += (-1.0)*dFdl2*dl2dx; A2.grad += dFdl2*dl2dx; } + return func; } colvar::coordnum::coordnum(std::string const &conf) - : cvc(conf), b_anisotropic(false), b_group2_center_only(false) + : cvc(conf), b_anisotropic(false), group2_center(NULL), pairlist(NULL) + { function_type = "coordnum"; x.type(colvarvalue::type_scalar); @@ -90,23 +104,26 @@ colvar::coordnum::coordnum(std::string const &conf) if (int atom_number = cvm::atom_group::overlap(*group1, *group2)) { cvm::error("Error: group1 and group2 share a common atom (number: " + - cvm::to_str(atom_number) + ")\n"); + cvm::to_str(atom_number) + ")\n", INPUT_ERROR); return; } if (group1->b_dummy) { - cvm::error("Error: only group2 is allowed to be a dummy atom\n"); + cvm::error("Error: only group2 is allowed to be a dummy atom\n", + INPUT_ERROR); return; } bool const b_isotropic = get_keyval(conf, "cutoff", r0, cvm::real(4.0 * cvm::unit_angstrom())); - if (get_keyval(conf, "cutoff3", r0_vec, cvm::rvector(4.0 * cvm::unit_angstrom(), - 4.0 * cvm::unit_angstrom(), - 4.0 * cvm::unit_angstrom()))) { + if (get_keyval(conf, "cutoff3", r0_vec, + cvm::rvector(4.0 * cvm::unit_angstrom(), + 4.0 * cvm::unit_angstrom(), + 4.0 * cvm::unit_angstrom()))) { if (b_isotropic) { - cvm::error("Error: cannot specify \"cutoff\" and \"cutoff3\" at the same time.\n", + cvm::error("Error: cannot specify \"cutoff\" and \"cutoff3\" " + "at the same time.\n", INPUT_ERROR); return; } @@ -135,86 +152,178 @@ colvar::coordnum::coordnum(std::string const &conf) cvm::log("Warning: only minimum-image distances are used by this variable.\n"); } + bool b_group2_center_only = false; get_keyval(conf, "group2CenterOnly", b_group2_center_only, group2->b_dummy); + if (b_group2_center_only) { + if (!group2_center) { + group2_center = new cvm::atom_group(); + group2_center->add_atom(cvm::atom()); + } + } + + get_keyval(conf, "tolerance", tolerance, 0.0); + if (tolerance > 0) { + get_keyval(conf, "pairListFrequency", pairlist_freq, 100); + if ( ! (pairlist_freq > 0) ) { + cvm::error("Error: non-positive pairlistfrequency provided.\n", + INPUT_ERROR); + return; // and do not allocate the pairlists below + } + if (b_group2_center_only) { + pairlist = new bool[group1->size()]; + } + else { + pairlist = new bool[group1->size() * group2->size()]; + } + } + } colvar::coordnum::coordnum() - : b_anisotropic(false), b_group2_center_only(false) + : b_anisotropic(false), group2_center(NULL), pairlist(NULL) { function_type = "coordnum"; x.type(colvarvalue::type_scalar); } -void colvar::coordnum::calc_value() +colvar::coordnum::~coordnum() { - x.real_value = 0.0; + if (pairlist != NULL) { + delete [] pairlist; + } + if (group2_center != NULL) { + delete group2_center; + } +} - if (b_group2_center_only) { - // create a fake atom to hold the group2 com coordinates - cvm::atom group2_com_atom; - group2_com_atom.pos = group2->center_of_mass(); +template int colvar::coordnum::compute_coordnum() +{ + if (group2_center) { + (*group2_center)[0].pos = group2->center_of_mass(); + group2_center->calc_required_properties(); + } + cvm::atom_group *group2p = group2_center ? group2_center : group2; - if (b_anisotropic) { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - x.real_value += switching_function(r0_vec, en, ed, *ai1, group2_com_atom); - } else { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - x.real_value += switching_function(r0, en, ed, *ai1, group2_com_atom); + bool const use_pairlist = (pairlist != NULL); + bool const rebuild_pairlist = (pairlist != NULL) && + (cvm::step_relative() % pairlist_freq == 0); + + bool *pairlist_elem = use_pairlist ? pairlist : NULL; + cvm::atom_iter ai1 = group1->begin(), ai2 = group2p->begin(); + cvm::atom_iter const ai1_end = group1->end(); + cvm::atom_iter const ai2_end = group2p->end(); + + if (b_anisotropic) { + + if (use_pairlist) { + + if (rebuild_pairlist) { + + int const flags = compute_flags | ef_anisotropic | ef_use_pairlist | + ef_rebuild_pairlist; + for (ai1 = group1->begin(); ai1 != ai1_end; ai1++) { + for (ai2 = group2->begin(); ai2 != ai2_end; ai2++) { + x.real_value += switching_function(r0, r0_vec, en, ed, + *ai1, *ai2, + &pairlist_elem, + tolerance); + } + } + + } else { + + int const flags = compute_flags | ef_anisotropic | ef_use_pairlist; + for (ai1 = group1->begin(); ai1 != ai1_end; ai1++) { + for (ai2 = group2->begin(); ai2 != ai2_end; ai2++) { + x.real_value += switching_function(r0, r0_vec, en, ed, + *ai1, *ai2, + &pairlist_elem, + tolerance); + } + } + } + + } else { // if (use_pairlist) { + + int const flags = compute_flags | ef_anisotropic; + for (ai1 = group1->begin(); ai1 != ai1_end; ai1++) { + for (ai2 = group2->begin(); ai2 != ai2_end; ai2++) { + x.real_value += switching_function(r0, r0_vec, en, ed, + *ai1, *ai2, + NULL, 0.0); + } + } } } else { - if (b_anisotropic) { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - for (cvm::atom_iter ai2 = group2->begin(); ai2 != group2->end(); ai2++) { - x.real_value += switching_function(r0_vec, en, ed, *ai1, *ai2); + if (use_pairlist) { + + if (rebuild_pairlist) { + + int const flags = compute_flags | ef_use_pairlist | ef_rebuild_pairlist; + for (ai1 = group1->begin(); ai1 != ai1_end; ai1++) { + for (ai2 = group2->begin(); ai2 != ai2_end; ai2++) { + x.real_value += switching_function(r0, r0_vec, en, ed, + *ai1, *ai2, + &pairlist_elem, + tolerance); + } } - } else { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - for (cvm::atom_iter ai2 = group2->begin(); ai2 != group2->end(); ai2++) { - x.real_value += switching_function(r0, en, ed, *ai1, *ai2); + + } else { + + int const flags = compute_flags | ef_use_pairlist; + for (ai1 = group1->begin(); ai1 != ai1_end; ai1++) { + for (ai2 = group2->begin(); ai2 != ai2_end; ai2++) { + x.real_value += switching_function(r0, r0_vec, en, ed, + *ai1, *ai2, + &pairlist_elem, + tolerance); + } } + } + + } else { // if (use_pairlist) { + + int const flags = compute_flags; + for (ai1 = group1->begin(); ai1 != ai1_end; ai1++) { + for (ai2 = group2->begin(); ai2 != ai2_end; ai2++) { + x.real_value += switching_function(r0, r0_vec, en, ed, + *ai1, *ai2, + NULL, 0.0); + } + } } } + + if (compute_flags & ef_gradients) { + if (group2_center) { + group2->set_weighted_gradient((*group2_center)[0].grad); + } + } + + return COLVARS_OK; +} + + +void colvar::coordnum::calc_value() +{ + x.real_value = 0.0; + if (is_enabled(f_cvc_gradient)) { + compute_coordnum(); + } else { + compute_coordnum(); + } } void colvar::coordnum::calc_gradients() { - if (b_group2_center_only) { - - // create a fake atom to hold the group2 com coordinates - cvm::atom group2_com_atom; - group2_com_atom.pos = group2->center_of_mass(); - - - if (b_anisotropic) { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - switching_function(r0_vec, en, ed, *ai1, group2_com_atom); - } else { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - switching_function(r0, en, ed, *ai1, group2_com_atom); - } - - group2->set_weighted_gradient(group2_com_atom.grad); - - } else { - - if (b_anisotropic) { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - for (cvm::atom_iter ai2 = group2->begin(); ai2 != group2->end(); ai2++) { - switching_function(r0_vec, en, ed, *ai1, *ai2); - } - } else { - for (cvm::atom_iter ai1 = group1->begin(); ai1 != group1->end(); ai1++) - for (cvm::atom_iter ai2 = group2->begin(); ai2 != group2->end(); ai2++) { - switching_function(r0, en, ed, *ai1, *ai2); - } - } - } + // Gradients are computed by calc_value() if f_cvc_gradients is enabled } @@ -235,7 +344,7 @@ simple_scalar_dist_functions(coordnum) // h_bond member functions colvar::h_bond::h_bond(std::string const &conf) - : cvc(conf) +: cvc(conf) { if (cvm::debug()) cvm::log("Initializing h_bond object.\n"); @@ -307,13 +416,24 @@ colvar::h_bond::~h_bond() void colvar::h_bond::calc_value() { - x.real_value = colvar::coordnum::switching_function(r0, en, ed, (*atom_groups[0])[0], (*atom_groups[0])[1]); + int const flags = coordnum::ef_null; + cvm::rvector const r0_vec(0.0); // TODO enable the flag? + x.real_value = + coordnum::switching_function(r0, r0_vec, en, ed, + (*atom_groups[0])[0], + (*atom_groups[0])[1], + NULL, 0.0); } void colvar::h_bond::calc_gradients() { - colvar::coordnum::switching_function(r0, en, ed, (*atom_groups[0])[0], (*atom_groups[0])[1]); + int const flags = coordnum::ef_gradients; + cvm::rvector const r0_vec(0.0); // TODO enable the flag? + coordnum::switching_function(r0, r0_vec, en, ed, + (*atom_groups[0])[0], + (*atom_groups[0])[1], + NULL, 0.0); } @@ -328,7 +448,7 @@ simple_scalar_dist_functions(h_bond) colvar::selfcoordnum::selfcoordnum(std::string const &conf) - : cvc(conf) + : cvc(conf), pairlist(NULL) { function_type = "selfcoordnum"; x.type(colvarvalue::type_scalar); @@ -353,36 +473,115 @@ colvar::selfcoordnum::selfcoordnum(std::string const &conf) if (!is_enabled(f_cvc_pbc_minimum_image)) { cvm::log("Warning: only minimum-image distances are used by this variable.\n"); } + + get_keyval(conf, "tolerance", tolerance, 0.0); + if (tolerance > 0) { + get_keyval(conf, "pairListFrequency", pairlist_freq, 100); + if ( ! (pairlist_freq > 0) ) { + cvm::error("Error: non-positive pairlistfrequency provided.\n", + INPUT_ERROR); + return; + } + pairlist = new bool[(group1->size()-1) * (group1->size()-1)]; + } } colvar::selfcoordnum::selfcoordnum() + : pairlist(NULL) { function_type = "selfcoordnum"; x.type(colvarvalue::type_scalar); } +colvar::selfcoordnum::~selfcoordnum() +{ + if (pairlist != NULL) { + delete [] pairlist; + } +} + + +template int colvar::selfcoordnum::compute_selfcoordnum() +{ + cvm::rvector const r0_vec(0.0); // TODO enable the flag? + + bool const use_pairlist = (pairlist != NULL); + bool const rebuild_pairlist = (pairlist != NULL) && + (cvm::step_relative() % pairlist_freq == 0); + + bool *pairlist_elem = use_pairlist ? pairlist : NULL; + size_t i = 0, j = 0; + size_t const n = group1->size(); + + // Always isotropic (TODO: enable the ellipsoid?) + + if (use_pairlist) { + + if (rebuild_pairlist) { + int const flags = compute_flags | coordnum::ef_use_pairlist | + coordnum::ef_rebuild_pairlist; + for (i = 0; i < n - 1; i++) { + for (j = i + 1; j < n; j++) { + x.real_value += + coordnum::switching_function(r0, r0_vec, en, ed, + (*group1)[i], + (*group1)[j], + &pairlist_elem, + tolerance); + } + } + } else { + int const flags = compute_flags | coordnum::ef_use_pairlist; + for (i = 0; i < n - 1; i++) { + for (j = i + 1; j < n; j++) { + x.real_value += + coordnum::switching_function(r0, r0_vec, en, ed, + (*group1)[i], + (*group1)[j], + &pairlist_elem, + tolerance); + } + } + } + + } else { // if (use_pairlist) { + + int const flags = compute_flags | coordnum::ef_null; + for (i = 0; i < n - 1; i++) { + for (j = i + 1; j < n; j++) { + x.real_value += + coordnum::switching_function(r0, r0_vec, en, ed, + (*group1)[i], + (*group1)[j], + &pairlist_elem, + tolerance); + } + } + } + + return COLVARS_OK; +} + + void colvar::selfcoordnum::calc_value() { x.real_value = 0.0; - for (size_t i = 0; i < group1->size() - 1; i++) { - for (size_t j = i + 1; j < group1->size(); j++) { - x.real_value += colvar::coordnum::switching_function(r0, en, ed, (*group1)[i], (*group1)[j]); - } + if (is_enabled(f_cvc_gradient)) { + compute_selfcoordnum(); + } else { + compute_selfcoordnum(); } } void colvar::selfcoordnum::calc_gradients() { - for (size_t i = 0; i < group1->size() - 1; i++) { - for (size_t j = i + 1; j < group1->size(); j++) { - colvar::coordnum::switching_function(r0, en, ed, (*group1)[i], (*group1)[j]); - } - } + // Gradients are computed by calc_value() if f_cvc_gradients is enabled } + void colvar::selfcoordnum::apply_force(colvarvalue const &force) { if (!group1->noforce) { @@ -394,6 +593,7 @@ void colvar::selfcoordnum::apply_force(colvarvalue const &force) simple_scalar_dist_functions(selfcoordnum) + // groupcoordnum member functions colvar::groupcoordnum::groupcoordnum(std::string const &conf) : distance(conf), b_anisotropic(false) @@ -415,7 +615,7 @@ colvar::groupcoordnum::groupcoordnum(std::string const &conf) if (b_scale) { cvm::error("Error: cannot specify \"scale\" and " - "\"scale3\" at the same time.\n"); + "\"scale3\" at the same time.\n"); return; } b_anisotropic = true; @@ -453,95 +653,56 @@ colvar::groupcoordnum::groupcoordnum() } -template -cvm::real colvar::groupcoordnum::switching_function(cvm::real const &r0, - int const &en, - int const &ed, - cvm::atom &A1, - cvm::atom &A2) -{ - cvm::rvector const diff = cvm::position_distance(A1.pos, A2.pos); - cvm::real const l2 = diff.norm2()/(r0*r0); - - // Assume en and ed are even integers, and avoid sqrt in the following - int const en2 = en/2; - int const ed2 = ed/2; - - cvm::real const xn = cvm::integer_power(l2, en2); - cvm::real const xd = cvm::integer_power(l2, ed2); - cvm::real const func = (1.0-xn)/(1.0-xd); - - if (calculate_gradients) { - cvm::real const dFdl2 = (1.0/(1.0-xd))*(en2*(xn/l2) - func*ed2*(xd/l2))*(-1.0); - cvm::rvector const dl2dx = (2.0/(r0*r0))*diff; - A1.grad += (-1.0)*dFdl2*dl2dx; - A2.grad += dFdl2*dl2dx; - } - - return func; -} - - -#if 0 // AMG: I don't think there's any reason to support anisotropic, - // and I don't have those flags below in calc_value, but - // if I need them, I'll also need to uncomment this method -template -cvm::real colvar::groupcoordnum::switching_function(cvm::rvector const &r0_vec, - int const &en, - int const &ed, - cvm::atom &A1, - cvm::atom &A2) -{ - cvm::rvector const diff = cvm::position_distance(A1.pos, A2.pos); - cvm::rvector const scal_diff(diff.x/r0_vec.x, diff.y/r0_vec.y, diff.z/r0_vec.z); - cvm::real const l2 = scal_diff.norm2(); - - // Assume en and ed are even integers, and avoid sqrt in the following - int const en2 = en/2; - int const ed2 = ed/2; - - cvm::real const xn = cvm::integer_power(l2, en2); - cvm::real const xd = cvm::integer_power(l2, ed2); - cvm::real const func = (1.0-xn)/(1.0-xd); - - if (calculate_gradients) { - cvm::real const dFdl2 = (1.0/(1.0-xd))*(en2*(xn/l2) - func*ed2*(xd/l2))*(-1.0); - cvm::rvector const dl2dx((2.0/(r0_vec.x*r0_vec.x))*diff.x, - (2.0/(r0_vec.y*r0_vec.y))*diff.y, - (2.0/(r0_vec.z*r0_vec.z))*diff.z); - A1.grad += (-1.0)*dFdl2*dl2dx; - A2.grad += dFdl2*dl2dx; - } - return func; -} -#endif - - void colvar::groupcoordnum::calc_value() { + cvm::rvector const r0_vec(0.0); // TODO enable the flag? // create fake atoms to hold the com coordinates cvm::atom group1_com_atom; cvm::atom group2_com_atom; group1_com_atom.pos = group1->center_of_mass(); group2_com_atom.pos = group2->center_of_mass(); - - x.real_value = coordnum::switching_function(r0, en, ed, - group1_com_atom, group2_com_atom); + if (b_anisotropic) { + int const flags = coordnum::ef_anisotropic; + x.real_value = coordnum::switching_function(r0, r0_vec, en, ed, + group1_com_atom, + group2_com_atom, + NULL, 0.0); + } else { + int const flags = coordnum::ef_null; + x.real_value = coordnum::switching_function(r0, r0_vec, en, ed, + group1_com_atom, + group2_com_atom, + NULL, 0.0); + } } void colvar::groupcoordnum::calc_gradients() { + cvm::rvector const r0_vec(0.0); // TODO enable the flag? + cvm::atom group1_com_atom; cvm::atom group2_com_atom; group1_com_atom.pos = group1->center_of_mass(); group2_com_atom.pos = group2->center_of_mass(); - coordnum::switching_function(r0, en, ed, group1_com_atom, group2_com_atom); + if (b_anisotropic) { + int const flags = coordnum::ef_gradients | coordnum::ef_anisotropic; + coordnum::switching_function(r0, r0_vec, en, ed, + group1_com_atom, + group2_com_atom, + NULL, 0.0); + } else { + int const flags = coordnum::ef_gradients; + coordnum::switching_function(r0, r0_vec, en, ed, + group1_com_atom, + group2_com_atom, + NULL, 0.0); + } + group1->set_weighted_gradient(group1_com_atom.grad); group2->set_weighted_gradient(group2_com_atom.grad); - } diff --git a/lib/colvars/colvarcomp_distances.cpp b/lib/colvars/colvarcomp_distances.cpp index 57b2a9a625..a2b1a5cd23 100644 --- a/lib/colvars/colvarcomp_distances.cpp +++ b/lib/colvars/colvarcomp_distances.cpp @@ -939,7 +939,7 @@ colvar::rmsd::rmsd(std::string const &conf) bool b_Jacobian_derivative = true; if (atoms->fitting_group != NULL && b_Jacobian_derivative) { - cvm::log("The option \"refPositionsGroup\" (alternative group for fitting) was enabled: " + cvm::log("The option \"fittingGroup\" (alternative group for fitting) was enabled: " "Jacobian derivatives of the RMSD will not be calculated.\n"); b_Jacobian_derivative = false; } diff --git a/lib/colvars/colvarmodule.cpp b/lib/colvars/colvarmodule.cpp index dc6242c5bc..87b08b1ef8 100644 --- a/lib/colvars/colvarmodule.cpp +++ b/lib/colvars/colvarmodule.cpp @@ -139,7 +139,7 @@ int colvarmodule::read_config_file(char const *config_filename) // read the config file into a string std::string conf = ""; std::string line; - while (colvarparse::getline_nocomments(config_s, line)) { + while (parse->read_config_line(config_s, line)) { // Delete lines that contain only white space after removing comments if (line.find_first_not_of(colvarparse::white_space) != std::string::npos) conf.append(line+"\n"); @@ -159,11 +159,12 @@ int colvarmodule::read_config_string(std::string const &config_str) // strip the comments away std::string conf = ""; std::string line; - while (colvarparse::getline_nocomments(config_s, line)) { + while (parse->read_config_line(config_s, line)) { // Delete lines that contain only white space after removing comments if (line.find_first_not_of(colvarparse::white_space) != std::string::npos) conf.append(line+"\n"); } + return parse_config(conf); } @@ -191,6 +192,12 @@ int colvarmodule::parse_config(std::string &conf) { extra_conf.clear(); + // Check that the input has matching braces + if (colvarparse::check_braces(conf, 0) != COLVARS_OK) { + return cvm::error("Error: unmatched curly braces in configuration.\n", + INPUT_ERROR); + } + // Parse global options if (catch_input_errors(parse_global_params(conf))) { return get_error(); @@ -235,6 +242,12 @@ int colvarmodule::parse_config(std::string &conf) } +std::string const & colvarmodule::get_config() const +{ + return parse->get_config(); +} + + int colvarmodule::append_new_config(std::string const &new_conf) { extra_conf += new_conf; @@ -246,9 +259,13 @@ int colvarmodule::parse_global_params(std::string const &conf) { colvarmodule *cvm = cvm::main(); - std::string index_file_name; - if (parse->get_keyval(conf, "indexFile", index_file_name)) { - cvm->read_index_file(index_file_name.c_str()); + { + std::string index_file_name; + size_t pos = 0; + while (parse->key_lookup(conf, "indexFile", &index_file_name, &pos)) { + cvm->read_index_file(index_file_name.c_str()); + index_file_name.clear(); + } } if (parse->get_keyval(conf, "smp", proxy->b_smp_active, proxy->b_smp_active)) { @@ -1073,10 +1090,10 @@ colvarmodule::~colvarmodule() int colvarmodule::reset() { - parse->init(); - cvm::log("Resetting the Collective Variables module.\n"); + parse->init(); + // Iterate backwards because we are deleting the elements as we go for (std::vector::reverse_iterator bi = biases.rbegin(); bi != biases.rend(); diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index f3d99a2b23..3d93798e0a 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -131,7 +131,7 @@ public: /// Module-wide error state /// see constants at the top of this file -protected: +private: static int errorCode; @@ -274,6 +274,9 @@ public: /// \brief Parse a "clean" config string (no comments) int parse_config(std::string &conf); + /// Get the configuration string read so far (includes comments) + std::string const & get_config() const; + // Parse functions (setup internal data based on a string) /// Allow reading from Windows text files using using std::getline @@ -296,6 +299,9 @@ public: private: + /// Configuration string read so far by the module (includes comments) + std::string config_string; + /// Auto-generated configuration during parsing (e.g. to implement /// back-compatibility) std::string extra_conf; diff --git a/lib/colvars/colvarparse.cpp b/lib/colvars/colvarparse.cpp index 43c8c69c04..d8b3a359cd 100644 --- a/lib/colvars/colvarparse.cpp +++ b/lib/colvars/colvarparse.cpp @@ -43,9 +43,10 @@ template bool colvarparse::_get_keyval_scalar_(std::string const } } while (b_found); - if (found_count > 1) - cvm::log("Warning: found more than one instance of \""+ - std::string(key)+"\".\n"); + if (found_count > 1) { + cvm::error("Error: found more than one instance of \""+ + std::string(key)+"\".\n", INPUT_ERROR); + } if (data.size()) { std::istringstream is(data); @@ -98,9 +99,10 @@ bool colvarparse::_get_keyval_scalar_string_(std::string const &conf, } } while (b_found); - if (found_count > 1) - cvm::log("Warning: found more than one instance of \""+ - std::string(key)+"\".\n"); + if (found_count > 1) { + cvm::error("Error: found more than one instance of \""+ + std::string(key)+"\".\n", INPUT_ERROR); + } if (data.size()) { std::istringstream is(data); @@ -162,9 +164,10 @@ template bool colvarparse::_get_keyval_vector_(std::string const } } while (b_found); - if (found_count > 1) - cvm::log("Warning: found more than one instance of \""+ - std::string(key)+"\".\n"); + if (found_count > 1) { + cvm::error("Error: found more than one instance of \""+ + std::string(key)+"\".\n", INPUT_ERROR); + } if (data.size()) { std::istringstream is(data); @@ -319,9 +322,10 @@ bool colvarparse::get_keyval(std::string const &conf, } } while (b_found); - if (found_count > 1) - cvm::log("Warning: found more than one instance of \""+ - std::string(key)+"\".\n"); + if (found_count > 1) { + cvm::error("Error: found more than one instance of \""+ + std::string(key)+"\".\n", INPUT_ERROR); + } if (data.size()) { if ( (data == std::string("on")) || @@ -535,6 +539,19 @@ int colvarparse::check_keywords(std::string &conf, char const *key) } +std::istream & colvarparse::read_config_line(std::istream &is, + std::string &line) +{ + cvm::getline(is, line); + config_string += line+'\n'; + size_t const comment = line.find('#'); + if (comment != std::string::npos) { + line.erase(comment); + } + return is; +} + + std::istream & colvarparse::getline_nocomments(std::istream &is, std::string &line) { @@ -607,7 +624,7 @@ bool colvarparse::key_lookup(std::string const &conf, } // check that there are matching braces between here and the end of conf - bool const b_not_within_block = brace_check(conf, pos); + bool const b_not_within_block = (check_braces(conf, pos) == COLVARS_OK); bool const b_isolated = (b_isolated_left && b_isolated_right && b_not_within_block); @@ -781,19 +798,15 @@ std::istream & operator>> (std::istream &is, colvarparse::read_block const &rb) } -bool colvarparse::brace_check(std::string const &conf, +int colvarparse::check_braces(std::string const &conf, size_t const start_pos) { - size_t brace_count = 0; + int brace_count = 0; size_t brace = start_pos; - while ( (brace = conf.find_first_of("{}", brace)) != std::string::npos) { + while ((brace = conf.find_first_of("{}", brace)) != std::string::npos) { if (conf[brace] == '{') brace_count++; if (conf[brace] == '}') brace_count--; brace++; } - - if (brace_count != 0) - return false; - else - return true; + return (brace_count != 0) ? INPUT_ERROR : COLVARS_OK; } diff --git a/lib/colvars/colvarparse.h b/lib/colvars/colvarparse.h index 9389bc49da..28ad3c052b 100644 --- a/lib/colvars/colvarparse.h +++ b/lib/colvars/colvarparse.h @@ -24,7 +24,7 @@ /// need to parse input inherit from this class colvarparse { -private: +protected: /// \brief List of legal keywords for this object: this is updated /// by each call to colvarparse::get_keyval() or @@ -47,7 +47,7 @@ private: /// \brief Remove all the values from the config string void strip_values(std::string &conf); - /// \brief Configuration string of the object + /// \brief Configuration string of the object (includes comments) std::string config_string; public: @@ -72,7 +72,7 @@ public: } /// Set a new config string for this object - inline void init(const std::string& conf) + inline void init(std::string const &conf) { if (! config_string.size()) { init(); @@ -80,7 +80,8 @@ public: } } - inline const std::string& get_config() + /// Get the configuration string (includes comments) + inline std::string const & get_config() const { return config_string; } @@ -284,14 +285,19 @@ public: std::string *data = NULL, size_t *save_pos = NULL); + /// \brief Reads a configuration line, adds it to config_string, and returns + /// the stream \param is Input stream \param s String that will hold the + /// configuration line, with comments stripped + std::istream & read_config_line(std::istream &is, std::string &line); + /// \brief Works as std::getline() but also removes everything /// between a comment character and the following newline - static std::istream & getline_nocomments(std::istream &is, - std::string &s); + static std::istream & getline_nocomments(std::istream &is, std::string &s); - /// Check if the content of the file has matching braces - bool brace_check(std::string const &conf, - size_t const start_pos = 0); + /// \brief Check if the content of a config string has matching braces + /// \param conf The configuration string \param start_pos Start the count + /// from this position + static int check_braces(std::string const &conf, size_t const start_pos); }; diff --git a/lib/colvars/colvarproxy.cpp b/lib/colvars/colvarproxy.cpp index 86338dfd1b..da9257eee2 100644 --- a/lib/colvars/colvarproxy.cpp +++ b/lib/colvars/colvarproxy.cpp @@ -289,13 +289,23 @@ colvarproxy_smp::colvarproxy_smp() omp_lock_state = NULL; #if defined(_OPENMP) if (smp_thread_id() == 0) { + omp_lock_state = reinterpret_cast(new omp_lock_t); omp_init_lock(reinterpret_cast(omp_lock_state)); } #endif } -colvarproxy_smp::~colvarproxy_smp() {} +colvarproxy_smp::~colvarproxy_smp() +{ +#if defined(_OPENMP) + if (smp_thread_id() == 0) { + if (omp_lock_state) { + delete reinterpret_cast(omp_lock_state); + } + } +#endif +} int colvarproxy_smp::smp_enabled() @@ -499,6 +509,14 @@ char const *colvarproxy_script::script_obj_to_str(unsigned char *obj) } +std::vector colvarproxy_script::script_obj_to_str_vector(unsigned char *obj) +{ + cvm::error("Error: trying to print a script object without a scripting " + "language interface.\n", BUG_ERROR); + return std::vector(); +} + + int colvarproxy_script::run_force_callback() { return COLVARS_NOT_IMPLEMENTED; diff --git a/lib/colvars/colvarproxy.h b/lib/colvars/colvarproxy.h index 845f93c9bc..3ff5f3c697 100644 --- a/lib/colvars/colvarproxy.h +++ b/lib/colvars/colvarproxy.h @@ -461,6 +461,9 @@ public: /// Convert a script object (Tcl or Python call argument) to a C string virtual char const *script_obj_to_str(unsigned char *obj); + /// Convert a script object (Tcl or Python call argument) to a vector of strings + virtual std::vector script_obj_to_str_vector(unsigned char *obj); + /// Pointer to the scripting interface object /// (does not need to be allocated in a new interface) colvarscript *script; diff --git a/lib/colvars/colvars_version.h b/lib/colvars/colvars_version.h index 68f5cd13ab..a37d264a20 100644 --- a/lib/colvars/colvars_version.h +++ b/lib/colvars/colvars_version.h @@ -1,5 +1,5 @@ #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2018-04-29" +#define COLVARS_VERSION "2018-10-16" // This file is part of the Collective Variables module (Colvars). // The original version of Colvars and its updates are located at: // https://github.com/colvars/colvars diff --git a/lib/colvars/colvarscript.cpp b/lib/colvars/colvarscript.cpp index a55e4c65d9..c9fe0497a9 100644 --- a/lib/colvars/colvarscript.cpp +++ b/lib/colvars/colvarscript.cpp @@ -82,6 +82,14 @@ int colvarscript::run(int objc, unsigned char *const objv[]) int error_code = COLVARS_OK; + // If command is found in map, execute it + std::string const cmd_key("cv_"+cmd); + if (comm_str_map.count(cmd_key) > 0) { + error_code |= (*(comm_fns[comm_str_map[cmd_key]]))( + reinterpret_cast(this), objc, objv); + return error_code; + } + if (cmd == "colvar") { if (objc < 3) { result = "Missing parameters\n" + help_string(); @@ -295,11 +303,12 @@ int colvarscript::proc_colvar(colvar *cv, int objc, unsigned char *const objv[]) } if (subcmd == "delete") { - size_t i; - for (i = 0; i < cv->biases.size(); i++) { + while (cv->biases.size() > 0) { + size_t i = cv->biases.size()-1; + cvm::log("Warning: before deleting colvar " + cv->name + + ", deleting parent bias " + cv->biases[i]->name); delete cv->biases[i]; } - cv->biases.clear(); // colvar destructor is tasked with the cleanup delete cv; // TODO this could be done by the destructors @@ -373,6 +382,23 @@ int colvarscript::proc_colvar(colvar *cv, int objc, unsigned char *const objv[]) return COLVARS_OK; } + if (subcmd == "modifycvcs") { + if (objc < 4) { + result = "cvcflags: missing parameter: vector of strings"; + return COLVARSCRIPT_ERROR; + } + std::vector const confs(proxy->script_obj_to_str_vector(objv[3])); + cvm::increase_depth(); + int res = cv->update_cvc_config(confs); + cvm::decrease_depth(); + if (res != COLVARS_OK) { + result = "Error setting CVC flags"; + return COLVARSCRIPT_ERROR; + } + result = "0"; + return COLVARS_OK; + } + if ((subcmd == "get") || (subcmd == "set") || (subcmd == "state")) { return proc_features(cv, objc, objv); } @@ -547,6 +573,8 @@ std::string colvarscript::help_string() const Managing the Colvars module:\n\ configfile -- read configuration from a file\n\ config -- read configuration from the given string\n\ + getconfig -- get the module's configuration string\n\ + resetindexgroups -- clear the index groups loaded so far\n\ reset -- delete all internal configuration\n\ delete -- delete this Colvars module instance\n\ version -- return version of Colvars code\n\ @@ -579,6 +607,7 @@ Accessing collective variables:\n\ colvar gettotalforce -- return total force of colvar \n\ colvar getconfig -- return config string of colvar \n\ colvar cvcflags -- enable or disable cvcs according to 0/1 flags\n\ + colvar modifycvcs -- pass new config strings to each CVC\n\ colvar get -- get the value of the colvar feature \n\ colvar set -- set the value of the colvar feature \n\ \n\ diff --git a/lib/colvars/colvarscript.h b/lib/colvars/colvarscript.h index 39cd089340..313dbd661b 100644 --- a/lib/colvars/colvarscript.h +++ b/lib/colvars/colvarscript.h @@ -71,8 +71,10 @@ public: cv_help, cv_version, cv_config, + cv_getconfig, cv_configfile, cv_reset, + cv_resetindexgroups, cv_delete, cv_list, cv_list_biases, @@ -254,6 +256,23 @@ extern "C" { return COLVARSCRIPT_ERROR; ) + CVSCRIPT(cv_getconfig, + "Get the module's configuration string read so far", + 0, 0, + { }, + script->set_str_result(cvm::main()->get_config()); + return COLVARS_OK; + ) + + CVSCRIPT(cv_resetindexgroups, + "Clear the index groups loaded so far, allowing to replace them", + 0, 0, + { }, + cvm::main()->index_group_names.clear(); + cvm::main()->index_groups.clear(); + return COLVARS_OK; + ) + CVSCRIPT(cv_addenergy, "Add an energy to the MD engine", 1, 1, diff --git a/lib/colvars/colvarvalue.cpp b/lib/colvars/colvarvalue.cpp index 312d101603..86b99ed3d6 100644 --- a/lib/colvars/colvarvalue.cpp +++ b/lib/colvars/colvarvalue.cpp @@ -379,6 +379,40 @@ void colvarvalue::set_random() } +void colvarvalue::set_ones(cvm::real assigned_value) +{ + size_t ic; + switch (this->type()) { + case colvarvalue::type_scalar: + this->real_value = assigned_value; + break; + case colvarvalue::type_3vector: + case colvarvalue::type_unit3vector: + case colvarvalue::type_unit3vectorderiv: + this->rvector_value.x = assigned_value; + this->rvector_value.y = assigned_value; + this->rvector_value.z = assigned_value; + break; + case colvarvalue::type_quaternion: + case colvarvalue::type_quaternionderiv: + this->quaternion_value.q0 = assigned_value; + this->quaternion_value.q1 = assigned_value; + this->quaternion_value.q2 = assigned_value; + this->quaternion_value.q3 = assigned_value; + break; + case colvarvalue::type_vector: + for (ic = 0; ic < this->vector1d_value.size(); ic++) { + this->vector1d_value[ic] = assigned_value; + } + break; + case colvarvalue::type_notset: + default: + undef_op(); + break; + } +} + + void colvarvalue::undef_op() const { cvm::error("Error: Undefined operation on a colvar of type \""+ diff --git a/lib/colvars/colvarvalue.h b/lib/colvars/colvarvalue.h index 41759e92b0..25255e2f7c 100644 --- a/lib/colvars/colvarvalue.h +++ b/lib/colvars/colvarvalue.h @@ -187,6 +187,12 @@ public: return std::sqrt(this->norm2()); } + /// Sum of the components of this colvarvalue (if more than one dimension) + cvm::real sum() const; + + /// Return a colvarvalue object of the same type and all components set to 1 + colvarvalue ones() const; + /// Square distance between this \link colvarvalue \endlink and another cvm::real dist2(colvarvalue const &x2) const; @@ -272,17 +278,21 @@ public: /// Get a single colvarvalue out of elements of the vector colvarvalue const get_elem(int const i_begin, int const i_end, Type const vt) const; + /// Get a single colvarvalue out of elements of the vector + colvarvalue const get_elem(int const icv) const; + + /// Set elements of the vector from a single colvarvalue (uses the rank of x + /// to compute the length) + void set_elem(int const icv, colvarvalue const &x); + /// Set elements of the vector from a single colvarvalue void set_elem(int const i_begin, int const i_end, colvarvalue const &x); /// Make each element a random number in N(0,1) void set_random(); - /// Get a single colvarvalue out of elements of the vector - colvarvalue const get_elem(int const icv) const; - - /// Set elements of the vector from a single colvarvalue - void set_elem(int const icv, colvarvalue const &x); + /// Make each element equal to the given argument + void set_ones(cvm::real assigned_value = 1.0); /// Get a scalar number out of an element of the vector cvm::real operator [] (int const i) const; @@ -683,6 +693,29 @@ inline cvm::real colvarvalue::norm2() const } +inline cvm::real colvarvalue::sum() const +{ + switch (value_type) { + case colvarvalue::type_scalar: + return (this->real_value); + case colvarvalue::type_3vector: + case colvarvalue::type_unit3vector: + case colvarvalue::type_unit3vectorderiv: + return (this->rvector_value).x + (this->rvector_value).y + + (this->rvector_value).z; + case colvarvalue::type_quaternion: + case colvarvalue::type_quaternionderiv: + return (this->quaternion_value).q0 + (this->quaternion_value).q1 + + (this->quaternion_value).q2 + (this->quaternion_value).q3; + case colvarvalue::type_vector: + return (this->vector1d_value).sum(); + case colvarvalue::type_notset: + default: + return 0.0; + } +} + + inline cvm::real colvarvalue::dist2(colvarvalue const &x2) const { colvarvalue::check_types(*this, x2); diff --git a/src/USER-COLVARS/colvarproxy_lammps_version.h b/src/USER-COLVARS/colvarproxy_lammps_version.h index 0d451212b2..edd6778c64 100644 --- a/src/USER-COLVARS/colvarproxy_lammps_version.h +++ b/src/USER-COLVARS/colvarproxy_lammps_version.h @@ -1,5 +1,5 @@ #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2018-04-29" +#define COLVARPROXY_VERSION "2018-08-29" // This file is part of the Collective Variables module (Colvars). // The original version of Colvars and its updates are located at: // https://github.com/colvars/colvars From ea9746f26d1da69aa23468f0165561ec7aee8502 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:08:32 -0400 Subject: [PATCH 48/72] insert fix plumed docs into manual generation --- doc/src/fixes.txt | 1 + doc/src/lammps.book | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt index 66f6633124..601d8208fe 100644 --- a/doc/src/fixes.txt +++ b/doc/src/fixes.txt @@ -117,6 +117,7 @@ Fixes :h1 fix_phonon fix_pimd fix_planeforce + fix_plumed fix_poems fix_pour fix_precession_spin diff --git a/doc/src/lammps.book b/doc/src/lammps.book index f739712f08..9c97d403d4 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -337,6 +337,7 @@ fix_orient.html fix_phonon.html fix_pimd.html fix_planeforce.html +fix_plumed.html fix_poems.html fix_pour.html fix_precession_spin.html From b7e507a2585fe8e42d203c503e106296d5cee650 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:08:45 -0400 Subject: [PATCH 49/72] fix typo and reformat --- doc/src/fix_plumed.txt | 107 +++++++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 47 deletions(-) diff --git a/doc/src/fix_plumed.txt b/doc/src/fix_plumed.txt index d9ee6dce39..d5fbcd88ef 100644 --- a/doc/src/fix_plumed.txt +++ b/doc/src/fix_plumed.txt @@ -12,82 +12,95 @@ fix plumed command :h3 fix ID group-ID plumed keyword value ... :pre -ID, group-ID are documented in "fix"_fix.html command :ulb,l -plumed = style name of this fix command :1 -keyword = {plumedfile} or {outfile} :1 +ID, group-ID are documented in "fix"_fix.html command :ulb,l +plumed = style name of this fix command :l +keyword = {plumedfile} or {outfile} :l {plumedfile} arg = name of PLUMED input file to use (default: NULL) - {outfile} arg = name of file on which to write the PLUMED log (default: NULL) -:ule + {outfile} arg = name of file on which to write the PLUMED log (default: NULL) :pre +:ule [Examples:] -fix pl all plumed all plumed plumedfile plumed.dat outfile p.log +fix pl all plumed all plumed plumedfile plumed.dat outfile p.log [Description:] -This fix instructs LAMMPS to call the PLUMED library, which allows one -to perform various forms of trajectory analysis on the fly and to also use -methods such as umbrella sampling and metadynamics to enhance the sampling of -phase space. +This fix instructs LAMMPS to call the PLUMED library, which allows one +to perform various forms of trajectory analysis on the fly and to also +use methods such as umbrella sampling and metadynamics to enhance the +sampling of phase space. -The documentation included here only describes the fix plumed command. This command -is LAMMPS specific whereas most of the functionality implemented in PLUMED will work with a -range of MD codes and also when PLUMED is used as a stand alone code. The full documentation -for PLUMED is available at "this website"_http://www.plumed.org/documentation +The documentation included here only describes the fix plumed command. +This command is LAMMPS specific whereas most of the functionality +implemented in PLUMED will work with a range of MD codes and also when +PLUMED is used as a stand alone code. The full documentation for PLUMED +is available at "this website"_http://www.plumed.org/documentation -The PLUMED library is developed at "https://github.com/plumed/plumed2"_https://github.com/plumed/plumed2 -A detailed discussion of the code can be found in "(PLUMED)"_#PLUMED. +The PLUMED library is developed at +"https://github.com/plumed/plumed2"_https://github.com/plumed/plumed2 A +detailed discussion of the code can be found in "(PLUMED)"_#PLUMED. There are some example scripts for using this package with LAMMPS in the examples/USER/plumed directory. :line -The command to call PLUMED above is reasonably self explanatory. Within the input file -for lammps the user is required to specify the input file for PLUMED and a file on which -to output the PLUMED log. The user must specify both of these arguments every time -PLUMED is to be used. Furthermore, the fix plumed command should appear in the LAMMPS input -file after the relevant input paramters (e.g. the timestep) have been set. +The command to call PLUMED above is reasonably self explanatory. Within +the input file for lammps the user is required to specify the input file +for PLUMED and a file on which to output the PLUMED log. The user must +specify both of these arguments every time PLUMED is to be used. +Furthermore, the fix plumed command should appear in the LAMMPS input +file after the relevant input paramters (e.g. the timestep) have been +set. -The {group-ID} entry is ignored. LAMMPS will always pass all the atoms to PLUMED -and there can only be one instance of the plumed fix at a time. The plumed fix communicates -the minimum amount of information required and the PLUMED supports multiple, completely -independent collective variables, multiple independent biases and multiple independent forms of analysis. -There is thus really no restriction in functionality by only allowing only one plumed fix in the LAMMPS input. +The {group-ID} entry is ignored. LAMMPS will always pass all the atoms +to PLUMED and there can only be one instance of the plumed fix at a +time. The plumed fix communicates the minimum amount of information +required and the PLUMED supports multiple, completely independent +collective variables, multiple independent biases and multiple +independent forms of analysis. There is thus really no restriction in +functionality by only allowing only one plumed fix in the LAMMPS input. -The {plumedfile} keyword allows the user to specify the name of the PLUMED input file. -Instructions as to what should be included in a plumed input file can be found in the -"documentation for PLUMED"_http://www.plumed.org/documentation. +The {plumedfile} keyword allows the user to specify the name of the +PLUMED input file. Instructions as to what should be included in a +plumed input file can be found in the "documentation for +PLUMED"_http://www.plumed.org/documentation. -The {outfile} keyword allows the user to specify the name of a file on which to output -the PLUMED log. This log file normally just parots the information that is contained in the input -file. The names of the files on which the results from the various analyses that have been performed -using PLUMED will be specified by the user in the PLUMED input file. +The {outfile} keyword allows the user to specify the name of a file on +which to output the PLUMED log. This log file normally just parots the +information that is contained in the input file. The names of the files +on which the results from the various analyses that have been performed +using PLUMED will be specified by the user in the PLUMED input file. [Restart, fix_modify, output, run start/stop, minimize info:] -When performing a restart of a calculation that involves PLUMED you must include a RESTART command -in the PLUMED input file as detailed in the "PLUMED documentation"_http://www.plumed.org/documentation. When the restart -command is found in the PLUMED input PLUMED will append to the files that were generated in the run -that was performed previously. Furthermore, any history dependent bias potentials that were accumulated in -previous calculations will be read in when the restart command is included in the PLUMED input. +When performing a restart of a calculation that involves PLUMED you must +include a RESTART command in the PLUMED input file as detailed in the +"PLUMED documentation"_http://www.plumed.org/documentation. When the +restart command is found in the PLUMED input PLUMED will append to the +files that were generated in the run that was performed previously. +Furthermore, any history dependent bias potentials that were accumulated +in previous calculations will be read in when the restart command is +included in the PLUMED input. -The "fix_modify"_fix_modify.html {energy} option is not supported by this fix. +The "fix_modify"_fix_modify.html {energy} option is not supported by +this fix. -Nothing is computed by this fix that can be accessed by any of the +Nothing is computed by this fix that can be accessed by any of the "output commands"_Howto_output.html within LAMMPS. All the quantities -of interest can be output by commands that are native to PLUMED, however. +of interest can be output by commands that are native to PLUMED, +however. [Restrictions:] This fix is part of the USER-PLUMED package. It is only enabled if -LAMMPS was built with that package. See the "Build +LAMMPS was built with that package. See the "Build package"_Build_package.html doc page for more info. There can only be one plumed fix active at a time. Since the interface -communicates only the minimum amount of information and since the PLUMED module -itself can handle an arbitrary number of analysis and biasing methods, this is -not a limitation of functionality. +communicates only the minimum amount of information and since the PLUMED +module itself can handle an arbitrary number of analysis and biasing +methods, this is not a limitation of functionality. [Related commands:] @@ -96,9 +109,9 @@ not a limitation of functionality. [Default:] -The default options are plumedfile = NULL and outfile = NULL +The default options are plumedfile = NULL and outfile = NULL :line :link(PLUMED) -[(PLUMED)] G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) DOI:https://doi.org/10.1016/j.cpc.2013.09.018 +[(PLUMED)] G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) From 30518a993bfe6a402a232ff090c793bf4e8fd847 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:14:04 -0400 Subject: [PATCH 50/72] add LAMMPS header --- src/USER-PLUMED/fix_plumed.cpp | 16 ++++++++++++++++ src/USER-PLUMED/fix_plumed.h | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 7c05a02335..b326940d94 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -1,3 +1,19 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + 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 author: Gareth Tribello (Queens U, Belfast) +------------------------------------------------------------------------- */ #include #include diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index d4bc037024..55671f7c9b 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -1,3 +1,15 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ #ifdef FIX_CLASS From d185b34b191c629c41ad63f6d6af741a67f1eb34 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:19:53 -0400 Subject: [PATCH 51/72] reformat to closer match LAMMPS programming style --- src/USER-PLUMED/fix_plumed.h | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index 55671f7c9b..bc1d5af034 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -43,28 +43,19 @@ class FixPlumed : public Fix { double compute_scalar(); private: -// pointer to plumed object: - PLMD::Plumed *p; -// number of atoms local to this process: - int nlocal; -// array of atom indexes local to this process: - int *gatindex; -// array of masses for local atoms: - double *masses; -// array of charges for local atoms: - double *charges; -// this is something to enable respa - int nlevels_respa; -// output bias potential - double bias; -// Compute for the energy - class Compute *c_pe; -// Compute for the pressure - class Compute *c_press; -// Flag to trigger calculation of the energy and virial - int plumedNeedsEnergy; -// ID for potential energy and pressure compute - char *id_pe, *id_press; + + PLMD::Plumed *p; // pointer to plumed object + int nlocal; // number of atoms local to this process + int *gatindex; // array of atom indexes local to this process + double *masses; // array of masses for local atoms + double *charges; // array of charges for local atoms + int nlevels_respa; // this is something to enable respa + double bias; // output bias potential + class Compute *c_pe; // Compute for the energy + class Compute *c_press; // Compute for the pressure + int plumedNeedsEnergy; // Flag to trigger calculation of the + // energy and virial + char *id_pe, *id_press; // ID for potential energy and pressure compute }; }; From df3390e224074b18ffe95f9623aef1f1c5be3261 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:33:30 -0400 Subject: [PATCH 52/72] update formatting to closer match LAMMPS' programming style --- src/USER-PLUMED/fix_plumed.cpp | 189 ++++++++++++++++++--------------- 1 file changed, 103 insertions(+), 86 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index b326940d94..feb12716b8 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -55,6 +55,8 @@ #include "plumed/wrapper/Plumed.h" +/* -------------------------------------------------------------------- */ + using namespace LAMMPS_NS; using namespace FixConst; @@ -62,76 +64,88 @@ using namespace FixConst; FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), - p(NULL), - nlocal(0), - gatindex(NULL), - masses(NULL), - charges(NULL), - id_pe(NULL), - id_press(NULL) + p(NULL), nlocal(0), gatindex(NULL), masses(NULL), charges(NULL), + id_pe(NULL), id_press(NULL) { -// Not sure this is really necessary: - if (!atom->tag_enable) error->all(FLERR,"fix plumed requires atom tags"); -// Initialize plumed: - p=new PLMD::Plumed; -// Check API version - int api_version; p->cmd("getApiVersion",&api_version); - if( api_version>6 ) error->all(FLERR,"invalid api version for PLUMED"); -// If the -partition option is activated then enable inter-partition communication + if (!atom->tag_enable) + error->all(FLERR,"Fix plumed requires atom tags"); + + if (igroup != 0 && comm->me == 0) + error->warning(FLERR,"Fix group for fix plumed is not 'all'. " + "Group will be ignored."); + + + p=new PLMD::Plumed; + + // Check API version + + int api_version; + p->cmd("getApiVersion",&api_version); + if (api_version > 6) + error->all(FLERR,"Incompatible API version for PLUMED in fix plumed"); + + // If the -partition option is activated then enable + // inter-partition communication + if (universe->existflag == 1) { - int me; - MPI_Comm inter_comm; - MPI_Comm_rank(world,&me); - // Change MPI_COMM_WORLD to universe->uworld which seems more appropriate - MPI_Comm_split(universe->uworld,me,0,&inter_comm); - p->cmd("GREX setMPIIntracomm",&world); - if (me == 0) { - // The inter-partition communicator is only defined for the root in - // each partition (a.k.a. world). This is due to the way in which - // it is defined inside plumed. - p->cmd("GREX setMPIIntercomm",&inter_comm); - } - p->cmd("GREX init",NULL); + int me; + MPI_Comm inter_comm; + MPI_Comm_rank(world,&me); + + // Change MPI_COMM_WORLD to universe->uworld which seems more appropriate + + MPI_Comm_split(universe->uworld,me,0,&inter_comm); + p->cmd("GREX setMPIIntracomm",&world); + if (me == 0) { + // The inter-partition communicator is only defined for the root in + // each partition (a.k.a. world). This is due to the way in which + // it is defined inside plumed. + p->cmd("GREX setMPIIntercomm",&inter_comm); + } + p->cmd("GREX init",NULL); } + // The general communicator is independent of the existence of partitions, - // if there are partitions, world is defined within each partition, - // whereas if partitions are not defined then world is equal to MPI_COMM_WORLD. + // if there are partitions, world is defined within each partition, + // whereas if partitions are not defined then world is equal to + // MPI_COMM_WORLD. + p->cmd("setMPIComm",&world); -// Set up units -// LAMMPS units wrt kj/mol - nm - ps -// Set up units + // Set up units + // LAMMPS units wrt kj/mol - nm - ps + // Set up units - if (force->boltz == 1.0){ -// LAMMPS units lj + if (force->boltz == 1.0) { + // LAMMPS units lj p->cmd("setNaturalUnits"); } else { double energyUnits=1.0; double lengthUnits=1.0; double timeUnits=1.0; - if (force->boltz == 0.0019872067){ -// LAMMPS units real :: kcal/mol; angstrom; fs + if (force->boltz == 0.0019872067) { + // LAMMPS units real :: kcal/mol; angstrom; fs energyUnits=4.184; lengthUnits=0.1; timeUnits=0.001; - } else if (force->boltz == 8.617343e-5){ -// LAMMPS units metal :: eV; angstrom; ps + } else if (force->boltz == 8.617343e-5) { + // LAMMPS units metal :: eV; angstrom; ps energyUnits=96.48530749925792; lengthUnits=0.1; timeUnits=1.0; - } else if (force->boltz == 1.3806504e-23){ -// LAMMPS units si :: Joule, m; s + } else if (force->boltz == 1.3806504e-23) { + // LAMMPS units si :: Joule, m; s energyUnits=0.001; lengthUnits=1.e-9; timeUnits=1.e-12; - } else if (force->boltz == 1.3806504e-16){ -// LAMMPS units cgs :: erg; cms;, s + } else if (force->boltz == 1.3806504e-16) { + // LAMMPS units cgs :: erg; cms;, s energyUnits=6.0221418e13; lengthUnits=1.e-7; timeUnits=1.e-12; - } else if (force->boltz == 3.16681534e-6){ -// LAMMPS units electron :: Hartree, bohr, fs + } else if (force->boltz == 3.16681534e-6) { + // LAMMPS units electron :: Hartree, bohr, fs energyUnits=2625.5257; lengthUnits=0.052917725; timeUnits=0.001; @@ -141,12 +155,13 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : p->cmd("setMDTimeUnits",&timeUnits); } -// Read fix parameters: + // Read fix parameters: int next=0; - for(int i=3;iexistflag == 1){ + for (int i=3;iexistflag == 1) { // Each replica writes an independent log file // with suffix equal to the replica id char str_num[32], logFile[1024]; @@ -160,16 +175,16 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : p->cmd("setLogFile",arg[i]); next=0; } - } - else if(!strcmp(arg[i],"plumedfile"))next=2; - else if(next==2){ + } else if (!strcmp(arg[i],"plumedfile")) { + next=2; + } else if (next==2) { p->cmd("setPlumedDat",arg[i]); next=0; - } - else error->all(FLERR,"syntax error in fix plumed - use 'fix name plumed plumedfile plumed.dat outfile plumed.out' "); + } else error->all(FLERR,"Syntax error - use 'fix plumed " + "plumedfile plumed.dat outfile plumed.out' "); } - if(next==1) error->all(FLERR,"missing argument for outfile option"); - if(next==2) error->all(FLERR,"missing argument for plumedfile option"); + if (next==1) error->all(FLERR,"missing argument for outfile option"); + if (next==2) error->all(FLERR,"missing argument for plumedfile option"); p->cmd("setMDEngine","LAMMPS"); @@ -183,10 +198,12 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : thermo_virial=1; scalar_flag = 1; -// This is the real initialization: + // This is the real initialization: + p->cmd("init"); -// Define compute to calculate potential energy + // Define compute to calculate potential energy + id_pe = new char[7]; id_pe = (char *) "plmd_pe"; char **newarg = new char*[3]; @@ -220,7 +237,7 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : strncmp(modify->fix[i]->style,"npt",3) || strncmp(modify->fix[i]->style,"npt_sphere",10) ) error->all(FLERR,"Fix plumed must be called before fix_nh derived fixes, " - "for instance nph and npt fixes"); + "for instance nph and npt fixes"); } } @@ -248,7 +265,7 @@ void FixPlumed::init() nlevels_respa = ((Respa *) update->integrate)->nlevels; // This avoids nan pressure if compute_pressure is called // in a setup method - for(int i=0;i<6;i++) virial[i] = 0.; + for (int i=0;i<6;i++) virial[i] = 0.; } void FixPlumed::setup(int vflag) @@ -281,22 +298,22 @@ void FixPlumed::min_setup(int vflag) void FixPlumed::post_force(int /* vflag */) { // Check tag is enabled - if( !atom->tag_enable ) error->all(FLERR,"to run PLUMED you must have tag_enable==1"); + if ( !atom->tag_enable ) error->all(FLERR,"to run PLUMED you must have tag_enable==1"); int update_gatindex=0; // Try to find out if the domain decomposition has been updated: - if(nlocal!=atom->nlocal){ - if(charges) delete [] charges; - if(masses) delete [] masses; - if(gatindex) delete [] gatindex; + if (nlocal!=atom->nlocal) { + if (charges) delete [] charges; + if (masses) delete [] masses; + if (gatindex) delete [] gatindex; nlocal=atom->nlocal; gatindex=new int [nlocal]; masses=new double [nlocal]; charges=new double [nlocal]; update_gatindex=1; } else { - for(int i=0;itag[i]-1){ + for (int i=0;itag[i]-1) { update_gatindex=1; break; } @@ -306,19 +323,19 @@ void FixPlumed::post_force(int /* vflag */) // In case it has been updated, rebuild the local mass/charges array // and tell plumed about the change: - if(update_gatindex){ - for(int i=0;itag[i]-1; + if (update_gatindex) { + for (int i=0;itag[i]-1; // Get masses - if(atom->rmass_flag) { - for(int i=0;irmass[i]; + if (atom->rmass_flag) { + for (int i=0;irmass[i]; } else { - for(int i=0;imass[atom->type[i]]; + for (int i=0;imass[atom->type[i]]; } // Get charges - if(atom->q_flag) { - for(int i=0;iq[i]; + if (atom->q_flag) { + for (int i=0;iq[i]; } else { - for(int i=0;icmd("setAtomsNlocal",&nlocal); p->cmd("setAtomsGatindex",gatindex); @@ -327,9 +344,9 @@ void FixPlumed::post_force(int /* vflag */) // set up local virial/box. plumed uses full 3x3 matrices double plmd_virial[3][3]; - for(int i=0;i<3;i++) for(int j=0;j<3;j++) plmd_virial[i][j]=0.0; + for (int i=0;i<3;i++) for (int j=0;j<3;j++) plmd_virial[i][j]=0.0; double box[3][3]; - for(int i=0;i<3;i++) for(int j=0;j<3;j++) box[i][j]=0.0; + for (int i=0;i<3;i++) for (int j=0;j<3;j++) box[i][j]=0.0; box[0][0]=domain->h[0]; box[1][1]=domain->h[1]; box[2][2]=domain->h[2]; @@ -338,7 +355,7 @@ void FixPlumed::post_force(int /* vflag */) box[1][0]=domain->h[5]; // Make initial of virial of this fix zero // The following line is very important, otherwise the compute pressure will include - for(int i=0;i<6;++i) virial[i] = 0.; + for (int i=0;i<6;++i) virial[i] = 0.; // local variable with timestep: int step=update->ntimestep; @@ -349,7 +366,7 @@ void FixPlumed::post_force(int /* vflag */) p->cmd("setBox",&box[0][0]); p->cmd("setForces",&atom->f[0][0]); p->cmd("setMasses",&masses[0]); - if(atom->q) p->cmd("setCharges",&charges[0]); + if (atom->q) p->cmd("setCharges",&charges[0]); p->cmd("getBias",&bias); // Pass virial to plumed // If energy is needed virial_plmd is equal to Lammps' virial @@ -368,9 +385,9 @@ void FixPlumed::post_force(int /* vflag */) // Error if tail corrections are included if (force->pair && force->pair->tail_flag) error->all(FLERR,"Tail corrections to the pair potential included." - " The energy cannot be biased in this case." - " Remove the tail corrections by removing the" - " command: pair_modify tail yes"); + " The energy cannot be biased in this case." + " Remove the tail corrections by removing the" + " command: pair_modify tail yes"); // compute the potential energy double pot_energy = 0.; c_pe->compute_scalar(); @@ -386,7 +403,7 @@ void FixPlumed::post_force(int /* vflag */) virial_lmp = c_press->vector; // Check if pressure is finite if (!std::isfinite(virial_lmp[0]) || !std::isfinite(virial_lmp[1]) || !std::isfinite(virial_lmp[2]) - || !std::isfinite(virial_lmp[3]) || !std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5])) + || !std::isfinite(virial_lmp[3]) || !std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5])) error->all(FLERR,"Non-numeric virial - Plumed cannot work with that"); // Convert pressure to virial per number of MPI processes // From now on all virials are divided by the number of MPI processes @@ -397,7 +414,7 @@ void FixPlumed::post_force(int /* vflag */) } else { inv_volume = 1.0 / (domain->xprd * domain->yprd); } - for(int i=0;i<6;i++) virial_lmp[i] /= (inv_volume * nktv2p * nprocs); + for (int i=0;i<6;i++) virial_lmp[i] /= (inv_volume * nktv2p * nprocs); // Convert virial from lammps to plumed representation plmd_virial[0][0]=-virial_lmp[0]; plmd_virial[1][1]=-virial_lmp[1]; @@ -407,7 +424,7 @@ void FixPlumed::post_force(int /* vflag */) plmd_virial[1][2]=-virial_lmp[5]; } else { virial_lmp = new double[6]; - for(int i=0;i<6;i++) virial_lmp[i] = 0.; + for (int i=0;i<6;i++) virial_lmp[i] = 0.; } // do the real calculation: p->cmd("performCalc"); From 54c52c3bdfea31eacea8baa2fe111d3a059ca381 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 22:52:36 -0400 Subject: [PATCH 53/72] adjust compilation settings to link in plumed library statically and all its dependencies --- lib/plumed/.gitignore | 1 + lib/plumed/Install.py | 5 ++- lib/plumed/Makefile.lammps.static | 5 +++ src/USER-PLUMED/Install.sh | 72 ++++++++++++++++++++----------- 4 files changed, 56 insertions(+), 27 deletions(-) create mode 100644 lib/plumed/Makefile.lammps.static diff --git a/lib/plumed/.gitignore b/lib/plumed/.gitignore index c17bb18bf0..d79d6d4413 100644 --- a/lib/plumed/.gitignore +++ b/lib/plumed/.gitignore @@ -1,3 +1,4 @@ /plumed2* /includelink /liblink +/plumed-* diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 98827a3fda..29b9136ccf 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -156,7 +156,6 @@ if buildflag: if not checkmd5sum(checksums[version],filename): error("Checksum for plumed2 library does not match") - print("Unpacking plumed2 tarball ...") if os.path.exists("%s/plumed2-%s" % (homepath,version)): cmd = 'rm -rf "%s/plumed2-%s"' % (homepath,version) @@ -188,3 +187,7 @@ if linkflag: subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) cmd = 'ln -s "%s/plumed2/lib" liblink' % homepath subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + if os.path.isfile("Makefile.lammps.static"): + print("Creating Makefile.lammps") + cmd = 'cat liblink/plumed/src/lib/Plumed.inc.static Makefile.lammps.static > Makefile.lammps' + diff --git a/lib/plumed/Makefile.lammps.static b/lib/plumed/Makefile.lammps.static new file mode 100644 index 0000000000..860202a6f2 --- /dev/null +++ b/lib/plumed/Makefile.lammps.static @@ -0,0 +1,5 @@ +# Settings that the LAMMPS build will import when this package library is used + +plumed_SYSINC = +plumed_SYSLIB = $(PLUMED_LOAD) +plumed_SYSPATH = diff --git a/src/USER-PLUMED/Install.sh b/src/USER-PLUMED/Install.sh index 20215e4c99..f879d42feb 100755 --- a/src/USER-PLUMED/Install.sh +++ b/src/USER-PLUMED/Install.sh @@ -1,45 +1,65 @@ # Install/unInstall package files in LAMMPS -# edit 2 Makefile.package files to include/exclude ATC info +# mode = 0/1/2 for uninstall/install/update + +mode=$1 + +# enforce using portable C locale +LC_ALL=C +export LC_ALL + +# arg1 = file, arg2 = file it depends on + +action () { + if (test $mode = 0) then + rm -f ../$1 + elif (! cmp -s $1 ../$1) then + if (test -z "$2" || test -e ../$2) then + cp $1 .. + if (test $mode = 2) then + echo " updating src/$1" + fi + fi + elif (test -n "$2") then + if (test ! -e ../$2) then + rm -f ../$1 + fi + fi +} + +# all package files with no dependencies + +for file in *.cpp *.h; do + test -f ${file} && action $file +done + +# edit 2 Makefile.package files to include/exclude package info if (test $1 = 1) then if (test -e ../Makefile.package) then - sed -i -e 's|^PKG_LIB =[ \t]*|& -lplumedWrapper -ldl |' ../Makefile.package - if ( ! test -e ../../lib/plumed/liblink/plumed/src/lib/Plumed.inc.static ) then - sed -i -e 's|^PKG_SYSINC =[ \t]*|& -D__PLUMED_HAS_DLOPEN |' ../Makefile.package - fi + sed -i -e 's/[^ \t]*plumed[^ \t]* //' ../Makefile.package sed -i -e 's|^PKG_INC =[ \t]*|&-I../../lib/plumed/includelink |' ../Makefile.package - sed -i -e 's|^PKG_PATH =[ \t]*|&-L../../lib/plumed/liblink |' ../Makefile.package + sed -i -e 's|^PKG_SYSINC =[ \t]*|&$(plumed_SYSINC) |' ../Makefile.package + sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(plumed_SYSLIB) |' ../Makefile.package + sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(plumed_SYSPATH) |' ../Makefile.package fi if (test -e ../Makefile.package.settings) then - # This is for statically linking plumed2 - if ( test -e ../../lib/plumed/liblink/src/lib/Plumed.inc.static ) then - fname=../../lib/plumed/liblink/src/lib/Plumed.inc.static - sed -i -e '4 i \ -include '$fname' -' ../Makefile.package.settings - # This is for linking plumed2 as a runtime library -- this is the default behavior - else + sed -i -e '/^include.*plumed.*$/d' ../Makefile.package.settings # multiline form needed for BSD sed on Macs - sed -i -e '4 i \ -PLUMED_LOAD=-ldl + sed -i -e '4 i \ +include ..\/..\/lib\/plumed\/Makefile.lammps ' ../Makefile.package.settings - fi fi - cp fix_plumed.cpp .. - cp fix_plumed.h .. - elif (test $1 = 0) then if (test -e ../Makefile.package) then - sed -i -e 's/[^ \t]*-lplumedWrapper -ldl[^ \t]* //' ../Makefile.package - sed -i -e 's/[^ \t]*-D__PLUMED_HAS_DLOPEN[^ \t]* //' ../Makefile.package - sed -i -e 's|[^ \t]*-I../../lib/plumed/includelink[^ \t]* ||' ../Makefile.package - sed -i -e 's|[^ \t]*-L../../lib/plumed/liblink[^ \t]* ||' ../Makefile.package + sed -i -e 's/[^ \t]*plumed[^ \t]* //' ../Makefile.package + fi + + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*plumed.*$/d' ../Makefile.package.settings fi - rm -f ../fix_plumed.cpp - rm -f ../fix_plumed.h fi From 3cb2291a5a70fc982447c04d2d6cc38e61622f93 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 22:52:51 -0400 Subject: [PATCH 54/72] need to include comm.h now --- src/USER-PLUMED/fix_plumed.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index feb12716b8..8ab2decbf8 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -20,6 +20,7 @@ #include #include "atom.h" +#include "comm.h" #include "update.h" #include "force.h" #include "respa.h" From 18216de084461876f02f676008449b55273dba8a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 23:21:09 -0400 Subject: [PATCH 55/72] correctly check for fixes that maintain their own pressure compute --- src/USER-PLUMED/fix_plumed.cpp | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 8ab2decbf8..c30fc3d3dc 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -229,16 +229,29 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : delete [] newarg; int ipress = modify->find_compute(id_press); c_press = modify->compute[ipress]; - - // Check if nh type fixes have been called - // See comment in the setup method + for (int i = 0; i < modify->nfix; i++) { - if ( strncmp(modify->fix[i]->style,"nph",3) || - strncmp(modify->fix[i]->style,"nph_sphere",10) || - strncmp(modify->fix[i]->style,"npt",3) || - strncmp(modify->fix[i]->style,"npt_sphere",10) ) - error->all(FLERR,"Fix plumed must be called before fix_nh derived fixes, " - "for instance nph and npt fixes"); + const char * const check_style = modify->fix[i]->style; + + // There must be only one + + if (strcmp(check_style,"plumed") == 0) + error->all(FLERR,"There must be only one instance of fix plumed"); + + // Avoid conflict with fixes that define internal pressure computes. + // See comment in the setup method + + if ((strncmp(check_style,"nph",3) == 0) || + (strncmp(check_style,"npt",3) == 0) || + (strncmp(check_style,"rigid/nph",9) == 0) || + (strncmp(check_style,"rigid/npt",9) == 0) || + (strncmp(check_style,"msst",4) == 0) || + (strncmp(check_style,"nphug",5) == 0) || + (strncmp(check_style,"ipi",3) == 0) || + (strncmp(check_style,"press/berendsen",15) == 0) || + (strncmp(check_style,"qbmsst",6) == 0)) + error->all(FLERR,"Fix plumed must be defined before any other fixes, " + "that compute pressure internally"); } } From ac11d66d5a6eadba1d4cea4bec0f562899118701 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 23:28:09 -0400 Subject: [PATCH 56/72] provide reference logfiles and move generated files to reference folder --- .../plumed/log.24Oct18.peptide-plumed.g++.1 | 162 ++++++++++++++++++ .../plumed/log.24Oct18.peptide-plumed.g++.4 | 162 ++++++++++++++++++ examples/USER/plumed/{ => reference}/colvar | 0 examples/USER/plumed/{ => reference}/p.log | 0 4 files changed, 324 insertions(+) create mode 100644 examples/USER/plumed/log.24Oct18.peptide-plumed.g++.1 create mode 100644 examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 rename examples/USER/plumed/{ => reference}/colvar (100%) rename examples/USER/plumed/{ => reference}/p.log (100%) diff --git a/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.1 b/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.1 new file mode 100644 index 0000000000..9bf403fd27 --- /dev/null +++ b/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.1 @@ -0,0 +1,162 @@ +LAMMPS (24 Oct 2018) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:87) + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +84 atoms in group peptide +group one id 2 4 5 6 +4 atoms in group one +group two id 80 82 83 84 +4 atoms in group two +group ref id 37 +1 atoms in group ref +group colvar union one two ref +9 atoms in group colvar + +fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 + +fix 2 all plumed plumedfile plumed.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +variable step equal step +variable pe equal pe + +run 101 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 10648 3375 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +SHAKE stats (type/ave/delta) on step 0 + 4 1.111 1.44264e-05 + 6 0.996998 7.26967e-06 + 8 1.08 1.32536e-05 + 10 1.111 1.22749e-05 + 12 1.08 1.11767e-05 + 14 0.96 0 + 18 0.957206 4.37979e-05 + 31 104.519 0.00396029 +Per MPI rank memory allocation (min/avg/max) = 18.7 | 18.7 | 18.7 Mbytes +Step Temp TotEng PotEng KinEng E_pair E_bond f_2 + 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 + 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 + 20 279.08532 -5226.4036 -6349.1917 1122.7881 -6441.0169 20.764378 0.52605302 + 30 282.32141 -5222.3866 -6358.1939 1135.8073 -6448.9785 22.945165 0.65106011 + 40 276.34173 -5218.7623 -6330.5128 1111.7504 -6423.7566 15.655345 0.23795099 + 50 286.12741 -5215.9248 -6367.0439 1151.1192 -6449.2655 17.420975 0.42646205 + 60 273.01449 -5217.7381 -6316.1026 1098.3646 -6406.4709 21.800931 0.92327815 + 70 274.67549 -5221.0246 -6326.0716 1105.047 -6409.7721 19.41235 0.0016975896 + 80 273.74824 -5224.7613 -6326.0778 1101.3165 -6418.5055 19.206793 0.48550348 + 90 284.32594 -5229.195 -6373.0667 1143.8717 -6461.3467 21.124789 0.5468014 +SHAKE stats (type/ave/delta) on step 100 + 4 1.111 2.06868e-06 + 6 0.996999 2.09521e-06 + 8 1.08 1.10835e-06 + 10 1.111 2.46599e-06 + 12 1.08 8.86314e-07 + 14 0.959999 0 + 18 0.9572 9.14098e-06 + 31 104.52 0.000760401 + 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 + 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 +Loop time of 2.12948 on 1 procs for 101 steps with 2004 atoms + +Performance: 8.196 ns/day, 2.928 hours/ns, 47.429 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.757 | 1.757 | 1.757 | 0.0 | 82.51 +Bond | 0.0052233 | 0.0052233 | 0.0052233 | 0.0 | 0.25 +Kspace | 0.14772 | 0.14772 | 0.14772 | 0.0 | 6.94 +Neigh | 0.16455 | 0.16455 | 0.16455 | 0.0 | 7.73 +Comm | 0.0083704 | 0.0083704 | 0.0083704 | 0.0 | 0.39 +Output | 0.00031424 | 0.00031424 | 0.00031424 | 0.0 | 0.01 +Modify | 0.044411 | 0.044411 | 0.044411 | 0.0 | 2.09 +Other | | 0.001851 | | | 0.09 + +Nlocal: 2004 ave 2004 max 2004 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11134 ave 11134 max 11134 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 707961 ave 707961 max 707961 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 707961 +Ave neighs/atom = 353.274 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 8 +Dangerous builds = 0 +Total wall time: 0:00:02 diff --git a/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 b/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 new file mode 100644 index 0000000000..1437524154 --- /dev/null +++ b/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 @@ -0,0 +1,162 @@ +LAMMPS (24 Oct 2018) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:87) + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +group peptide type <= 12 +84 atoms in group peptide +group one id 2 4 5 6 +4 atoms in group one +group two id 80 82 83 84 +4 atoms in group two +group ref id 37 +1 atoms in group ref +group colvar union one two ref +9 atoms in group colvar + +fix 1 all nvt temp 275.0 275.0 100.0 tchain 1 + +fix 2 all plumed plumedfile plumed.dat outfile p.log +fix 2a ref setforce 0.0 0.0 0.0 + +fix 4 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles + +#dump 1 colvar custom 1 dump.colvar.lammpstrj id xu yu zu fx fy fz +#dump_modify 1 sort id + +thermo_style custom step temp etotal pe ke epair ebond f_2 +thermo 10 +variable step equal step +variable pe equal pe + +run 101 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +SHAKE stats (type/ave/delta) on step 0 + 4 1.111 1.44264e-05 + 6 0.996998 7.26967e-06 + 8 1.08 1.32536e-05 + 10 1.111 1.22749e-05 + 12 1.08 1.11767e-05 + 14 0.96 0 + 18 0.957206 4.37979e-05 + 31 104.519 0.00396029 +Per MPI rank memory allocation (min/avg/max) = 16.81 | 16.82 | 16.83 Mbytes +Step Temp TotEng PotEng KinEng E_pair E_bond f_2 + 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 + 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 + 20 279.08532 -5226.4036 -6349.1917 1122.7881 -6441.0169 20.764378 0.52605302 + 30 282.32141 -5222.3866 -6358.1939 1135.8073 -6448.9785 22.945165 0.65106011 + 40 276.34173 -5218.7623 -6330.5128 1111.7504 -6423.7566 15.655345 0.23795099 + 50 286.12741 -5215.9248 -6367.0439 1151.1192 -6449.2655 17.420975 0.42646205 + 60 273.01449 -5217.7381 -6316.1026 1098.3646 -6406.4709 21.800931 0.92327815 + 70 274.67549 -5221.0246 -6326.0716 1105.047 -6409.7721 19.41235 0.0016975896 + 80 273.74824 -5224.7613 -6326.0778 1101.3165 -6418.5055 19.206793 0.48550348 + 90 284.32594 -5229.195 -6373.0667 1143.8717 -6461.3467 21.124789 0.5468014 +SHAKE stats (type/ave/delta) on step 100 + 4 1.111 2.06868e-06 + 6 0.996999 2.09521e-06 + 8 1.08 1.10835e-06 + 10 1.111 2.46599e-06 + 12 1.08 8.86314e-07 + 14 0.959999 0 + 18 0.9572 9.14098e-06 + 31 104.52 0.000760401 + 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 + 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 +Loop time of 1.23137 on 2 procs for 101 steps with 2004 atoms + +Performance: 14.173 ns/day, 1.693 hours/ns, 82.022 timesteps/s +99.5% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.97985 | 0.98197 | 0.98409 | 0.2 | 79.75 +Bond | 0.0033333 | 0.0035326 | 0.003732 | 0.3 | 0.29 +Kspace | 0.096567 | 0.098457 | 0.10035 | 0.6 | 8.00 +Neigh | 0.088877 | 0.088888 | 0.088898 | 0.0 | 7.22 +Comm | 0.018255 | 0.018347 | 0.01844 | 0.1 | 1.49 +Output | 0.00024843 | 0.00031161 | 0.00037479 | 0.0 | 0.03 +Modify | 0.037596 | 0.037645 | 0.037695 | 0.0 | 3.06 +Other | | 0.00222 | | | 0.18 + +Nlocal: 1002 ave 1010 max 994 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8639.5 ave 8651 max 8628 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 353980 ave 355907 max 352054 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 707961 +Ave neighs/atom = 353.274 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 8 +Dangerous builds = 0 +Total wall time: 0:00:01 diff --git a/examples/USER/plumed/colvar b/examples/USER/plumed/reference/colvar similarity index 100% rename from examples/USER/plumed/colvar rename to examples/USER/plumed/reference/colvar diff --git a/examples/USER/plumed/p.log b/examples/USER/plumed/reference/p.log similarity index 100% rename from examples/USER/plumed/p.log rename to examples/USER/plumed/reference/p.log From badfdd74332c826b3611fa08741b4eee35e34601 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 3 Nov 2018 00:21:10 -0400 Subject: [PATCH 57/72] download only the plumed-src package and include further tweaks to be compatible with plumed 2.5b --- .../plumed/log.24Oct18.peptide-plumed.g++.4 | 44 +++++++++---------- lib/plumed/Install.py | 33 +++++++++----- src/USER-PLUMED/fix_plumed.cpp | 20 +-------- 3 files changed, 47 insertions(+), 50 deletions(-) diff --git a/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 b/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 index 1437524154..771a0de1d0 100644 --- a/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 +++ b/examples/USER/plumed/log.24Oct18.peptide-plumed.g++.4 @@ -15,7 +15,7 @@ kspace_style pppm 0.0001 read_data data.peptide orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) - 1 by 1 by 2 MPI processor grid + 1 by 2 by 2 MPI processor grid reading atoms ... 2004 atoms reading velocities ... @@ -85,7 +85,7 @@ PPPM initialization ... estimated absolute RMS force accuracy = 0.0228209 estimated relative force accuracy = 6.87243e-05 using double precision FFTs - 3d grid and FFT values/proc = 6776 1800 + 3d grid and FFT values/proc = 4312 960 Neighbor list info ... update every 1 steps, delay 5 steps, check yes max neighbors/atom: 2000, page size: 100000 @@ -107,7 +107,7 @@ SHAKE stats (type/ave/delta) on step 0 14 0.96 0 18 0.957206 4.37979e-05 31 104.519 0.00396029 -Per MPI rank memory allocation (min/avg/max) = 16.81 | 16.82 | 16.83 Mbytes +Per MPI rank memory allocation (min/avg/max) = 15.65 | 15.86 | 16.05 Mbytes Step Temp TotEng PotEng KinEng E_pair E_bond f_2 0 282.10052 -5237.458 -6372.3766 1134.9186 -6442.768 16.557152 0 10 276.9783 -5234.3057 -6348.6171 1114.3114 -6421.6171 17.024361 0.47785504 @@ -118,7 +118,7 @@ Step Temp TotEng PotEng KinEng E_pair E_bond f_2 60 273.01449 -5217.7381 -6316.1026 1098.3646 -6406.4709 21.800931 0.92327815 70 274.67549 -5221.0246 -6326.0716 1105.047 -6409.7721 19.41235 0.0016975896 80 273.74824 -5224.7613 -6326.0778 1101.3165 -6418.5055 19.206793 0.48550348 - 90 284.32594 -5229.195 -6373.0667 1143.8717 -6461.3467 21.124789 0.5468014 + 90 284.32594 -5229.195 -6373.0667 1143.8717 -6461.3466 21.124789 0.5468014 SHAKE stats (type/ave/delta) on step 100 4 1.111 2.06868e-06 6 0.996999 2.09521e-06 @@ -128,31 +128,31 @@ SHAKE stats (type/ave/delta) on step 100 14 0.959999 0 18 0.9572 9.14098e-06 31 104.52 0.000760401 - 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.0094784372 + 100 270.40648 -5234.9604 -6322.8327 1087.8723 -6417.73 19.666404 0.009478437 101 270.99811 -5235.8295 -6326.082 1090.2525 -6418.8974 17.285816 0.086681332 -Loop time of 1.23137 on 2 procs for 101 steps with 2004 atoms +Loop time of 1.16767 on 4 procs for 101 steps with 2004 atoms -Performance: 14.173 ns/day, 1.693 hours/ns, 82.022 timesteps/s -99.5% CPU use with 2 MPI tasks x 1 OpenMP threads +Performance: 14.947 ns/day, 1.606 hours/ns, 86.497 timesteps/s +97.8% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.97985 | 0.98197 | 0.98409 | 0.2 | 79.75 -Bond | 0.0033333 | 0.0035326 | 0.003732 | 0.3 | 0.29 -Kspace | 0.096567 | 0.098457 | 0.10035 | 0.6 | 8.00 -Neigh | 0.088877 | 0.088888 | 0.088898 | 0.0 | 7.22 -Comm | 0.018255 | 0.018347 | 0.01844 | 0.1 | 1.49 -Output | 0.00024843 | 0.00031161 | 0.00037479 | 0.0 | 0.03 -Modify | 0.037596 | 0.037645 | 0.037695 | 0.0 | 3.06 -Other | | 0.00222 | | | 0.18 +Pair | 0.84633 | 0.86651 | 0.88617 | 1.6 | 74.21 +Bond | 0.0010614 | 0.0027132 | 0.004288 | 3.0 | 0.23 +Kspace | 0.095008 | 0.1162 | 0.13491 | 4.3 | 9.95 +Neigh | 0.07834 | 0.078424 | 0.078516 | 0.0 | 6.72 +Comm | 0.03314 | 0.033299 | 0.033426 | 0.1 | 2.85 +Output | 0.00036979 | 0.00076199 | 0.0019338 | 0.0 | 0.07 +Modify | 0.063471 | 0.064011 | 0.065312 | 0.3 | 5.48 +Other | | 0.005751 | | | 0.49 -Nlocal: 1002 ave 1010 max 994 min -Histogram: 1 0 0 0 0 0 0 0 0 1 -Nghost: 8639.5 ave 8651 max 8628 min -Histogram: 1 0 0 0 0 0 0 0 0 1 -Neighs: 353980 ave 355907 max 352054 min -Histogram: 1 0 0 0 0 0 0 0 0 1 +Nlocal: 501 ave 512 max 492 min +Histogram: 1 0 0 1 0 1 0 0 0 1 +Nghost: 6570.25 ave 6604 max 6529 min +Histogram: 1 0 0 1 0 0 0 0 1 1 +Neighs: 176990 ave 181122 max 173551 min +Histogram: 1 1 0 0 0 0 1 0 0 1 Total # of neighbors = 707961 Ave neighs/atom = 353.274 diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index 29b9136ccf..481cfdcc0e 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -35,10 +35,16 @@ version = "2.4.3" # known checksums for different PLUMED versions. used to validate the download. checksums = { \ - '2.4.2' : '0f66f24b4c763ae8b2f39574113e9935', \ - '2.4.3' : 'dc38de0ffd59d13950d8f1ef1ce05574', \ + '2.4.2' : '88188743a6e03ef076e5377d03ebb0e7', \ + '2.4.3' : 'b1be7c48971627febc11c61b70767fc5', \ + '2.5b' : 'e341bdef469be1da058b8a0b97a3db22', \ } +#checksums = { \ +# '2.4.2' : '0f66f24b4c763ae8b2f39574113e9935', \ +# '2.4.3' : 'dc38de0ffd59d13950d8f1ef1ce05574', \ +# } + # print error message or help def error(str=None): if not str: print(help) @@ -146,8 +152,10 @@ if (not buildflag and not pathflag): # download and unpack plumed2 tarball if buildflag: - url = "https://github.com/plumed/plumed2/archive/v%s.tar.gz" % version - filename = "v%s.tar.gz" %version + url = "https://github.com/plumed/plumed2/releases/download/v%s/plumed-src-%s.tgz" % (version,version) + filename = "plumed-src-%s.tar.gz" %version + #url = "https://github.com/plumed/plumed2/archive/v%s.tar.gz" % version + #filename = "v%s.tar.gz" %version print("Downloading plumed ...") geturl(url,filename) @@ -156,22 +164,26 @@ if buildflag: if not checkmd5sum(checksums[version],filename): error("Checksum for plumed2 library does not match") - print("Unpacking plumed2 tarball ...") - if os.path.exists("%s/plumed2-%s" % (homepath,version)): - cmd = 'rm -rf "%s/plumed2-%s"' % (homepath,version) + print("Unpacking plumed2 source tarball ...") + if os.path.exists("%s/plumed-%s" % (homepath,version)): + cmd = 'rm -rf "%s/plumed-%s"' % (homepath,version) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) + #if os.path.exists("%s/plumed2-%s" % (homepath,version)): + # cmd = 'rm -rf "%s/plumed2-%s"' % (homepath,version) + # subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) if os.path.exists("%s/plumed2" % (homepath)): cmd = 'rm -rf "%s/plumed2"' % (homepath) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) - cmd = 'cd "%s"; tar -xzvf v%s.tar.gz' % (homepath,version) + cmd = 'cd "%s"; tar -xzvf %s' % (homepath,filename) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) - os.remove("%s/v%s.tar.gz" % (homepath,version)) + os.remove("%s/%s" % (homepath,filename)) # build plumed if buildflag: print("Building plumed ...") - cmd = 'cd %s/plumed2-%s; ./configure --prefix=%s/plumed2 ; make ; make install' % (homepath,version,homepath) + cmd = 'cd %s/plumed-%s; ./configure --prefix=%s/plumed2 --enable-static-patch ; make ; make install' % (homepath,version,homepath) + #cmd = 'cd %s/plumed2-%s; ./configure --prefix=%s/plumed2 --enable-static-patch ; make ; make install' % (homepath,version,homepath) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) print(txt.decode('UTF-8')) # @@ -190,4 +202,5 @@ if linkflag: if os.path.isfile("Makefile.lammps.static"): print("Creating Makefile.lammps") cmd = 'cat liblink/plumed/src/lib/Plumed.inc.static Makefile.lammps.static > Makefile.lammps' + subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index c30fc3d3dc..831b7bef6e 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -34,25 +34,9 @@ #include "pair.h" /* - Do not link plumed directly but rather do it at runtime + Use statically linked C++ interface to plumed */ -#define __PLUMED_WRAPPER_LINK_RUNTIME 1 - -/* - Make sure the inline C++ interface is not included here. - Should not be necessary, but it doesn't hurt. -*/ -#define __PLUMED_WRAPPER_CXX 0 - -/* - Tell Plumed.h to emit the whole implementation -*/ -#define __PLUMED_WRAPPER_IMPLEMENTATION 1 - -/* - Emit fortran wrappers -*/ -#define __PLUMED_WRAPPER_FORTRAN 1 +#define __PLUMED_WRAPPER_CXX 1 #include "plumed/wrapper/Plumed.h" From f7aa01d74a0cd7f25b7b24cc04c6531539679353 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Sat, 3 Nov 2018 11:57:46 -0600 Subject: [PATCH 58/72] bond/react: convert group-ID to group-ID-prefix enables consistent syntax when using custom groups --- doc/src/fix_bond_react.txt | 34 ++++++++++++++-------------- src/USER-MISC/fix_bond_react.cpp | 38 ++++++++++++++++---------------- src/USER-MISC/fix_bond_react.h | 6 ++--- 3 files changed, 40 insertions(+), 38 deletions(-) diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index b5ac87327d..fc08a9b14e 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -24,11 +24,11 @@ common_keyword = {stabilization} :l {stabilization} values = {no} or {yes} {group-ID} {xmax} {no} = no reaction site stabilization {yes} = perform reaction site stabilization - {group-ID} = user-assigned ID for all non-reacting atoms (group created internally) + {group-ID} = user-assigned prefix for the dynamic group of non-reacting atoms {xmax} = xmax value that is used by an internally created "nve/limit"_fix_nve_limit.html integrator :pre react = mandatory argument indicating new reaction specification :l react-ID = user-assigned name for the reaction :l - react-group-ID = only atoms in this group are available for the reaction :l + react-group-ID = only atoms in this group are considered for the reaction :l Nevery = attempt reaction every this many steps :l Rmin = bonding pair atoms must be separated by more than Rmin to initiate reaction (distance units) :l Rmax = bonding pair atoms must be separated by less than Rmax to initiate reaction (distance units) :l @@ -51,7 +51,7 @@ react = mandatory argument indicating new reaction specification :l molecule mol1 pre_reacted_topology.txt molecule mol2 post_reacted_topology.txt -fix 5 all bond/react stabilization no react myrxn1 all 1 0 3.25 mol1 mol2 map_file.txt :pre +fix 5 all bond/react react myrxn1 all 1 0 3.25 mol1 mol2 map_file.txt :pre molecule mol1 pre_reacted_rxn1.txt molecule mol2 post_reacted_rxn1.txt @@ -60,7 +60,7 @@ molecule mol4 post_reacted_rxn2.txt fix 5 all bond/react stabilization yes nvt_grp .03 & react myrxn1 all 1 0 3.25 mol1 mol2 map_file_rxn1.txt prob 0.50 12345 & react myrxn2 all 1 0 2.75 mol3 mol4 map_file_rxn2.txt prob 0.25 12345 -fix 6 nvt_grp nvt temp 300 300 100 # set thermostat after bond/react :pre +fix 6 nvt_grp_REACT nvt temp 300 300 100 # set thermostat after bond/react :pre [Description:] @@ -104,20 +104,22 @@ during the simulation. The group-ID set using the {stabilization} keyword can be an existing static group or a previously-unused group-ID. It cannot be specified -as 'all'. If the group-ID is previously unused, fix bond/react command -creates a "dynamic group"_group.html of this name that is initialized -to include all atoms. If the group-ID is that of an existing static -group, the group is converted into a dynamic group, whose atoms are -limited to those belonging to the original static group. In either -case, this dynamic group-ID should then be used by a subsequent -system-wide time integrator such as nvt, npt, or nve, as shown in the -second example above. The time integration command should be placed -after the fix bond/react command due to the internal dynamic grouping -performed by fix bond/react. By specifying an existing group, you may -thermostat non-reacting parts of your system separately. +as 'all'. If the group-ID is previously unused, the fix bond/react +command creates a "dynamic group"_group.html that is initialized to +include all atoms. If the group-ID is that of an existing static +group, the group is used as the parent group of new, +internally-created dynamic group. In both cases, this new dynamic +group is named by appending '_REACT' to the group-ID, e.g. +nvt_grp_REACT. By specifying an existing group, you may thermostat +constant-topology parts of your system separately. The dynamic group +contains only non-reacting atoms at a given timestep, and therefore +should be used by a subsequent system-wide time integrator such as +nvt, npt, or nve, as shown in the second example above. The time +integration command should be placed after the fix bond/react command +due to the internal dynamic grouping performed by fix bond/react. NOTE: If the group-ID is an existing static group, react-group-IDs -should also be specified as this group, or a subset. +should also be specified as this static group, or a subset. NOTE: If the group-ID is previously unused, the internally created group applies to all atoms in the system, i.e. you should generally diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index abb2f9f7d8..61616f667d 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -78,6 +78,7 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : fix1 = NULL; fix2 = NULL; + fix3 = NULL; if (narg < 8) error->all(FLERR,"Illegal fix bond/react command: " "too few arguments"); @@ -433,10 +434,8 @@ FixBondReact::~FixBondReact() if (id_fix1 == NULL && modify->nfix) modify->delete_fix(id_fix1); delete [] id_fix1; - if (custom_exclude_flag == 0) { - if (id_fix3 == NULL && modify->nfix) modify->delete_fix(id_fix3); - delete [] id_fix3; - } + if (id_fix3 == NULL && modify->nfix) modify->delete_fix(id_fix3); + delete [] id_fix3; } if (id_fix2 == NULL && modify->nfix) modify->delete_fix(id_fix2); @@ -512,14 +511,14 @@ void FixBondReact::post_constructor() ifix = modify->find_fix(id_fix3); if (ifix == -1) { char **newarg = new char*[6]; - newarg[0] = (char *) "bond_react_stabilization_internal"; + newarg[0] = (char *) id_fix3; newarg[1] = (char *) "all"; // group ID is ignored newarg[2] = (char *) "property/atom"; newarg[3] = (char *) "i_statted_tags"; newarg[4] = (char *) "ghost"; newarg[5] = (char *) "yes"; modify->add_fix(6,newarg); - fix2 = modify->fix[modify->nfix-1]; + fix3 = modify->fix[modify->nfix-1]; delete [] newarg; } @@ -527,17 +526,17 @@ void FixBondReact::post_constructor() statted_id = new char[len]; strcpy(statted_id,"statted_tags"); - // if static group exists, duplicate it, use duplicate as parent group - // original will be converted into dynamic per-atom property group - if (igroup != -1) { - char **newarg; - newarg = new char*[3]; - newarg[0] = (char *) "exclude_PARENT_group"; - newarg[1] = (char *) "union"; - newarg[2] = exclude_group; - group->assign(3,newarg); - delete [] newarg; - } + // if static group exists, use as parent group + // also, rename dynamic exclude_group by appending '_REACT' + char *exclude_PARENT_group; + int n = strlen(exclude_group) + 1; + exclude_PARENT_group = new char[n]; + strcpy(exclude_PARENT_group,exclude_group); + n += strlen("_REACT"); + delete [] exclude_group; + exclude_group = new char[n]; + strcpy(exclude_group,exclude_PARENT_group); + strcat(exclude_group,"_REACT"); group->find_or_create(exclude_group); char **newarg; @@ -545,16 +544,17 @@ void FixBondReact::post_constructor() newarg[0] = exclude_group; newarg[1] = (char *) "dynamic"; if (igroup == -1) newarg[2] = (char *) "all"; - else newarg[2] = (char *) "exclude_PARENT_group"; + else newarg[2] = (char *) exclude_PARENT_group; newarg[3] = (char *) "property"; newarg[4] = (char *) "statted_tags"; group->assign(5,newarg); delete [] newarg; + delete [] exclude_PARENT_group; // on to statted_tags (system-wide thermostat) // intialize per-atom statted_flags to 1 // (only if not already initialized by restart) - if (fix2->restart_reset != 1) { + if (fix3->restart_reset != 1) { int flag; int index = atom->find_custom("statted_tags",flag); int *i_statted_tags = atom->ivector[index]; diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h index 472a02be1a..ca1f3bd20c 100644 --- a/src/USER-MISC/fix_bond_react.h +++ b/src/USER-MISC/fix_bond_react.h @@ -78,9 +78,9 @@ class FixBondReact : public Fix { class Molecule *onemol; // pre-reacted molecule template class Molecule *twomol; // post-reacted molecule template Fix *fix1; // nve/limit used to relax reaction sites - Fix *fix2; // properties/atom used to indicate 1) indicate relaxing atoms - // 2) system-wide thermostat - // 3) to which 'react' atom belongs + Fix *fix2; // properties/atom used to indicate 1) relaxing atoms + // 2) to which 'react' atom belongs + Fix *fix3; // property/atom used for system-wide thermostat class RanMars **random; class NeighList *list; From a37d718ed108d4f89afdee63340ec07ff3e52559 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Sat, 3 Nov 2018 12:01:00 -0600 Subject: [PATCH 59/72] update bond/react examples --- .../USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt | 2 +- examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt b/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt index f2dc506dde..3982da799d 100644 --- a/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt +++ b/examples/USER/misc/bond_react/nylon,6-6_melt/in.large_nylon_melt @@ -36,7 +36,7 @@ fix myrxns all bond/react stabilization yes statted_grp .03 & react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map # stable at 800K -fix 1 statted_grp nvt temp 800 800 100 +fix 1 statted_grp_REACT nvt temp 800 800 100 # in order to customize behavior of reacting atoms, # you can use the internally created 'bond_react_MASTER_group', like so: diff --git a/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon b/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon index 1f7e9c42b7..73cb2eb270 100644 --- a/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon +++ b/examples/USER/misc/bond_react/tiny_nylon/in.tiny_nylon @@ -36,7 +36,7 @@ fix myrxns all bond/react stabilization yes statted_grp .03 & react rxn1 all 1 0.0 2.9 mol1 mol2 rxn1_stp1_map & react rxn2 all 1 0.0 5.0 mol3 mol4 rxn1_stp2_map -fix 1 statted_grp nvt temp 300 300 100 +fix 1 statted_grp_REACT nvt temp 300 300 100 fix 4 bond_react_MASTER_group temp/rescale 1 300 300 10 1 From cb8c51e353ed21b66dba71f906d57b6d72ac3c69 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sat, 3 Nov 2018 18:13:28 +0000 Subject: [PATCH 60/72] Got rid of some of the hard-coded units in the plumed interface --- src/USER-PLUMED/fix_plumed.cpp | 46 +++++++++++++--------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 831b7bef6e..7fa1d4c9a7 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -102,39 +102,27 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : // LAMMPS units wrt kj/mol - nm - ps // Set up units - if (force->boltz == 1.0) { + if(strcmp(update->unit_style,"lj") == 0) { // LAMMPS units lj p->cmd("setNaturalUnits"); } else { + // Conversion factor from LAMMPS energy units to kJ mol-1 (units of PLUMED) double energyUnits=1.0; - double lengthUnits=1.0; - double timeUnits=1.0; - if (force->boltz == 0.0019872067) { - // LAMMPS units real :: kcal/mol; angstrom; fs - energyUnits=4.184; - lengthUnits=0.1; - timeUnits=0.001; - } else if (force->boltz == 8.617343e-5) { - // LAMMPS units metal :: eV; angstrom; ps - energyUnits=96.48530749925792; - lengthUnits=0.1; - timeUnits=1.0; - } else if (force->boltz == 1.3806504e-23) { - // LAMMPS units si :: Joule, m; s - energyUnits=0.001; - lengthUnits=1.e-9; - timeUnits=1.e-12; - } else if (force->boltz == 1.3806504e-16) { - // LAMMPS units cgs :: erg; cms;, s - energyUnits=6.0221418e13; - lengthUnits=1.e-7; - timeUnits=1.e-12; - } else if (force->boltz == 3.16681534e-6) { - // LAMMPS units electron :: Hartree, bohr, fs - energyUnits=2625.5257; - lengthUnits=0.052917725; - timeUnits=0.001; - } else error->all(FLERR,"Odd LAMMPS units, plumed cannot work with that"); + // LAMMPS units real :: kcal/mol; + if (strcmp(update->unit_style,"real") == 0) energyUnits=4.184; + // LAMMPS units metal :: eV; + else if (strcmp(update->unit_style,"metal") == 0) energyUnits=96.48530749925792; + // LAMMPS units si :: Joule; + else if (strcmp(update->unit_style,"si") == 0) energyUnits=0.001; + // LAMMPS units cgs :: erg; + else if (strcmp(update->unit_style,"cgs") == 0) energyUnits=6.0221418e13; + // LAMMPS units electron :: Hartree; + else if (strcmp(update->unit_style,"electron") == 0) energyUnits=2625.5257; + else error->all(FLERR,"Odd LAMMPS units, plumed cannot work with that"); + // Conversion factor from LAMMPS length units to nm (units of PLUMED) + double lengthUnits=0.1/force->angstrom; + // Conversion factor from LAMMPS time unit to ps (units of PLUMED) + double timeUnits=0.001/force->femtosecond; p->cmd("setMDEnergyUnits",&energyUnits); p->cmd("setMDLengthUnits",&lengthUnits); p->cmd("setMDTimeUnits",&timeUnits); From 8cb665f013a4e212f0b79eb0e49c1a4f66fb7988 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 4 Nov 2018 10:21:28 +0000 Subject: [PATCH 61/72] Added functionality to throw error when time step changes and PLUMED is being used --- src/USER-PLUMED/fix_plumed.cpp | 5 +++++ src/USER-PLUMED/fix_plumed.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 7fa1d4c9a7..8569a1dd4a 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -446,6 +446,11 @@ void FixPlumed::min_post_force(int vflag) post_force(vflag); } +void FixPlumed::reset_dt() +{ + error->all(FLERR,"cannot reset_dt within a fix plumed action"); +} + double FixPlumed::compute_scalar() { return bias; diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index bc1d5af034..fda14606bf 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -41,6 +41,7 @@ class FixPlumed : public Fix { void post_force_respa(int, int, int); void min_post_force(int); double compute_scalar(); + void reset_dt(); private: From a051d61e1fe382ff7cead7d4619e38713e1f277e Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 4 Nov 2018 11:24:01 +0000 Subject: [PATCH 62/72] Added functionality to support fix modify for fix plumed --- src/USER-PLUMED/fix_plumed.cpp | 38 ++++++++++++++++++++++++++++++++++ src/USER-PLUMED/fix_plumed.h | 1 + 2 files changed, 39 insertions(+) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 8569a1dd4a..57cd2b0fef 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -456,4 +456,42 @@ double FixPlumed::compute_scalar() return bias; } +int FixPlumed::modify_param(int narg, char **arg) +{ + if (strcmp(arg[0],"pe") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + modify->delete_compute(id_pe); delete [] id_pe; + int n = strlen(arg[1]) + 1; + id_pe = new char[n]; + strcpy(id_pe,arg[1]); + + int icompute = modify->find_compute(arg[1]); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify potential energy ID"); + c_pe = modify->compute[icompute]; + + if (c_pe->peflag == 0) + error->all(FLERR,"Fix_modify plmd_pe ID does not compute potential energy"); + if (c_pe->igroup != 0 && comm->me == 0) + error->warning(FLERR,"Potential for fix PLUMED is not for group all"); + + return 2; + + } else if (strcmp(arg[0],"press") == 0) { + if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); + modify->delete_compute(id_press); delete [] id_press; + int n = strlen(arg[1]) + 1; + id_press = new char[n]; + strcpy(id_press,arg[1]); + + int icompute = modify->find_compute(arg[1]); + if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); + c_press = modify->compute[icompute]; + + if (c_press->pressflag == 0) + error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); + + return 2; + } + return 0; +} diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index fda14606bf..cd101c3ac5 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -42,6 +42,7 @@ class FixPlumed : public Fix { void min_post_force(int); double compute_scalar(); void reset_dt(); + int modify_param(int narg, char **arg); private: From a3c0fe77267fcdf7c10bbc4b424337148e58790b Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 4 Nov 2018 11:43:07 +0000 Subject: [PATCH 63/72] Added check on fix modify for PLUMED to ensures that virial is calculated for group all --- src/USER-PLUMED/fix_plumed.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 57cd2b0fef..087ec3d900 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -489,6 +489,8 @@ int FixPlumed::modify_param(int narg, char **arg) if (c_press->pressflag == 0) error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); + if (c_press->igroup != 0 && comm->me == 0) + error->warning(FLERR,"Virial for fix PLUMED is not for group all"); return 2; } From a3ca177d20c964caba3e1e45959cedf5203a1162 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 4 Nov 2018 19:52:10 -0500 Subject: [PATCH 64/72] various small changes and reformatting - add memory usage estimator - test against varying number of atoms - test against non-consecutive atom tags - test for 32-bit overflow in number of atoms - test for 32-bit overflow in timestep - reduce tail correction error to warning - more LAMMPS style formatting of the source code - remove trailing whitespace - avoid leaking memory from allocated arrays for masses/charges/tags --- src/USER-PLUMED/fix_plumed.cpp | 156 +++++++++++++++++++++++---------- src/USER-PLUMED/fix_plumed.h | 2 + 2 files changed, 110 insertions(+), 48 deletions(-) diff --git a/src/USER-PLUMED/fix_plumed.cpp b/src/USER-PLUMED/fix_plumed.cpp index 087ec3d900..bb8309cf93 100644 --- a/src/USER-PLUMED/fix_plumed.cpp +++ b/src/USER-PLUMED/fix_plumed.cpp @@ -12,7 +12,8 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Gareth Tribello (Queens U, Belfast) + Contributing authors: Gareth Tribello (Queens U, Belfast) + Pablo Piaggi (EPFL) ------------------------------------------------------------------------- */ #include @@ -56,11 +57,13 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : if (!atom->tag_enable) error->all(FLERR,"Fix plumed requires atom tags"); + if (atom->tag_consecutive() == 0) + error->all(FLERR,"Fix plumed requires consecutive atom IDs"); + if (igroup != 0 && comm->me == 0) error->warning(FLERR,"Fix group for fix plumed is not 'all'. " "Group will be ignored."); - p=new PLMD::Plumed; // Check API version @@ -106,29 +109,53 @@ FixPlumed::FixPlumed(LAMMPS *lmp, int narg, char **arg) : // LAMMPS units lj p->cmd("setNaturalUnits"); } else { - // Conversion factor from LAMMPS energy units to kJ mol-1 (units of PLUMED) + + // Conversion factor from LAMMPS energy units to kJ/mol (units of PLUMED) + double energyUnits=1.0; - // LAMMPS units real :: kcal/mol; - if (strcmp(update->unit_style,"real") == 0) energyUnits=4.184; - // LAMMPS units metal :: eV; - else if (strcmp(update->unit_style,"metal") == 0) energyUnits=96.48530749925792; - // LAMMPS units si :: Joule; - else if (strcmp(update->unit_style,"si") == 0) energyUnits=0.001; - // LAMMPS units cgs :: erg; - else if (strcmp(update->unit_style,"cgs") == 0) energyUnits=6.0221418e13; - // LAMMPS units electron :: Hartree; - else if (strcmp(update->unit_style,"electron") == 0) energyUnits=2625.5257; - else error->all(FLERR,"Odd LAMMPS units, plumed cannot work with that"); + + // LAMMPS units real :: kcal/mol; + + if (strcmp(update->unit_style,"real") == 0) { + energyUnits=4.184; + + // LAMMPS units metal :: eV; + + } else if (strcmp(update->unit_style,"metal") == 0) { + energyUnits=96.48530749925792; + + // LAMMPS units si :: Joule; + + } else if (strcmp(update->unit_style,"si") == 0) { + energyUnits=0.001; + + // LAMMPS units cgs :: erg; + + } else if (strcmp(update->unit_style,"cgs") == 0) { + energyUnits=6.0221418e13; + + // LAMMPS units electron :: Hartree; + + } else if (strcmp(update->unit_style,"electron") == 0) { + energyUnits=2625.5257; + + } else error->all(FLERR,"Fix plumed cannot handle your choice of units"); + // Conversion factor from LAMMPS length units to nm (units of PLUMED) + double lengthUnits=0.1/force->angstrom; + // Conversion factor from LAMMPS time unit to ps (units of PLUMED) + double timeUnits=0.001/force->femtosecond; + p->cmd("setMDEnergyUnits",&energyUnits); p->cmd("setMDLengthUnits",&lengthUnits); p->cmd("setMDTimeUnits",&timeUnits); } // Read fix parameters: + int next=0; for (int i=3;icmd("setMDEngine","LAMMPS"); - int natoms=int(atom->natoms); + if (atom->natoms > MAXSMALLINT) + error->all(FLERR,"Fix plumed can only handle up to 2.1 billion atoms"); + + natoms=int(atom->natoms); p->cmd("setNatoms",&natoms); double dt=update->dt; @@ -232,6 +262,9 @@ FixPlumed::~FixPlumed() delete p; modify->delete_compute(id_pe); modify->delete_compute(id_press); + delete[] masses; + delete[] charges; + delete[] gatindex; } int FixPlumed::setmask() @@ -249,8 +282,10 @@ void FixPlumed::init() { if (strcmp(update->integrate_style,"respa") == 0) nlevels_respa = ((Respa *) update->integrate)->nlevels; + // This avoids nan pressure if compute_pressure is called // in a setup method + for (int i=0;i<6;i++) virial[i] = 0.; } @@ -258,12 +293,12 @@ void FixPlumed::setup(int vflag) { // Here there is a crucial issue connected to constant pressure // simulations. The fix_nh will call the compute_pressure inside - // the setup method, that is executed once and for all at the - // beginning of the simulation. Since our fix has a contribution + // the setup method, that is executed once and for all at the + // beginning of the simulation. Since our fix has a contribution // to the virial, when this happens the variable virial must have // been calculated. In other words, the setup method of fix_plumed - // has to be executed first. This creates a race condition with the - // setup method of fix_nh. This is why in the constructor I check if + // has to be executed first. This creates a race condition with the + // setup method of fix_nh. This is why in the constructor I check if // nh fixes have already been called. if (strcmp(update->integrate_style,"verlet") == 0) post_force(vflag); @@ -283,21 +318,29 @@ void FixPlumed::min_setup(int vflag) void FixPlumed::post_force(int /* vflag */) { -// Check tag is enabled - if ( !atom->tag_enable ) error->all(FLERR,"to run PLUMED you must have tag_enable==1"); int update_gatindex=0; -// Try to find out if the domain decomposition has been updated: - if (nlocal!=atom->nlocal) { + + if (natoms != int(atom->natoms)) + error->all(FLERR,"Fix plumed does not support simulations with varying " + "numbers of atoms"); + + // Try to find out if the domain decomposition has been updated: + + if (nlocal != atom->nlocal) { + if (charges) delete [] charges; if (masses) delete [] masses; if (gatindex) delete [] gatindex; + nlocal=atom->nlocal; gatindex=new int [nlocal]; masses=new double [nlocal]; charges=new double [nlocal]; update_gatindex=1; + } else { + for (int i=0;itag[i]-1) { update_gatindex=1; @@ -307,11 +350,12 @@ void FixPlumed::post_force(int /* vflag */) } MPI_Allreduce(MPI_IN_PLACE,&update_gatindex,1,MPI_INT,MPI_SUM,world); -// In case it has been updated, rebuild the local mass/charges array -// and tell plumed about the change: + // In case it has been updated, rebuild the local mass/charges array + // and tell plumed about the change: + if (update_gatindex) { for (int i=0;itag[i]-1; - // Get masses + // Get masses if (atom->rmass_flag) { for (int i=0;irmass[i]; } else { @@ -328,7 +372,7 @@ void FixPlumed::post_force(int /* vflag */) } -// set up local virial/box. plumed uses full 3x3 matrices + // set up local virial/box. plumed uses full 3x3 matrices double plmd_virial[3][3]; for (int i=0;i<3;i++) for (int j=0;j<3;j++) plmd_virial[i][j]=0.0; double box[3][3]; @@ -339,21 +383,26 @@ void FixPlumed::post_force(int /* vflag */) box[2][1]=domain->h[3]; box[2][0]=domain->h[4]; box[1][0]=domain->h[5]; + // Make initial of virial of this fix zero - // The following line is very important, otherwise the compute pressure will include + // The following line is very important, otherwise + // the compute pressure will include for (int i=0;i<6;++i) virial[i] = 0.; -// local variable with timestep: - int step=update->ntimestep; + // local variable with timestep: + if (update->ntimestep > MAXSMALLINT) + error->all(FLERR,"Fix plumed can only handle up to 2.1 billion timesteps"); + int step=int(update->ntimestep); -// pass all pointers to plumed: + // pass all pointers to plumed: p->cmd("setStep",&step); p->cmd("setPositions",&atom->x[0][0]); p->cmd("setBox",&box[0][0]); p->cmd("setForces",&atom->f[0][0]); p->cmd("setMasses",&masses[0]); - if (atom->q) p->cmd("setCharges",&charges[0]); + p->cmd("setCharges",&charges[0]); p->cmd("getBias",&bias); + // Pass virial to plumed // If energy is needed virial_plmd is equal to Lammps' virial // If energy is not needed virial_plmd is initialized to zero @@ -369,30 +418,37 @@ void FixPlumed::post_force(int /* vflag */) double *virial_lmp; if (plumedNeedsEnergy) { // Error if tail corrections are included - if (force->pair && force->pair->tail_flag) - error->all(FLERR,"Tail corrections to the pair potential included." - " The energy cannot be biased in this case." - " Remove the tail corrections by removing the" - " command: pair_modify tail yes"); + if (force->pair && force->pair->tail_flag && comm->me == 0) + error->warning(FLERR,"Tail corrections to the pair potential included." + " The energy cannot be biased correctly in this case." + " Remove the tail corrections by removing the" + " command: pair_modify tail yes"); + // compute the potential energy double pot_energy = 0.; c_pe->compute_scalar(); pot_energy = c_pe->scalar; + // Divide energy by number of processes // Plumed wants it this way int nprocs; MPI_Comm_size(world,&nprocs); pot_energy /= nprocs; p->cmd("setEnergy",&pot_energy); + // Compute pressure due to the virial (no kinetic energy term!) c_press->compute_vector(); virial_lmp = c_press->vector; - // Check if pressure is finite - if (!std::isfinite(virial_lmp[0]) || !std::isfinite(virial_lmp[1]) || !std::isfinite(virial_lmp[2]) - || !std::isfinite(virial_lmp[3]) || !std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5])) + + // Check if pressure is finite + if (!std::isfinite(virial_lmp[0]) || !std::isfinite(virial_lmp[1]) + || !std::isfinite(virial_lmp[2]) || !std::isfinite(virial_lmp[3]) + || !std::isfinite(virial_lmp[4]) || !std::isfinite(virial_lmp[5])) error->all(FLERR,"Non-numeric virial - Plumed cannot work with that"); + // Convert pressure to virial per number of MPI processes // From now on all virials are divided by the number of MPI processes + double nktv2p = force->nktv2p; double inv_volume; if (domain->dimension == 3) { @@ -415,12 +471,12 @@ void FixPlumed::post_force(int /* vflag */) // do the real calculation: p->cmd("performCalc"); -// retransform virial to lammps representation and assign it to this fix's virial. -// Plumed is giving back the full virial and therefore we have to subtract the -// initial virial i.e. virial_lmp. -// The vector virial contains only the contribution added by plumed -// The calculation of the pressure will be done by a compute pressure and will -// include this contribution. + // retransform virial to lammps representation and assign it to this + // fix's virial. Plumed is giving back the full virial and therefore + // we have to subtract the initial virial i.e. virial_lmp. + // The vector virial contains only the contribution added by plumed. + // The calculation of the pressure will be done by a compute pressure + // and will include this contribution. virial[0] = -plmd_virial[0][0]-virial_lmp[0]; virial[1] = -plmd_virial[1][1]-virial_lmp[1]; virial[2] = -plmd_virial[2][2]-virial_lmp[2]; @@ -430,7 +486,7 @@ void FixPlumed::post_force(int /* vflag */) // Ask for the computes in the next time step // such that the virial and energy are tallied. - // This should be changed to something that triggers the + // This should be changed to something that triggers the // calculation only if plumed needs it. c_pe->addstep(update->ntimestep+1); c_press->addstep(update->ntimestep+1); @@ -448,7 +504,7 @@ void FixPlumed::min_post_force(int vflag) void FixPlumed::reset_dt() { - error->all(FLERR,"cannot reset_dt within a fix plumed action"); + error->all(FLERR,"Cannot change the time step when fix plumed is active"); } double FixPlumed::compute_scalar() @@ -497,3 +553,7 @@ int FixPlumed::modify_param(int narg, char **arg) return 0; } +double FixPlumed::memory_usage() +{ + return double((8+8+4)*atom->nlocal); +} diff --git a/src/USER-PLUMED/fix_plumed.h b/src/USER-PLUMED/fix_plumed.h index cd101c3ac5..e20633fadc 100644 --- a/src/USER-PLUMED/fix_plumed.h +++ b/src/USER-PLUMED/fix_plumed.h @@ -43,11 +43,13 @@ class FixPlumed : public Fix { double compute_scalar(); void reset_dt(); int modify_param(int narg, char **arg); + double memory_usage(); private: PLMD::Plumed *p; // pointer to plumed object int nlocal; // number of atoms local to this process + int natoms; // total number of atoms int *gatindex; // array of atom indexes local to this process double *masses; // array of masses for local atoms double *charges; // array of charges for local atoms From 6d1ea2d0b1ff2086b700cc3d6554584fac59b85d Mon Sep 17 00:00:00 2001 From: jrgissing Date: Mon, 5 Nov 2018 00:46:53 -0700 Subject: [PATCH 65/72] broke smooth restarts at some point. fixed --- src/USER-MISC/fix_bond_react.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index 61616f667d..a7b85e92d3 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -486,18 +486,16 @@ void FixBondReact::post_constructor() // create master_group if not already existing // NOTE: limit_tags and react_tags automaticaly intitialized to zero (unless read from restart) - if (group->find(master_group) == -1) { - group->find_or_create(master_group); - char **newarg; - newarg = new char*[5]; - newarg[0] = master_group; - newarg[1] = (char *) "dynamic"; - newarg[2] = (char *) "all"; - newarg[3] = (char *) "property"; - newarg[4] = (char *) "limit_tags"; - group->assign(5,newarg); - delete [] newarg; - } + group->find_or_create(master_group); + char **newarg; + newarg = new char*[5]; + newarg[0] = master_group; + newarg[1] = (char *) "dynamic"; + newarg[2] = (char *) "all"; + newarg[3] = (char *) "property"; + newarg[4] = (char *) "limit_tags"; + group->assign(5,newarg); + delete [] newarg; if (stabilization_flag == 1) { int igroup = group->find(exclude_group); From ab7aa9dfdabfb6b3e4adf68a9f9e8aef931c6380 Mon Sep 17 00:00:00 2001 From: jrgissing Date: Mon, 5 Nov 2018 00:49:33 -0700 Subject: [PATCH 66/72] correction to fix group property doc --- doc/src/group.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/src/group.txt b/doc/src/group.txt index 8472677372..256c4ed7f5 100644 --- a/doc/src/group.txt +++ b/doc/src/group.txt @@ -225,8 +225,7 @@ atomfile-style variable. The variable is evaluated and atoms whose per-atom values are 0.0, are removed from the dynamic group. If the {property} keyword is used, the per-atom property name must be a previously defined per-atom property. The per-atom property is evaluated and atoms whose -values are 0.0 are removed from the dynamic group, otherwise they -are added to the group. +values are 0.0 are removed from the dynamic group. The assignment of atoms to a dynamic group is done at the beginning of each run and on every timestep that is a multiple of {N}, which is the From 58d2f0cc575d2e2cefc722eba7f8b9da39304cb5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 5 Nov 2018 05:55:31 -0700 Subject: [PATCH 67/72] cmake: fix linking again plumed --- cmake/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 89eb9df257..2e2e316ee5 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -532,19 +532,19 @@ if(PKG_USER-PLUMED) if(DOWNLOAD_PLUMED) include(ExternalProject) ExternalProject_Add(plumed_build - URL https://github.com/plumed/plumed2/releases/download/v2.4.3/plumed-2.4.3.tgz - URL_MD5 bed9c88c8c635b269c1cd4a0598a2934 + URL https://github.com/plumed/plumed2/releases/download/v2.4.3/plumed-src-2.4.3.tgz + URL_MD5 b1be7c48971627febc11c61b70767fc5 BUILD_IN_SOURCE 1 CONFIGURE_COMMAND /configure --prefix= $<$:--with-pic> ) ExternalProject_get_property(plumed_build INSTALL_DIR) set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) list(APPEND LAMMPS_DEPS plumed_build) - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so) + list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a ${CMAKE_DL_LIBS}) set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include") else() find_package(PkgConfig REQUIRED) - pkg_check_modules(PLUMED plumed REQUIRED) + pkg_check_modules(PLUMED plumedWrapper REQUIRED) list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LDFLAGS}) endif() include_directories(${PLUMED_INCLUDE_DIRS}) From ce7f76de1d216156bf390c4a19a431b2129c9309 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 5 Nov 2018 07:39:23 -0700 Subject: [PATCH 68/72] cmake: switch plumed to full static mode --- cmake/CMakeLists.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 2e2e316ee5..9559cb8a41 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -528,6 +528,7 @@ if(PKG_USER-SCAFACOS) endif() if(PKG_USER-PLUMED) + find_package(GSL REQUIRED) option(DOWNLOAD_PLUMED "Download Plumed (instead of using the system's one)" OFF) if(DOWNLOAD_PLUMED) include(ExternalProject) @@ -540,12 +541,14 @@ if(PKG_USER-PLUMED) ExternalProject_get_property(plumed_build INSTALL_DIR) set(PLUMED_INSTALL_DIR ${INSTALL_DIR}) list(APPEND LAMMPS_DEPS plumed_build) - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a ${CMAKE_DL_LIBS}) + list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/plumed/obj/kernel.o + ${PLUMED_INSTALL_DIR}/lib/plumed/obj/PlumedStatic.o ${GSL_LIBRARIES} ${CMAKE_DL_LIBS}) set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include") else() find_package(PkgConfig REQUIRED) - pkg_check_modules(PLUMED plumedWrapper REQUIRED) - list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LDFLAGS}) + pkg_check_modules(PLUMED plumed REQUIRED) + include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static) + list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LOAD}) endif() include_directories(${PLUMED_INCLUDE_DIRS}) endif() From 7ed6cab04051fc1f0caa62b18068b9df053314cf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 5 Nov 2018 20:35:43 -0500 Subject: [PATCH 69/72] do not generate illegal dihedrals, e.g. from 3-membered rings --- tools/msi2lmp/src/MakeLists.c | 4 ++-- tools/msi2lmp/src/msi2lmp.c | 2 ++ tools/msi2lmp/src/msi2lmp.h | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/msi2lmp/src/MakeLists.c b/tools/msi2lmp/src/MakeLists.c index 19924386de..44b9bdd0af 100644 --- a/tools/msi2lmp/src/MakeLists.c +++ b/tools/msi2lmp/src/MakeLists.c @@ -363,7 +363,7 @@ int count_dihedrals() if (i != k) { for (ll=0; ll < atoms[k].no_connect; ll++) { l = atoms[k].conn_no[ll]; - if (l != j) n++; + if ((l != j) && (i != l)) n++ } } } @@ -391,7 +391,7 @@ void build_dihedrals_list() if (i != k) { for (ll=0; ll < atoms[k].no_connect; ll++) { l = atoms[k].conn_no[ll]; - if (l != j) { + if ((l != j) && (i != l)) { dihedrals[n ].type = 0; dihedrals[n ].members[0] = i; dihedrals[n ].members[1] = j; diff --git a/tools/msi2lmp/src/msi2lmp.c b/tools/msi2lmp/src/msi2lmp.c index b0bc7815ba..efc929639a 100644 --- a/tools/msi2lmp/src/msi2lmp.c +++ b/tools/msi2lmp/src/msi2lmp.c @@ -2,6 +2,8 @@ * * msi2lmp.exe * +* v3.9.9 AK- Teach msi2lmp to not generate dihedrals with identical 1-4 atoms +* * v3.9.8 AK- Improved whitespace handling in parsing topology and force * field files to avoid bogus warnings about type name truncation * diff --git a/tools/msi2lmp/src/msi2lmp.h b/tools/msi2lmp/src/msi2lmp.h index 4716f719d6..c9b1984444 100644 --- a/tools/msi2lmp/src/msi2lmp.h +++ b/tools/msi2lmp/src/msi2lmp.h @@ -36,7 +36,7 @@ # include -#define MSI2LMP_VERSION "v3.9.8 / 06 Oct 2016" +#define MSI2LMP_VERSION "v3.9.9 / 05 Nov 2018" #define PI_180 0.01745329251994329576 From cb828e957989c2d8af5ebc38c37c929aa5440e9c Mon Sep 17 00:00:00 2001 From: araven Date: Tue, 6 Nov 2018 07:48:47 +0100 Subject: [PATCH 70/72] update reference --- src/SPIN/fix_nve_spin.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp index 898eb95396..7d96aca6d4 100644 --- a/src/SPIN/fix_nve_spin.cpp +++ b/src/SPIN/fix_nve_spin.cpp @@ -60,8 +60,11 @@ static const char cite_fix_nve_spin[] = "dynamics and molecular dynamics},\n" "author={Tranchida, J and Plimpton, SJ and Thibaudeau, P and Thompson, AP},\n" "journal={Journal of Computational Physics},\n" + "volume={372},\n" + "pages={406-425},\n" "year={2018},\n" "publisher={Elsevier}\n" + "doi={10.1016/j.jcp.2018.06.042}\n" "}\n\n"; enum{NONE}; From 562296bdb7ae475cfcdb223d9765bc3a19cf8775 Mon Sep 17 00:00:00 2001 From: Oliver Henrich Date: Tue, 6 Nov 2018 19:44:35 +0000 Subject: [PATCH 71/72] Updated link to preprint article --- doc/src/fix_nve_dot.txt | 6 ++++-- doc/src/fix_nve_dotc_langevin.txt | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/src/fix_nve_dot.txt b/doc/src/fix_nve_dot.txt index 06140c2d37..3112b586d1 100644 --- a/doc/src/fix_nve_dot.txt +++ b/doc/src/fix_nve_dot.txt @@ -36,8 +36,8 @@ The command is equivalent to the "fix nve"_fix_nve.html. The particles are always considered to have a finite size. An example input file can be found in /examples/USER/cgdna/examples/duplex1/. -A technical report with more information on this integrator can be found -"here"_PDF/USER-CGDNA-overview.pdf. +Further details of the implementation and stability of the integrator are contained in "(Henrich)"_#Henrich3. +The preprint version of the article can be found "here"_PDF/USER-CGDNA.pdf. :line @@ -59,3 +59,5 @@ See the "Build package"_Build_package.html doc page for more info. [(Davidchack)] R.L Davidchack, T.E. Ouldridge, and M.V. Tretyakov. J. Chem. Phys. 142, 144114 (2015). :link(Miller1) [(Miller)] T. F. Miller III, M. Eleftheriou, P. Pattnaik, A. Ndirango, G. J. Martyna, J. Chem. Phys., 116, 8649-8659 (2002). +:link(Henrich3) +[(Henrich)] O. Henrich, Y. A. Gutierrez-Fosado, T. Curk, T. E. Ouldridge, Eur. Phys. J. E 41, 57 (2018). diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt index 7339f251ad..bb59a8423c 100644 --- a/doc/src/fix_nve_dotc_langevin.txt +++ b/doc/src/fix_nve_dotc_langevin.txt @@ -114,8 +114,8 @@ The scale factor after the {angmom} keyword gives the ratio of the rotational to the translational friction coefficient. An example input file can be found in /examples/USER/cgdna/examples/duplex2/. -A technical report with more information on this integrator can be found -"here"_PDF/USER-CGDNA-overview.pdf. +Further details of the implementation and stability of the integrators are contained in "(Henrich)"_#Henrich4. +The preprint version of the article can be found "here"_PDF/USER-CGDNA.pdf. :line @@ -139,3 +139,5 @@ See the "Build package"_Build_package.html doc page for more info. [(Miller)] T. F. Miller III, M. Eleftheriou, P. Pattnaik, A. Ndirango, G. J. Martyna, J. Chem. Phys., 116, 8649-8659 (2002). :link(Dunweg3) [(Dunweg)] B. Dunweg, W. Paul, Int. J. Mod. Phys. C, 2, 817-27 (1991). +:link(Henrich4) +[(Henrich)] O. Henrich, Y. A. Gutierrez-Fosado, T. Curk, T. E. Ouldridge, Eur. Phys. J. E 41, 57 (2018). From 84fcf01bedcdc4f7586aaa1b95988427386d8d2c Mon Sep 17 00:00:00 2001 From: jrgissing Date: Tue, 6 Nov 2018 19:59:22 -0700 Subject: [PATCH 72/72] bond/react: allow custom update of charges near template edges also, fixes a bug introduced in PR #1189, when not using stabilization --- doc/src/fix_bond_react.txt | 32 ++++++++++----- src/USER-MISC/fix_bond_react.cpp | 67 ++++++++++++++++++++++++++------ src/USER-MISC/fix_bond_react.h | 4 +- 3 files changed, 82 insertions(+), 21 deletions(-) diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index fc08a9b14e..e88bd198f3 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -44,7 +44,8 @@ react = mandatory argument indicating new reaction specification :l timesteps = number of timesteps to apply internally created nve/limit.html {update_edges} value = {none} or {charges} :l none = do not update topology near the edges of reaction templates - charges = update atomic charges of all atoms in reaction templates :pre + charges = update atomic charges of all atoms in reaction templates + custom = force the update of user-specified atomic charges :pre :ule [Examples:] @@ -201,23 +202,30 @@ A discussion of correctly handling this is also provided on the The map file is a text document with the following format: A map file has a header and a body. The header of map file the -contains one mandatory keyword and one optional keyword. The mandatory -keyword is 'equivalences' and the optional keyword is 'edgeIDs': +contains one mandatory keyword and two optional keywords. The mandatory +keyword is 'equivalences' and the optional keywords are 'edgeIDs' and +'customIDs': N {equivalences} = # of atoms N in the reaction molecule templates -N {edgeIDs} = # of edge atoms N in the pre-reacted molecule template :pre +N {edgeIDs} = # of edge atoms N in the pre-reacted molecule template +N {customIDs} = # of atoms N that are specified for a custom update :pre -The body of the map file contains two mandatory sections and one -optional section. The first mandatory section begins with the keyword +The body of the map file contains two mandatory sections and two +optional sections. The first mandatory section begins with the keyword 'BondingIDs' and lists the atom IDs of the bonding atom pair in the pre-reacted molecule template. The second mandatory section begins with the keyword 'Equivalences' and lists a one-to-one correspondence between atom IDs of the pre- and post-reacted templates. The first column is an atom ID of the pre-reacted molecule template, and the second column is the corresponding atom ID of the post-reacted -molecule template. The optional section begins with the keyword +molecule template. The first optional section begins with the keyword 'EdgeIDs' and lists the atom IDs of edge atoms in the pre-reacted -molecule template. +molecule template. The second optional section begins with the keyword +'Custom Edges' and allows for forcing the update of a specific atom's +atomic charge. The first column is the ID of an atom near the edge of +the pre-reacted molecule template, and the value of the second column +is either 'none' or 'charges.' Further details are provided in the +discussion of the 'update_edges' keyword. A sample map file is given below: @@ -282,7 +290,13 @@ The {update_edges} keyword can increase the number of atoms whose atomic charges are updated, when the pre-reaction template contains edge atoms. When the value is set to 'charges,' all atoms' atomic charges are updated to those specified by the post-reaction template, -including atoms near the edge of reaction templates. +including atoms near the edge of reaction templates. When the value is +set to 'custom,' an additional section must be included in the map +file that specifies whether to update charges, on a per-atom basis. +The format of this section is detailed above. Listing a pre-reaction +atom ID with a value of 'charges' will force the update of the atom's +charge, even if it is near a template edge. Atoms not near a template +edge are unaffected by this setting. In order to produce the most physical behavior, this 'reaction site equilibration time' should be tuned to be as small as possible while diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp index a7b85e92d3..394be64460 100644 --- a/src/USER-MISC/fix_bond_react.cpp +++ b/src/USER-MISC/fix_bond_react.cpp @@ -255,7 +255,10 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : } else if (strcmp(arg[iarg],"update_edges") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/react command: " "'update_edges' has too few arguments"); - if (strcmp(arg[iarg+1],"charges") == 0) update_edges_flag[rxn] = 1; + if (strcmp(arg[iarg+1],"none") == 0) update_edges_flag[rxn] = 0; + else if (strcmp(arg[iarg+1],"charges") == 0) update_edges_flag[rxn] = 1; + else if (strcmp(arg[iarg+1],"custom") == 0) update_edges_flag[rxn] = 2; + else error->all(FLERR,"Illegal value for 'update_edges' keyword'"); iarg += 2; } else error->all(FLERR,"Illegal fix bond/react command: unknown keyword"); } @@ -271,11 +274,16 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) : memory->create(reverse_equiv,max_natoms,2,nreacts,"bond/react:reverse_equiv"); memory->create(edge,max_natoms,nreacts,"bond/react:edge"); memory->create(landlocked_atoms,max_natoms,nreacts,"bond/react:landlocked_atoms"); + memory->create(custom_edges,max_natoms,nreacts,"bond/react:custom_edges"); for (int j = 0; j < nreacts; j++) - for (int i = 0; i < max_natoms; i++) edge[i][j] = 0; + for (int i = 0; i < max_natoms; i++) { + edge[i][j] = 0; + if (update_edges_flag[j] == 1) custom_edges[i][j] = 1; + else custom_edges[i][j] = 0; + } - // read all superimpose files afterward + // read all map files afterward for (int i = 0; i < nreacts; i++) { open(files[i]); onemol = atom->molecules[unreacted_mol[i]]; @@ -384,6 +392,7 @@ FixBondReact::~FixBondReact() memory->destroy(edge); memory->destroy(equivalences); memory->destroy(reverse_equiv); + memory->destroy(custom_edges); memory->destroy(nevery); memory->destroy(cutsq); @@ -1854,8 +1863,11 @@ void FixBondReact::limit_bond(int limit_bond_mode) int index1 = atom->find_custom("limit_tags",flag); int *i_limit_tags = atom->ivector[index1]; - int index2 = atom->find_custom(statted_id,flag); - int *i_statted_tags = atom->ivector[index2]; + int *i_statted_tags; + if (stabilization_flag == 1) { + int index2 = atom->find_custom(statted_id,flag); + i_statted_tags = atom->ivector[index2]; + } int index3 = atom->find_custom("react_tags",flag); int *i_react_tags = atom->ivector[index3]; @@ -1863,7 +1875,7 @@ void FixBondReact::limit_bond(int limit_bond_mode) for (int i = 0; i < temp_limit_num; i++) { // update->ntimestep could be 0. so add 1 throughout i_limit_tags[atom->map(temp_limit_glove[i])] = update->ntimestep + 1; - i_statted_tags[atom->map(temp_limit_glove[i])] = 0; + if (stabilization_flag == 1) i_statted_tags[atom->map(temp_limit_glove[i])] = 0; i_react_tags[atom->map(temp_limit_glove[i])] = rxnID; } @@ -1884,8 +1896,11 @@ void FixBondReact::unlimit_bond() int index1 = atom->find_custom("limit_tags",flag); int *i_limit_tags = atom->ivector[index1]; - int index2 = atom->find_custom(statted_id,flag); - int *i_statted_tags = atom->ivector[index2]; + int *i_statted_tags; + if (stabilization_flag == 1) { + int index2 = atom->find_custom(statted_id,flag); + i_statted_tags = atom->ivector[index2]; + } int index3 = atom->find_custom("react_tags",flag); int *i_react_tags = atom->ivector[index3]; @@ -1895,7 +1910,7 @@ void FixBondReact::unlimit_bond() // first '1': indexing offset, second '1': for next step if (i_limit_tags[i] != 0 && (update->ntimestep + 1 - i_limit_tags[i]) > limit_duration[i_react_tags[i]]) { // + 1 i_limit_tags[i] = 0; - i_statted_tags[i] = 1; + if (stabilization_flag == 1) i_statted_tags[i] = 1; i_react_tags[i] = 0; } } @@ -2077,7 +2092,7 @@ void FixBondReact::update_everything() twomol = atom->molecules[reacted_mol[rxnID]]; for (int j = 0; j < twomol->natoms; j++) { int jj = equivalences[j][1][rxnID]-1; - if ((landlocked_atoms[j][rxnID] == 1 || update_edges_flag[rxnID] == 1) && + if ((landlocked_atoms[j][rxnID] == 1 || custom_edges[jj][rxnID] == 1) && atom->map(update_mega_glove[jj+1][i]) >= 0 && atom->map(update_mega_glove[jj+1][i]) < nlocal) { type[atom->map(update_mega_glove[jj+1][i])] = twomol->type[j]; @@ -2520,6 +2535,7 @@ void FixBondReact::read(int myrxn) if (strstr(line,"edgeIDs")) sscanf(line,"%d",&nedge); else if (strstr(line,"equivalences")) sscanf(line,"%d",&nequivalent); + else if (strstr(line,"customIDs")) sscanf(line,"%d",&ncustom); else break; } @@ -2532,7 +2548,7 @@ void FixBondReact::read(int myrxn) // loop over sections of superimpose file - int equivflag = 0, edgeflag = 0, bondflag = 0; + int equivflag = 0, edgeflag = 0, bondflag = 0, customedgesflag = 0; while (strlen(keyword)) { if (strcmp(keyword,"BondingIDs") == 0) { bondflag = 1; @@ -2546,6 +2562,9 @@ void FixBondReact::read(int myrxn) } else if (strcmp(keyword,"Equivalences") == 0) { equivflag = 1; Equivalences(line, myrxn); + } else if (strcmp(keyword,"Custom Edges") == 0) { + customedgesflag = 1; + CustomEdges(line, myrxn); } else error->one(FLERR,"Unknown section in superimpose file"); parse_keyword(1,line,keyword); @@ -2555,6 +2574,12 @@ void FixBondReact::read(int myrxn) // error check if (bondflag == 0 || equivflag == 0) error->all(FLERR,"Superimpose file missing BondingIDs or Equivalences section\n"); + + if (update_edges_flag[myrxn] == 2 && customedgesflag == 0) + error->all(FLERR,"Map file must have a Custom Edges section when using 'update_edges custom'\n"); + + if (update_edges_flag[myrxn] != 2 && customedgesflag == 1) + error->all(FLERR,"Specify 'update_edges custom' to include Custom Edges section in map file\n"); } void FixBondReact::EdgeIDs(char *line, int myrxn) @@ -2585,6 +2610,26 @@ void FixBondReact::Equivalences(char *line, int myrxn) } } +void FixBondReact::CustomEdges(char *line, int myrxn) +{ + // 0 for 'none', 1 for 'charges' + + int tmp; + int n = MAX(strlen("none"),strlen("charges")) + 1; + char *edgemode = new char[n]; + for (int i = 0; i < ncustom; i++) { + readline(line); + sscanf(line,"%d %s",&tmp,edgemode); + if (strcmp(edgemode,"none") == 0) + custom_edges[tmp-1][myrxn] = 0; + else if (strcmp(edgemode,"charges") == 0) + custom_edges[tmp-1][myrxn] = 1; + else + error->one(FLERR,"Illegal value in 'Custom Edges' section of map file"); + } + delete [] edgemode; +} + void FixBondReact::open(char *file) { fp = fopen(file,"r"); diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h index ca1f3bd20c..d54ab7c385 100644 --- a/src/USER-MISC/fix_bond_react.h +++ b/src/USER-MISC/fix_bond_react.h @@ -101,7 +101,7 @@ class FixBondReact : public Fix { int *ibonding,*jbonding; int *closeneigh; // indicates if bonding atoms of a rxn are 1-2, 1-3, or 1-4 neighbors - int nedge,nequivalent; // number of edge, equivalent atoms in mapping file + int nedge,nequivalent,ncustom; // number of edge, equivalent, custom atoms in mapping file int attempted_rxn; // there was an attempt! int *local_rxn_count; int *ghostly_rxn_count; @@ -115,6 +115,7 @@ class FixBondReact : public Fix { int ***equivalences; // relation between pre- and post-reacted templates int ***reverse_equiv; // re-ordered equivalences int **landlocked_atoms; // all atoms at least three bonds away from edge atoms + int **custom_edges; // atoms in molecule templates with incorrect valences int **nxspecial,**onemol_nxspecial,**twomol_nxspecial; // full number of 1-4 neighbors tagint **xspecial,**onemol_xspecial,**twomol_xspecial; // full 1-4 neighbor list @@ -136,6 +137,7 @@ class FixBondReact : public Fix { void read(int); void EdgeIDs(char *,int); void Equivalences(char *,int); + void CustomEdges(char *,int); void make_a_guess (); void neighbor_loop();