From ef0f9c0451c2ffd425d035c50513f1e92f61504f Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 29 Jun 2018 12:26:19 +0100 Subject: [PATCH 001/362] 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 -- GitLab From f5642ac292b88824c76ef4a566d0d0274ca854c5 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 29 Jun 2018 16:28:53 +0100 Subject: [PATCH 002/362] 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= -- GitLab From 9b4452959180bb492f7cf2bccc9e488f046e3014 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 29 Jun 2018 17:46:51 +0100 Subject: [PATCH 003/362] 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.* -- GitLab From 2c5f2a668398f4d74bf192010df1094a60d8c974 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 2 Jul 2018 10:22:23 +0100 Subject: [PATCH 004/362] 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 { -- GitLab From b299bfa821efe38fc761a15f3eded8820ad22d30 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 2 Jul 2018 13:58:38 +0100 Subject: [PATCH 005/362] 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) { -- GitLab From 7f5a83cb1ddc1ce1ef1b0066bcdf7bd10ac39f94 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 2 Jul 2018 17:04:19 +0100 Subject: [PATCH 006/362] 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 -- GitLab From 43cdca80f287e2af980faf1732aab98285028ad7 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 9 Jul 2018 15:06:10 +0100 Subject: [PATCH 007/362] 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); -- GitLab From c84ae38e349b8c7bc1861ae0fac8f90ac5352661 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Mon, 9 Jul 2018 17:27:41 +0100 Subject: [PATCH 008/362] 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 -- GitLab From 4d5635a3c43a33ae770a6a0df5f66dfae06c33dd Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Tue, 10 Jul 2018 16:01:45 +0100 Subject: [PATCH 009/362] 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: -- GitLab From 492e945b5ad85817f9c47814659ec4529d3c010b Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Wed, 11 Jul 2018 16:39:52 +0100 Subject: [PATCH 010/362] 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); -- GitLab From 4734bc09dcebc0a3974e5b2b93229424776cff48 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Wed, 11 Jul 2018 21:56:08 +0100 Subject: [PATCH 011/362] 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. -- GitLab From 6d9face1ec0b3e55ce62ba40d1783cac7dab6eca Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Thu, 12 Jul 2018 12:26:09 +0100 Subject: [PATCH 012/362] 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 -- GitLab From c442166dede75d2b06ea0d4cd71dce6477163794 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Thu, 12 Jul 2018 16:22:40 +0100 Subject: [PATCH 013/362] 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 -- GitLab From c8870f1b78e5863fbd49e961ce2cf210e93c5d7e Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 24 Oct 2018 11:57:34 -0600 Subject: [PATCH 014/362] change intro to each list of commands --- doc/src/bond_style.txt | 12 +++++++++--- doc/src/compute.txt | 5 ----- doc/src/dihedral_style.txt | 14 ++++++++++---- doc/src/fix.txt | 4 ---- doc/src/improper_style.txt | 14 ++++++++++---- doc/src/pair_style.txt | 14 +++++--------- 6 files changed, 34 insertions(+), 29 deletions(-) diff --git a/doc/src/bond_style.txt b/doc/src/bond_style.txt index 197a4fb1b6..d603bc28fd 100644 --- a/doc/src/bond_style.txt +++ b/doc/src/bond_style.txt @@ -65,9 +65,15 @@ Here is an alphabetic list of bond styles defined in LAMMPS. Click on the style to display the formula it computes and coefficients specified by the associated "bond_coeff"_bond_coeff.html command. -Note that there are also additional bond styles submitted by users -which are included in the LAMMPS distribution. The full list of all -bond styles is on the "Commands bond"_Commands_bond.html doc page. +Click on the style to display the formula it computes, any additional +arguments specified in the bond_style command, and coefficients +specified by the associated "bond_coeff"_bond_coeff.html command. + +There are also additional accelerated pair styles included in the +LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. +The individual style names on the "Commands bond"_Commands_bond.html +doc page are followed by one or more of (g,i,k,o,t) to indicate which +accelerated styles exist. "none"_bond_none.html - turn off bonded interactions "zero"_bond_zero.html - topology but no interactions diff --git a/doc/src/compute.txt b/doc/src/compute.txt index 857795ffe5..c34d6f950b 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -164,11 +164,6 @@ and what it does. Here is an alphabetic list of compute styles available in LAMMPS. They are also listed in more compact form on the "Commands compute"_Commands_compute.html doc page. -There are also additional compute styles (not listed here) submitted -by users which are included in the LAMMPS distribution. The full list -of all compute styles is on the "Commands -compute"_Commands_compute.html doc page. - There are also additional accelerated compute styles included in the LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. The individual style names on the "Commands diff --git a/doc/src/dihedral_style.txt b/doc/src/dihedral_style.txt index d45d9b488d..2a5b9baf52 100644 --- a/doc/src/dihedral_style.txt +++ b/doc/src/dihedral_style.txt @@ -80,10 +80,16 @@ Here is an alphabetic list of dihedral styles defined in LAMMPS. Click on the style to display the formula it computes and coefficients specified by the associated "dihedral_coeff"_dihedral_coeff.html command. -Note that there are also additional dihedral styles submitted by users -which are included in the LAMMPS distribution. The full list of all -dihedral styles is on the "Commands bond"_Commands_bond.html#dihedral -doc page. +Click on the style to display the formula it computes, any additional +arguments specified in the dihedral_style command, and coefficients +specified by the associated "dihedral_coeff"_dihedral_coeff.html +command. + +There are also additional accelerated pair styles included in the +LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. +The individual style names on the "Commands +dihedral"_Commands_bond.html#dihedral doc page are followed by one or +more of (g,i,k,o,t) to indicate which accelerated styles exist. "none"_dihedral_none.html - turn off dihedral interactions "zero"_dihedral_zero.html - topology but no interactions diff --git a/doc/src/fix.txt b/doc/src/fix.txt index 27cc0467e2..0163ac2863 100644 --- a/doc/src/fix.txt +++ b/doc/src/fix.txt @@ -156,10 +156,6 @@ what it does, as listed below. Here is an alphabetic list of fix styles available in LAMMPS. They are also listed in more compact form on the "Commands fix"_Commands_fix.html doc page. -There are also additional fix styles (not listed here) submitted by -users which are included in the LAMMPS distribution. The full list of -all fix styles is on the "Commands fix"_Commands_fix.html doc page. - There are also additional accelerated fix styles included in the LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. The individual style names on the "Commands fix"_Commands_fix.html doc diff --git a/doc/src/improper_style.txt b/doc/src/improper_style.txt index f315509fe4..c5e0be8a81 100644 --- a/doc/src/improper_style.txt +++ b/doc/src/improper_style.txt @@ -59,10 +59,16 @@ Click on the style to display the formula it computes and coefficients specified by the associated "improper_coeff"_improper_coeff.html command. -Note that there are also additional improper styles submitted by users -which are included in the LAMMPS distribution. The full list of all -improper styles is on the "Commands bond"_Commands_bond.html#improper -doc page. +Click on the style to display the formula it computes, any additional +arguments specified in the improper_style command, and coefficients +specified by the associated "improper_coeff"_improper_coeff.html +command. + +There are also additional accelerated pair styles included in the +LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. +The individual style names on the "Commands +improper"_Commands_bond.html#improper doc page are followed by one or +more of (g,i,k,o,t) to indicate which accelerated styles exist. "none"_improper_none.html - turn off improper interactions "zero"_improper_zero.html - topology but no interactions diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt index 14e3f79215..9a5de55ef0 100644 --- a/doc/src/pair_style.txt +++ b/doc/src/pair_style.txt @@ -85,15 +85,11 @@ Click on the style to display the formula it computes, arguments specified in the pair_style command, and coefficients specified by the associated "pair_coeff"_pair_coeff.html command. -There are also additional pair styles (not listed here) submitted by -users which are included in the LAMMPS distribution. The full list of -all pair styles is on the "Commands pair"_Commands_pair.html doc page. - -There are also additional accelerated pair styles (not listed here) -included in the LAMMPS distribution for faster performance on CPUs, -GPUs, and KNLs. The individual style names on the "Commands -pair"_Commands_pair.html doc page are followed by one or more of -(g,i,k,o,t) to indicate which accelerated styles exist. +There are also additional accelerated pair styles included in the +LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. +The individual style names on the "Commands pair"_Commands_pair.html +doc page are followed by one or more of (g,i,k,o,t) to indicate which +accelerated styles exist. "none"_pair_none.html - turn off pairwise interactions "hybrid"_pair_hybrid.html - multiple styles of pairwise interactions -- GitLab From 7e5ec96bcdde4bf3735a2c2d006034294d0368d6 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 24 Oct 2018 12:02:36 -0600 Subject: [PATCH 015/362] more tweaks from style check script --- doc/src/Commands_fix.txt | 4 ++-- doc/src/compute.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/Commands_fix.txt b/doc/src/Commands_fix.txt index 4144c7eb90..670f1b0462 100644 --- a/doc/src/Commands_fix.txt +++ b/doc/src/Commands_fix.txt @@ -107,7 +107,7 @@ OPT. "nph/asphere (o)"_fix_nph_asphere.html, "nph/body"_fix_nph_body.html, "nph/eff"_fix_nh_eff.html, -"nph/sphere (ko)"_fix_nph_sphere.html, +"nph/sphere (o)"_fix_nph_sphere.html, "nphug (o)"_fix_nphug.html, "npt (iko)"_fix_nh.html, "npt/asphere (o)"_fix_npt_asphere.html, @@ -127,7 +127,7 @@ OPT. "nve/line"_fix_nve_line.html, "nve/manifold/rattle"_fix_nve_manifold_rattle.html, "nve/noforce"_fix_nve_noforce.html, -"nve/sphere (o)"_fix_nve_sphere.html, +"nve/sphere (ko)"_fix_nve_sphere.html, "nve/spin"_fix_nve_spin.html, "nve/tri"_fix_nve_tri.html, "nvk"_fix_nvk.html, diff --git a/doc/src/compute.txt b/doc/src/compute.txt index c34d6f950b..8d3cf7d2f2 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -171,6 +171,7 @@ compute"_Commands_compute.html doc page are followed by one or more of (g,i,k,o,t) to indicate which accelerated styles exist. "ackland/atom"_compute_ackland_atom.html - +"adf"_compute_adf.html - angular distribution function of triples of atoms "aggregate/atom"_compute_cluster_atom.html - aggregate ID for each atom "angle"_compute_angle.html - "angle/local"_compute_angle_local.html - -- GitLab From 07f92d225eed98a34262ae0c4528813766f7dd61 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 24 Oct 2018 12:03:51 -0600 Subject: [PATCH 016/362] formatting tweak --- doc/src/Run_options.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/Run_options.txt b/doc/src/Run_options.txt index db5a7baa6e..742d38d456 100644 --- a/doc/src/Run_options.txt +++ b/doc/src/Run_options.txt @@ -388,7 +388,7 @@ optional keyword/value settings. :line -[-restart2dump restartfile {remap} group-ID dumpstyle dumpfile arg1 arg2 ...] :link(restart2dump) +[-restart2dump restartfile (remap) group-ID dumpstyle dumpfile arg1 arg2 ...] :link(restart2dump) Convert the restart file into a dump file and immediately exit. This is the same operation as if the following 2-line input script were -- GitLab From 2c1f420a48c28d0f56951b29b6864ea25eaf4d10 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 24 Oct 2018 13:43:26 -0600 Subject: [PATCH 017/362] more tweaks --- doc/src/angle_style.txt | 13 +++++++++---- doc/src/pair_style.txt | 6 +++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/src/angle_style.txt b/doc/src/angle_style.txt index a0bc47ba4c..2c3c1f2bd1 100644 --- a/doc/src/angle_style.txt +++ b/doc/src/angle_style.txt @@ -57,10 +57,15 @@ Here is an alphabetic list of angle styles defined in LAMMPS. Click on the style to display the formula it computes and coefficients specified by the associated "angle_coeff"_angle_coeff.html command. -Note that there are also additional angle styles submitted by users -which are included in the LAMMPS distribution. The full list of all -angle styles are is on the "Commands bond"_Commands_bond.html#angle -doc page. +Click on the style to display the formula it computes, any additional +arguments specified in the angle_style command, and coefficients +specified by the associated "angle_coeff"_angle_coeff.html command. + +There are also additional accelerated pair styles included in the +LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. +The individual style names on the "Commands +angle"_Commands_bond.html#angle doc page are followed by one or more +of (g,i,k,o,t) to indicate which accelerated styles exist. "none"_angle_none.html - turn off angle interactions "zero"_angle_zero.html - topology but no interactions diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt index 9a5de55ef0..5eb810db8f 100644 --- a/doc/src/pair_style.txt +++ b/doc/src/pair_style.txt @@ -81,9 +81,9 @@ Here is an alphabetic list of pair styles defined in LAMMPS. They are also listed in more compact form on the "Commands pair"_Commands_pair.html doc page. -Click on the style to display the formula it computes, arguments -specified in the pair_style command, and coefficients specified by the -associated "pair_coeff"_pair_coeff.html command. +Click on the style to display the formula it computes, any additional +arguments specified in the pair_style command, and coefficients +specified by the associated "pair_coeff"_pair_coeff.html command. There are also additional accelerated pair styles included in the LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. -- GitLab From 2e79d9f340aa2f7bb12b45315f705f49630d366a Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Thu, 25 Oct 2018 21:45:35 +0100 Subject: [PATCH 018/362] Merged Pablo's fixes into the plumed interface for lammps --- src/USER-PLUMED/fix_plumed.cpp | 163 +++++++++++++++++++++++++++------ src/USER-PLUMED/fix_plumed.h | 6 ++ 2 files changed, 140 insertions(+), 29 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 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 + // 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"); + + 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; }; }; -- GitLab From 4fa78a78deb6175d0bed0abc02e035e164953144 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 26 Oct 2018 22:12:17 +0100 Subject: [PATCH 019/362] 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:] -- GitLab From 85c8877aeb11c67cd0e5071d23a72e8042a6e431 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 26 Oct 2018 17:31:42 -0600 Subject: [PATCH 020/362] make 2 copy of old read_dump and rerun for comparison to new --- src/read_dump2.cpp | 1011 ++++++++++++++++++++++++++++++++++++++++++++ src/read_dump2.h | 172 ++++++++ src/read_restart.h | 8 +- src/reader.cpp | 2 + src/rerun2.cpp | 193 +++++++++ src/rerun2.h | 59 +++ 6 files changed, 1442 insertions(+), 3 deletions(-) create mode 100644 src/read_dump2.cpp create mode 100644 src/read_dump2.h create mode 100644 src/rerun2.cpp create mode 100644 src/rerun2.h diff --git a/src/read_dump2.cpp b/src/read_dump2.cpp new file mode 100644 index 0000000000..37bc3e3589 --- /dev/null +++ b/src/read_dump2.cpp @@ -0,0 +1,1011 @@ +/* ---------------------------------------------------------------------- + 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: Timothy Sirk (ARL) +------------------------------------------------------------------------- */ + +// lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h +// due to OpenMPI bug which sets INT64_MAX via its mpi.h +// before lmptype.h can set flags to insure it is done correctly + +#include "lmptype.h" +#include +#include +#include +#include "read_dump2.h" +#include "reader.h" +#include "style_reader.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "modify.h" +#include "fix.h" +#include "compute.h" +#include "domain.h" +#include "comm.h" +#include "force.h" +#include "irregular.h" +#include "input.h" +#include "variable.h" +#include "error.h" +#include "memory.h" + +using namespace LAMMPS_NS; + +#define CHUNK 16384 + +// also in reader_native.cpp + +enum{ID,TYPE,X,Y,Z,VX,VY,VZ,Q,IX,IY,IZ,FX,FY,FZ}; +enum{UNSET,NOSCALE_NOWRAP,NOSCALE_WRAP,SCALE_NOWRAP,SCALE_WRAP}; +enum{NOADD,YESADD,KEEPADD}; + +/* ---------------------------------------------------------------------- */ + +ReadDump2::ReadDump2(LAMMPS *lmp) : Pointers(lmp) +{ + MPI_Comm_rank(world,&me); + MPI_Comm_size(world,&nprocs); + + dimension = domain->dimension; + triclinic = domain->triclinic; + + nfile = 0; + files = NULL; + + nfield = 0; + fieldtype = NULL; + fieldlabel = NULL; + fields = NULL; + + int n = strlen("native") + 1; + readerstyle = new char[n]; + strcpy(readerstyle,"native"); + + reader = NULL; + fp = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ReadDump2::~ReadDump2() +{ + for (int i = 0; i < nfile; i++) delete [] files[i]; + delete [] files; + for (int i = 0; i < nfield; i++) delete [] fieldlabel[i]; + delete [] fieldlabel; + delete [] fieldtype; + delete [] readerstyle; + + memory->destroy(fields); + delete reader; +} + +/* ---------------------------------------------------------------------- */ + +void ReadDump2::command(int narg, char **arg) +{ + if (domain->box_exist == 0) + error->all(FLERR,"Read_dump command before simulation box is defined"); + + if (narg < 2) error->all(FLERR,"Illegal read_dump command"); + + store_files(1,&arg[0]); + bigint nstep = force->bnumeric(FLERR,arg[1]); + + int nremain = narg - 2; + if (nremain) nremain = fields_and_keywords(nremain,&arg[narg-nremain]); + else nremain = fields_and_keywords(0,NULL); + if (nremain) setup_reader(nremain,&arg[narg-nremain]); + else setup_reader(0,NULL); + + // find the snapshot and read/bcast/process header info + + if (me == 0 && screen) fprintf(screen,"Scanning dump file ...\n"); + + bigint ntimestep = seek(nstep,1); + if (ntimestep < 0) + error->all(FLERR,"Dump file does not contain requested snapshot"); + header(1); + + // reset timestep to nstep + + update->reset_timestep(nstep); + + // counters + + // read in the snapshot and reset system + + if (me == 0 && screen) + fprintf(screen,"Reading snapshot from dump file ...\n"); + + bigint natoms_prev = atom->natoms; + atoms(); + + if (me == 0) reader->close_file(); + + // print out stats + + bigint npurge_all,nreplace_all,ntrim_all,nadd_all; + + bigint tmp; + tmp = npurge; + MPI_Allreduce(&tmp,&npurge_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + tmp = nreplace; + MPI_Allreduce(&tmp,&nreplace_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + tmp = ntrim; + MPI_Allreduce(&tmp,&ntrim_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + tmp = nadd; + MPI_Allreduce(&tmp,&nadd_all,1,MPI_LMP_BIGINT,MPI_SUM,world); + + domain->print_box(" "); + + if (me == 0) { + if (screen) { + fprintf(screen," " BIGINT_FORMAT " atoms before read\n",natoms_prev); + fprintf(screen," " BIGINT_FORMAT " atoms in snapshot\n",nsnapatoms); + fprintf(screen," " BIGINT_FORMAT " atoms purged\n",npurge_all); + fprintf(screen," " BIGINT_FORMAT " atoms replaced\n",nreplace_all); + fprintf(screen," " BIGINT_FORMAT " atoms trimmed\n",ntrim_all); + fprintf(screen," " BIGINT_FORMAT " atoms added\n",nadd_all); + fprintf(screen," " BIGINT_FORMAT " atoms after read\n",atom->natoms); + } + if (logfile) { + fprintf(logfile," " BIGINT_FORMAT " atoms before read\n",natoms_prev); + fprintf(logfile," " BIGINT_FORMAT " atoms in snapshot\n",nsnapatoms); + fprintf(logfile," " BIGINT_FORMAT " atoms purged\n",npurge_all); + fprintf(logfile," " BIGINT_FORMAT " atoms replaced\n",nreplace_all); + fprintf(logfile," " BIGINT_FORMAT " atoms trimmed\n",ntrim_all); + fprintf(logfile," " BIGINT_FORMAT " atoms added\n",nadd_all); + fprintf(logfile," " BIGINT_FORMAT " atoms after read\n",atom->natoms); + } + } +} + +/* ---------------------------------------------------------------------- */ + +void ReadDump2::store_files(int nstr, char **str) +{ + nfile = nstr; + files = new char*[nfile]; + + for (int i = 0; i < nfile; i++) { + int n = strlen(str[i]) + 1; + files[i] = new char[n]; + strcpy(files[i],str[i]); + } +} + +/* ---------------------------------------------------------------------- */ + +void ReadDump2::setup_reader(int narg, char **arg) +{ + // allocate snapshot field buffer + + memory->create(fields,CHUNK,nfield,"read_dump:fields"); + + // create reader class + // match readerstyle to options in style_reader.h + + if (0) return; // dummy line to enable else-if macro expansion + +#define READER_CLASS +#define ReaderStyle(key,Class) \ + else if (strcmp(readerstyle,#key) == 0) reader = new Class(lmp); +#include "style_reader.h" +#undef READER_CLASS + + // unrecognized style + + else error->all(FLERR,"Unknown dump reader style"); + + // pass any arguments to reader + + if (narg > 0) reader->settings(narg,arg); +} + +/* ---------------------------------------------------------------------- + seek Nrequest timestep in one or more dump files + if exact = 1, must find exactly Nrequest + if exact = 0, find first step >= Nrequest + return matching ntimestep or -1 if did not find a match +------------------------------------------------------------------------- */ + +bigint ReadDump2::seek(bigint nrequest, int exact) +{ + int ifile,eofflag; + bigint ntimestep; + + if (me == 0) { + + // exit file loop when dump timestep >= nrequest + // or files exhausted + + for (ifile = 0; ifile < nfile; ifile++) { + ntimestep = -1; + reader->open_file(files[ifile]); + while (1) { + eofflag = reader->read_time(ntimestep); + if (eofflag) break; + if (ntimestep >= nrequest) break; + reader->skip(); + } + if (ntimestep >= nrequest) break; + reader->close_file(); + } + + currentfile = ifile; + if (ntimestep < nrequest) ntimestep = -1; + if (exact && ntimestep != nrequest) ntimestep = -1; + if (ntimestep < 0) reader->close_file(); + } + + MPI_Bcast(&ntimestep,1,MPI_LMP_BIGINT,0,world); + return ntimestep; +} + +/* ---------------------------------------------------------------------- + find next matching snapshot in one or more dump files + Ncurrent = current timestep from last snapshot + Nlast = match no timestep bigger than Nlast + Nevery = only match timesteps that are a multiple of Nevery + Nskip = skip every this many timesteps + return matching ntimestep or -1 if did not find a match +------------------------------------------------------------------------- */ + +bigint ReadDump2::next(bigint ncurrent, bigint nlast, int nevery, int nskip) +{ + int ifile,eofflag; + bigint ntimestep; + + if (me == 0) { + + // exit file loop when dump timestep matches all criteria + // or files exhausted + + int iskip = 0; + + for (ifile = currentfile; ifile < nfile; ifile++) { + ntimestep = -1; + if (ifile != currentfile) reader->open_file(files[ifile]); + while (1) { + eofflag = reader->read_time(ntimestep); + + // new code logic to match new parallel read_dump + if (eofflag) break; + if (ntimestep > nlast) break; + if (ntimestep <= ncurrent) { + reader->skip(); + continue; + } + if (iskip == nskip) iskip = 0; + iskip++; + if (nevery && ntimestep % nevery) reader->skip(); + else if (iskip < nskip) reader->skip(); + else break; + + // old code logic + //if (iskip == nskip) iskip = 0; + //iskip++; + //if (eofflag) break; + //if (ntimestep <= ncurrent) break; + //if (ntimestep > nlast) break; + //if (nevery && ntimestep % nevery) reader->skip(); + //else if (iskip < nskip) reader->skip(); + //else break; + } + if (eofflag) reader->close_file(); + else break; + } + + currentfile = ifile; + if (eofflag) ntimestep = -1; + if (ntimestep <= ncurrent) ntimestep = -1; + if (ntimestep > nlast) ntimestep = -1; + if (ntimestep < 0) reader->close_file(); + } + + MPI_Bcast(&ntimestep,1,MPI_LMP_BIGINT,0,world); + return ntimestep; +} + +/* ---------------------------------------------------------------------- + read and broadcast and store snapshot header info + set nsnapatoms = # of atoms in snapshot +------------------------------------------------------------------------- */ + +void ReadDump2::header(int fieldinfo) +{ + int triclinic_snap; + int fieldflag,xflag,yflag,zflag; + + if (me == 0) + nsnapatoms = reader->read_header(box,triclinic_snap, + fieldinfo,nfield,fieldtype,fieldlabel, + scaleflag,wrapflag,fieldflag, + xflag,yflag,zflag); + + MPI_Bcast(&nsnapatoms,1,MPI_LMP_BIGINT,0,world); + MPI_Bcast(&triclinic_snap,1,MPI_INT,0,world); + MPI_Bcast(&box[0][0],9,MPI_DOUBLE,0,world); + + // local copy of snapshot box parameters + // used in xfield,yfield,zfield when converting dump atom to absolute coords + + xlo = box[0][0]; + xhi = box[0][1]; + ylo = box[1][0]; + yhi = box[1][1]; + zlo = box[2][0]; + zhi = box[2][1]; + if (triclinic_snap) { + xy = box[0][2]; + xz = box[1][2]; + yz = box[2][2]; + double xdelta = MIN(0.0,xy); + xdelta = MIN(xdelta,xz); + xdelta = MIN(xdelta,xy+xz); + xlo = xlo - xdelta; + xdelta = MAX(0.0,xy); + xdelta = MAX(xdelta,xz); + xdelta = MAX(xdelta,xy+xz); + xhi = xhi - xdelta; + ylo = ylo - MIN(0.0,yz); + yhi = yhi - MAX(0.0,yz); + } + xprd = xhi - xlo; + yprd = yhi - ylo; + zprd = zhi - zlo; + + // done if not checking fields + + if (!fieldinfo) return; + + MPI_Bcast(&fieldflag,1,MPI_INT,0,world); + MPI_Bcast(&xflag,1,MPI_INT,0,world); + MPI_Bcast(&yflag,1,MPI_INT,0,world); + MPI_Bcast(&zflag,1,MPI_INT,0,world); + + // error check on current vs new box and fields + // triclinic_snap < 0 means no box info in file + + if (triclinic_snap < 0 && boxflag > 0) + error->all(FLERR,"No box information in dump, must use 'box no'"); + if (triclinic_snap >= 0) { + if ((triclinic_snap && !triclinic) || + (!triclinic_snap && triclinic)) + error->one(FLERR,"Read_dump triclinic status does not match simulation"); + } + + // error check on requested fields exisiting in dump file + + if (fieldflag < 0) + error->one(FLERR,"Read_dump field not found in dump file"); + + // all explicitly requested x,y,z must have consistent scaling & wrapping + + int value = MAX(xflag,yflag); + value = MAX(zflag,value); + if ((xflag != UNSET && xflag != value) || + (yflag != UNSET && yflag != value) || + (zflag != UNSET && zflag != value)) + error->one(FLERR, + "Read_dump xyz fields do not have consistent scaling/wrapping"); + + // set scaled/wrapped based on xyz flags + + value = UNSET; + if (xflag != UNSET) value = xflag; + if (yflag != UNSET) value = yflag; + if (zflag != UNSET) value = zflag; + + if (value == UNSET) { + scaled = wrapped = 0; + } else if (value == NOSCALE_NOWRAP) { + scaled = wrapped = 0; + } else if (value == NOSCALE_WRAP) { + scaled = 0; + wrapped = 1; + } else if (value == SCALE_NOWRAP) { + scaled = 1; + wrapped = 0; + } else if (value == SCALE_WRAP) { + scaled = wrapped = 1; + } + + // scaled, triclinic coords require all 3 x,y,z fields, to perform unscaling + // set yindex,zindex = column index of Y and Z fields in fields array + // needed for unscaling to absolute coords in xfield(), yfield(), zfield() + + if (scaled && triclinic == 1) { + int flag = 0; + if (xflag == UNSET) flag = 1; + if (yflag == UNSET) flag = 1; + if (dimension == 3 && zflag == UNSET) flag = 1; + if (flag) + error->one(FLERR,"All read_dump x,y,z fields must be specified for " + "scaled, triclinic coords"); + + for (int i = 0; i < nfield; i++) { + if (fieldtype[i] == Y) yindex = i; + if (fieldtype[i] == Z) zindex = i; + } + } +} + +/* ---------------------------------------------------------------------- */ + +void ReadDump2::atoms() +{ + // initialize counters + + npurge = nreplace = ntrim = nadd = 0; + + // if purgeflag set, delete all current atoms + + if (purgeflag) { + if (atom->map_style) atom->map_clear(); + npurge = atom->nlocal; + atom->nlocal = atom->nghost = 0; + atom->natoms = 0; + } + + // to match existing atoms to dump atoms: + // must build map if not a molecular system + + int mapflag = 0; + if (atom->map_style == 0) { + mapflag = 1; + atom->map_init(); + atom->map_set(); + } + + // uflag[i] = 1 for each owned atom appearing in dump + // ucflag = similar flag for each chunk atom, used in process_atoms() + + int nlocal = atom->nlocal; + memory->create(uflag,nlocal,"read_dump:uflag"); + for (int i = 0; i < nlocal; i++) uflag[i] = 0; + memory->create(ucflag,CHUNK,"read_dump:ucflag"); + memory->create(ucflag_all,CHUNK,"read_dump:ucflag"); + + // read, broadcast, and process atoms from snapshot in chunks + + addproc = -1; + + int nchunk; + bigint nread = 0; + while (nread < nsnapatoms) { + nchunk = MIN(nsnapatoms-nread,CHUNK); + if (me == 0) reader->read_atoms(nchunk,nfield,fields); + MPI_Bcast(&fields[0][0],nchunk*nfield,MPI_DOUBLE,0,world); + process_atoms(nchunk); + nread += nchunk; + } + + // if addflag = YESADD, assign IDs to new snapshot atoms + + if (addflag == YESADD) { + bigint nblocal = atom->nlocal; + MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); + if (atom->natoms < 0 || atom->natoms >= MAXBIGINT) + error->all(FLERR,"Too many total atoms"); + if (atom->tag_enable) atom->tag_extend(); + } + + // if trimflag set, delete atoms not replaced by snapshot atoms + + if (trimflag) { + delete_atoms(); + bigint nblocal = atom->nlocal; + MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); + } + + // can now delete uflag arrays + + memory->destroy(uflag); + memory->destroy(ucflag); + memory->destroy(ucflag_all); + + // delete atom map if created it above + // else reinitialize map for current atoms + // do this before migrating atoms to new procs via Irregular + + if (mapflag) { + atom->map_delete(); + atom->map_style = 0; + } else { + atom->nghost = 0; + atom->map_init(); + atom->map_set(); + } + + // overwrite simulation box with dump snapshot box if requested + // reallocate processors to box + + if (boxflag) { + domain->boxlo[0] = xlo; + domain->boxhi[0] = xhi; + domain->boxlo[1] = ylo; + domain->boxhi[1] = yhi; + if (dimension == 3) { + domain->boxlo[2] = zlo; + domain->boxhi[2] = zhi; + } + if (triclinic) { + domain->xy = xy; + if (dimension == 3) { + domain->xz = xz; + domain->yz = yz; + } + } + + domain->set_initial_box(); + domain->set_global_box(); + comm->set_proc_grid(0); + domain->set_local_box(); + } + + // move atoms back inside simulation box and to new processors + // use remap() instead of pbc() in case atoms moved a long distance + // adjust image flags of all atoms (old and new) based on current box + // use irregular() in case atoms moved a long distance + + double **x = atom->x; + imageint *image = atom->image; + nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]); + + if (triclinic) domain->x2lamda(atom->nlocal); + domain->reset_box(); + Irregular *irregular = new Irregular(lmp); + irregular->migrate_atoms(1); + delete irregular; + if (triclinic) domain->lamda2x(atom->nlocal); + + // check that atom IDs are valid + + atom->tag_check(); +} + +/* ---------------------------------------------------------------------- + process arg list for dump file fields and optional keywords +------------------------------------------------------------------------- */ + +int ReadDump2::fields_and_keywords(int narg, char **arg) +{ + // per-field vectors, leave space for ID and TYPE + + fieldtype = new int[narg+2]; + fieldlabel = new char*[narg+2]; + + // add id and type fields as needed + // scan ahead to see if "add yes/keep" keyword/value is used + // requires extra "type" field from from dump file + + int iarg; + for (iarg = 0; iarg < narg; iarg++) + if (strcmp(arg[iarg],"add") == 0) + if (iarg < narg-1 && (strcmp(arg[iarg+1],"yes") == 0 || + strcmp(arg[iarg+1],"keep") == 0)) break; + + nfield = 0; + fieldtype[nfield++] = ID; + if (iarg < narg) fieldtype[nfield++] = TYPE; + + // parse fields + + iarg = 0; + while (iarg < narg) { + int type = whichtype(arg[iarg]); + if (type < 0) break; + if (type == Q && !atom->q_flag) + error->all(FLERR,"Read dump of atom property that isn't allocated"); + fieldtype[nfield++] = type; + iarg++; + } + + // check for no fields + + if (fieldtype[nfield-1] == ID || fieldtype[nfield-1] == TYPE) + error->all(FLERR,"Illegal read_dump command"); + + if (dimension == 2) { + for (int i = 0; i < nfield; i++) + if (fieldtype[i] == Z || fieldtype[i] == VZ || + fieldtype[i] == IZ || fieldtype[i] == FZ) + error->all(FLERR,"Illegal read_dump command"); + } + + for (int i = 0; i < nfield; i++) + for (int j = i+1; j < nfield; j++) + if (fieldtype[i] == fieldtype[j]) + error->all(FLERR,"Duplicate fields in read_dump command"); + + // parse optional args + + boxflag = 1; + replaceflag = 1; + purgeflag = 0; + trimflag = 0; + addflag = NOADD; + for (int i = 0; i < nfield; i++) fieldlabel[i] = NULL; + scaleflag = 0; + wrapflag = 1; + + while (iarg < narg) { + if (strcmp(arg[iarg],"box") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) boxflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) boxflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"replace") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) replaceflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) replaceflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"purge") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) purgeflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) purgeflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"trim") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) trimflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) trimflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"add") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) addflag = YESADD; + else if (strcmp(arg[iarg+1],"no") == 0) addflag = NOADD; + else if (strcmp(arg[iarg+1],"keep") == 0) addflag = KEEPADD; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"label") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal read_dump command"); + int type = whichtype(arg[iarg+1]); + int i; + for (i = 0; i < nfield; i++) + if (type == fieldtype[i]) break; + if (i == nfield) error->all(FLERR,"Illegal read_dump command"); + int n = strlen(arg[iarg+2]) + 1; + fieldlabel[i] = new char[n]; + strcpy(fieldlabel[i],arg[iarg+2]); + iarg += 3; + } else if (strcmp(arg[iarg],"scaled") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) scaleflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) scaleflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"wrapped") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) wrapflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) wrapflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"format") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + delete [] readerstyle; + int n = strlen(arg[iarg+1]) + 1; + readerstyle = new char[n]; + strcpy(readerstyle,arg[iarg+1]); + iarg += 2; + break; + } else error->all(FLERR,"Illegal read_dump command"); + } + + if (purgeflag && (replaceflag || trimflag)) + error->all(FLERR,"If read_dump purges it cannot replace or trim"); + if (addflag == KEEPADD && atom->tag_enable == 0) + error->all(FLERR,"Read_dump cannot use 'add keep' without atom IDs"); + + return narg-iarg; +} + +/* ---------------------------------------------------------------------- + check if str is a field argument + if yes, return index of which + if not, return -1 +------------------------------------------------------------------------- */ + +int ReadDump2::whichtype(char *str) +{ + int type = -1; + if (strcmp(str,"id") == 0) type = ID; + else if (strcmp(str,"type") == 0) type = TYPE; + else if (strcmp(str,"x") == 0) type = X; + else if (strcmp(str,"y") == 0) type = Y; + else if (strcmp(str,"z") == 0) type = Z; + else if (strcmp(str,"vx") == 0) type = VX; + else if (strcmp(str,"vy") == 0) type = VY; + else if (strcmp(str,"vz") == 0) type = VZ; + else if (strcmp(str,"q") == 0) type = Q; + else if (strcmp(str,"ix") == 0) type = IX; + else if (strcmp(str,"iy") == 0) type = IY; + else if (strcmp(str,"iz") == 0) type = IZ; + else if (strcmp(str,"fx") == 0) type = FX; + else if (strcmp(str,"fy") == 0) type = FY; + else if (strcmp(str,"fz") == 0) type = FZ; + return type; +} + +/* ---------------------------------------------------------------------- + process each of N atoms in chunk read from dump file + if in replace mode and atom ID matches current atom, + overwrite atom info with fields from dump file + if in add mode and atom ID does not match any current atom, + create new atom with dump file field values, + and assign to a proc in round-robin manner + use round-robin method, b/c atom coords may not be inside simulation box +------------------------------------------------------------------------- */ + +void ReadDump2::process_atoms(int n) +{ + int i,m,ifield,itype; + int xbox,ybox,zbox; + tagint mtag; + + double **x = atom->x; + double **v = atom->v; + double *q = atom->q; + double **f = atom->f; + tagint *tag = atom->tag; + imageint *image = atom->image; + int nlocal = atom->nlocal; + tagint map_tag_max = atom->map_tag_max; + + for (i = 0; i < n; i++) { + ucflag[i] = 0; + + // check if new atom matches one I own + // setting m = -1 forces new atom not to match + // NOTE: atom ID in fields is stored as double, not as ubuf + // so can only cast it to tagint, thus cannot be full 64-bit ID + + mtag = static_cast (fields[i][0]); + if (mtag <= map_tag_max) m = atom->map(mtag); + else m = -1; + if (m < 0 || m >= nlocal) continue; + + ucflag[i] = 1; + uflag[m] = 1; + + if (replaceflag) { + nreplace++; + + // current image flags + + xbox = (image[m] & IMGMASK) - IMGMAX; + ybox = (image[m] >> IMGBITS & IMGMASK) - IMGMAX; + zbox = (image[m] >> IMG2BITS) - IMGMAX; + + // overwrite atom attributes with field info + // start from field 1 since 0 = id, 1 will be skipped if type + + for (ifield = 1; ifield < nfield; ifield++) { + switch (fieldtype[ifield]) { + case X: + x[m][0] = xfield(i,ifield); + break; + case Y: + x[m][1] = yfield(i,ifield); + break; + case Z: + x[m][2] = zfield(i,ifield); + break; + case VX: + v[m][0] = fields[i][ifield]; + break; + case Q: + q[m] = fields[i][ifield]; + break; + case VY: + v[m][1] = fields[i][ifield]; + break; + case VZ: + v[m][2] = fields[i][ifield]; + break; + case IX: + xbox = static_cast (fields[i][ifield]); + break; + case IY: + ybox = static_cast (fields[i][ifield]); + break; + case IZ: + zbox = static_cast (fields[i][ifield]); + break; + case FX: + f[m][0] = fields[i][ifield]; + break; + case FY: + f[m][1] = fields[i][ifield]; + break; + case FZ: + f[m][2] = fields[i][ifield]; + break; + } + } + + // replace image flag in case changed by ix,iy,iz fields or unwrapping + + if (!wrapped) xbox = ybox = zbox = 0; + + image[m] = ((imageint) (xbox + IMGMAX) & IMGMASK) | + (((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) | + (((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS); + } + } + + // create any atoms in chunk that no processor owned + // add atoms in round-robin sequence on processors + // cannot do it geometrically b/c dump coords may not be in simulation box + // check that dump file snapshot has atom type field + + if (addflag == NOADD) return; + + int tflag = 0; + for (ifield = 0; ifield < nfield; ifield++) + if (fieldtype[ifield] == TYPE) tflag = 1; + if (!tflag) + error->all(FLERR,"Cannot add atoms if dump file does not store atom type"); + + MPI_Allreduce(ucflag,ucflag_all,n,MPI_INT,MPI_SUM,world); + + int nlocal_previous = atom->nlocal; + double one[3]; + + for (i = 0; i < n; i++) { + if (ucflag_all[i]) continue; + + // each processor adds every Pth atom + + addproc++; + if (addproc == nprocs) addproc = 0; + if (addproc != me) continue; + + // create type and coord fields from dump file + // coord = 0.0 unless corresponding dump file field was specified + + itype = 0; + one[0] = one[1] = one[2] = 0.0; + for (ifield = 1; ifield < nfield; ifield++) { + switch (fieldtype[ifield]) { + case TYPE: + itype = static_cast (fields[i][ifield]); + break; + case X: + one[0] = xfield(i,ifield); + break; + case Y: + one[1] = yfield(i,ifield); + break; + case Z: + one[2] = zfield(i,ifield); + break; + } + } + + // create the atom on proc that owns it + // reset v,image ptrs in case they are reallocated + + m = atom->nlocal; + atom->avec->create_atom(itype,one); + nadd++; + + tag = atom->tag; + v = atom->v; + q = atom->q; + image = atom->image; + + // set atom attributes from other dump file fields + + xbox = ybox = zbox = 0; + + for (ifield = 0; ifield < nfield; ifield++) { + switch (fieldtype[ifield]) { + case ID: + if (addflag == KEEPADD) + tag[m] = static_cast (fields[i][ifield]); + break; + case VX: + v[m][0] = fields[i][ifield]; + break; + case VY: + v[m][1] = fields[i][ifield]; + break; + case VZ: + v[m][2] = fields[i][ifield]; + break; + case Q: + q[m] = fields[i][ifield]; + break; + case IX: + xbox = static_cast (fields[i][ifield]); + break; + case IY: + ybox = static_cast (fields[i][ifield]); + break; + case IZ: + zbox = static_cast (fields[i][ifield]); + break; + } + + // replace image flag in case changed by ix,iy,iz fields + + image[m] = ((imageint) (xbox + IMGMAX) & IMGMASK) | + (((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) | + (((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS); + } + } + + // init per-atom fix/compute/variable values for created atoms + + atom->data_fix_compute_variable(nlocal_previous,atom->nlocal); +} + +/* ---------------------------------------------------------------------- + delete atoms not flagged as replaced by dump atoms +------------------------------------------------------------------------- */ + +void ReadDump2::delete_atoms() +{ + AtomVec *avec = atom->avec; + int nlocal = atom->nlocal; + + int i = 0; + while (i < nlocal) { + if (uflag[i] == 0) { + avec->copy(nlocal-1,i,1); + uflag[i] = uflag[nlocal-1]; + nlocal--; + ntrim++; + } else i++; + } + + atom->nlocal = nlocal; +} + +/* ---------------------------------------------------------------------- + convert XYZ fields in dump file into absolute, unscaled coordinates + depends on scaled vs unscaled and triclinic vs orthogonal + does not depend on wrapped vs unwrapped +------------------------------------------------------------------------- */ + +double ReadDump2::xfield(int i, int j) +{ + if (!scaled) return fields[i][j]; + else if (!triclinic) return fields[i][j]*xprd + xlo; + else if (dimension == 2) + return xprd*fields[i][j] + xy*fields[i][yindex] + xlo; + return xprd*fields[i][j] + xy*fields[i][yindex] + xz*fields[i][zindex] + xlo; +} + +double ReadDump2::yfield(int i, int j) +{ + if (!scaled) return fields[i][j]; + else if (!triclinic) return fields[i][j]*yprd + ylo; + else if (dimension == 2) return yprd*fields[i][j] + ylo; + return yprd*fields[i][j] + yz*fields[i][zindex] + ylo; +} + +double ReadDump2::zfield(int i, int j) +{ + if (!scaled) return fields[i][j]; + return fields[i][j]*zprd + zlo; +} diff --git a/src/read_dump2.h b/src/read_dump2.h new file mode 100644 index 0000000000..27105860f5 --- /dev/null +++ b/src/read_dump2.h @@ -0,0 +1,172 @@ +/* -*- 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. + + Contributed by Timothy Sirk +------------------------------------------------------------------------- */ + +#ifdef COMMAND_CLASS + +CommandStyle(read_dump2,ReadDump2) + +#else + +#ifndef LMP_READ_DUMP2_H +#define LMP_READ_DUMP2_H + +#include +#include "pointers.h" + +namespace LAMMPS_NS { + +class ReadDump2 : protected Pointers { + public: + ReadDump2(class LAMMPS *); + ~ReadDump2(); + void command(int, char **); + + void store_files(int, char **); + void setup_reader(int, char **); + bigint seek(bigint, int); + void header(int); + bigint next(bigint, bigint, int, int); + void atoms(); + int fields_and_keywords(int, char **); + +private: + int me,nprocs; + FILE *fp; + + int dimension; + int triclinic; + + int nfile; // # of dump files to process + char **files; // list of file names + int currentfile; // currently open file + + int boxflag; // overwrite simulation with dump file box params + int replaceflag,addflag; // flags for processing dump snapshot atoms + int trimflag,purgeflag; + int scaleflag; // user 0/1 if dump file coords are unscaled/scaled + int wrapflag; // user 0/1 if dump file coords are unwrapped/wrapped + char *readerstyle; // style of dump files to read + + int nfield; // # of fields to extract from dump file + int *fieldtype; // type of each field = X,VY,IZ,etc + char **fieldlabel; // user specified label for field + double **fields; // per-atom field values + + int scaled; // 0/1 if dump file coords are unscaled/scaled + int wrapped; // 0/1 if dump file coords are unwrapped/wrapped + + double box[3][3]; // dump file box parameters + double xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz; // dump snapshot box params + double xprd,yprd,zprd; + + bigint nsnapatoms; // # of atoms in dump file shapshot + + int npurge,nreplace,ntrim,nadd; // stats on processed atoms + int addproc; // proc that should add next atom + int yindex,zindex; // field index for Y,Z coords + + int *uflag; // set to 1 if snapshot atom matches owned atom + int *ucflag,*ucflag_all; // set to 1 if snapshot chunk atom was processed + + class Reader *reader; // class that reads dump file + + int whichtype(char *); + void process_atoms(int); + void delete_atoms(); + + double xfield(int, int); + double yfield(int, int); + double zfield(int, int); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Read_dump command before simulation box is defined + +The read_dump command cannot be used before a read_data, read_restart, +or create_box command. + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Dump file does not contain requested snapshot + +Self-explanatory. + +E: Unknown dump reader style + +The choice of dump reader style via the format keyword is unknown. + +E: No box information in dump, must use 'box no' + +UNDOCUMENTED + +E: Read_dump triclinic status does not match simulation + +Both the dump snapshot and the current LAMMPS simulation must +be using either an orthogonal or triclinic box. + +E: Read_dump field not found in dump file + +Self-explanatory. + +E: Read_dump xyz fields do not have consistent scaling/wrapping + +Self-explanatory. + +E: All read_dump x,y,z fields must be specified for scaled, triclinic coords + +For triclinic boxes and scaled coordinates you must specify all 3 of +the x,y,z fields, else LAMMPS cannot reconstruct the unscaled +coordinates. + +E: Too many total atoms + +See the setting for bigint in the src/lmptype.h file. + +E: Read dump of atom property that isn't allocated + +Self-explanatory. + +E: Duplicate fields in read_dump command + +Self-explanatory. + +E: If read_dump purges it cannot replace or trim + +These operations are not compatible. See the read_dump doc +page for details. + +E: Read_dump cannot use 'add keep' without atom IDs + +UNDOCUMENTED + +E: Cannot add atoms if dump file does not store atom type + +UNDOCUMENTED + +U: No box information in dump. You have to use 'box no' + +Self-explanatory. + +*/ diff --git a/src/read_restart.h b/src/read_restart.h index 8d2547fb10..350d2787f7 100644 --- a/src/read_restart.h +++ b/src/read_restart.h @@ -31,11 +31,13 @@ class ReadRestart : protected Pointers { void command(int, char **); private: - int me,nprocs,nprocs_file,multiproc_file; + int me,nprocs; FILE *fp; - int multiproc; // 0 = proc 0 writes for all - // else # of procs writing files + int multiproc; // 0 = restart file is a single file + // 1 = restart file is parallel (multiple files) + int multiproc_file; // # of parallel files in restart + int nprocs_file; // total # of procs that wrote restart file // MPI-IO values diff --git a/src/reader.cpp b/src/reader.cpp index 22a21812e6..cf344b37b3 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -18,6 +18,8 @@ using namespace LAMMPS_NS; +// only proc 0 calls methods of this class, except for constructor/destructor + /* ---------------------------------------------------------------------- */ Reader::Reader(LAMMPS *lmp) : Pointers(lmp) diff --git a/src/rerun2.cpp b/src/rerun2.cpp new file mode 100644 index 0000000000..1747f63b97 --- /dev/null +++ b/src/rerun2.cpp @@ -0,0 +1,193 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include +#include +#include "rerun2.h" +#include "read_dump2.h" +#include "domain.h" +#include "update.h" +#include "integrate.h" +#include "modify.h" +#include "output.h" +#include "finish.h" +#include "timer.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +Rerun2::Rerun2(LAMMPS *lmp) : Pointers(lmp) {} + +/* ---------------------------------------------------------------------- */ + +void Rerun2::command(int narg, char **arg) +{ + if (domain->box_exist == 0) + error->all(FLERR,"Rerun command before simulation box is defined"); + + if (narg < 2) error->all(FLERR,"Illegal rerun command"); + + // list of dump files = args until a keyword + + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"first") == 0) break; + if (strcmp(arg[iarg],"last") == 0) break; + if (strcmp(arg[iarg],"every") == 0) break; + if (strcmp(arg[iarg],"skip") == 0) break; + if (strcmp(arg[iarg],"start") == 0) break; + if (strcmp(arg[iarg],"stop") == 0) break; + if (strcmp(arg[iarg],"dump") == 0) break; + iarg++; + } + int nfile = iarg; + if (nfile == 0 || nfile == narg) error->all(FLERR,"Illegal rerun command"); + + // parse optional args up until "dump" + // use MAXBIGINT -1 so Output can add 1 to it and still be a big int + + bigint first = 0; + bigint last = MAXBIGINT - 1; + int nevery = 0; + int nskip = 1; + int startflag = 0; + int stopflag = 0; + bigint start = -1; + bigint stop = -1; + + while (iarg < narg) { + if (strcmp(arg[iarg],"first") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal rerun command"); + first = force->bnumeric(FLERR,arg[iarg+1]); + if (first < 0) error->all(FLERR,"Illegal rerun command"); + iarg += 2; + } else if (strcmp(arg[iarg],"last") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal rerun command"); + last = force->bnumeric(FLERR,arg[iarg+1]); + if (last < 0) error->all(FLERR,"Illegal rerun command"); + iarg += 2; + } else if (strcmp(arg[iarg],"every") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal rerun command"); + nevery = force->inumeric(FLERR,arg[iarg+1]); + if (nevery < 0) error->all(FLERR,"Illegal rerun command"); + iarg += 2; + } else if (strcmp(arg[iarg],"skip") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal rerun command"); + nskip = force->inumeric(FLERR,arg[iarg+1]); + if (nskip <= 0) error->all(FLERR,"Illegal rerun command"); + iarg += 2; + } else if (strcmp(arg[iarg],"start") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal rerun command"); + startflag = 1; + start = force->bnumeric(FLERR,arg[iarg+1]); + if (start < 0) error->all(FLERR,"Illegal rerun command"); + iarg += 2; + } else if (strcmp(arg[iarg],"stop") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal rerun command"); + stopflag = 1; + stop = force->bnumeric(FLERR,arg[iarg+1]); + if (stop < 0) error->all(FLERR,"Illegal rerun command"); + iarg += 2; + } else if (strcmp(arg[iarg],"dump") == 0) { + break; + } else error->all(FLERR,"Illegal rerun command"); + } + + int nremain = narg - iarg - 1; + if (nremain <= 0) error->all(FLERR,"Illegal rerun command"); + if (first > last) error->all(FLERR,"Illegal rerun command"); + if (startflag && stopflag && start > stop) + error->all(FLERR,"Illegal rerun command"); + + // pass list of filenames to ReadDump + // along with post-"dump" args and post-"format" args + + ReadDump2 *rd = new ReadDump2(lmp); + + rd->store_files(nfile,arg); + if (nremain) + nremain = rd->fields_and_keywords(nremain,&arg[narg-nremain]); + else nremain = rd->fields_and_keywords(0,NULL); + if (nremain) rd->setup_reader(nremain,&arg[narg-nremain]); + else rd->setup_reader(0,NULL); + + // perform the pseudo run + // invoke lmp->init() only once + // read all relevant snapshots + // use setup_minimal() since atoms are already owned by correct procs + // addstep_compute_all() insures energy/virial computed on every snapshot + + update->whichflag = 1; + + if (startflag) update->beginstep = update->firststep = start; + else update->beginstep = update->firststep = first; + if (stopflag) update->endstep = update->laststep = stop; + else update->endstep = update->laststep = last; + + int firstflag = 1; + int ndump = 0; + + lmp->init(); + + timer->init(); + timer->barrier_start(); + + bigint ntimestep = rd->seek(first,0); + if (ntimestep < 0) + error->all(FLERR,"Rerun dump file does not contain requested snapshot"); + + while (1) { + ndump++; + rd->header(firstflag); + update->reset_timestep(ntimestep); + rd->atoms(); + modify->init(); + update->integrate->setup_minimal(1); + modify->end_of_step(); + if (firstflag) output->setup(); + else if (output->next) output->write(ntimestep); + + firstflag = 0; + ntimestep = rd->next(ntimestep,last,nevery,nskip); + if (stopflag && ntimestep > stop) + error->all(FLERR,"Read rerun dump file timestep > specified stop"); + if (ntimestep < 0) break; + } + + // insure thermo output on last dump timestep + + output->next_thermo = update->ntimestep; + output->write(update->ntimestep); + + timer->barrier_stop(); + + update->integrate->cleanup(); + + // set update->nsteps to ndump for Finish stats to print + + update->nsteps = ndump; + + Finish finish(lmp); + finish.end(1); + + update->whichflag = 0; + update->firststep = update->laststep = 0; + update->beginstep = update->endstep = 0; + + // clean-up + + delete rd; +} diff --git a/src/rerun2.h b/src/rerun2.h new file mode 100644 index 0000000000..fa4e2c49a6 --- /dev/null +++ b/src/rerun2.h @@ -0,0 +1,59 @@ +/* -*- 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 COMMAND_CLASS + +CommandStyle(rerun2,Rerun2) + +#else + +#ifndef LMP_RERUN2_H +#define LMP_RERUN2_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class Rerun2 : protected Pointers { + public: + Rerun2(class LAMMPS *); + void command(int, char **); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Rerun command before simulation box is defined + +The rerun command cannot be used before a read_data, read_restart, or +create_box command. + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Rerun dump file does not contain requested snapshot + +Self-explanatory. + +E: Read rerun dump file timestep > specified stop + +Self-explanatory. + +*/ -- GitLab From 0a4007c55b556d6fd3525bd0666e7e3df401a70b Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 26 Oct 2018 17:37:50 -0600 Subject: [PATCH 021/362] add parallel file read capability to ReadDump --- src/read_dump.cpp | 960 +++++++++++++++++++++++++++++++--------------- src/read_dump.h | 47 ++- src/rerun.cpp | 2 +- 3 files changed, 696 insertions(+), 313 deletions(-) diff --git a/src/read_dump.cpp b/src/read_dump.cpp index 30934f123b..620e84e910 100644 --- a/src/read_dump.cpp +++ b/src/read_dump.cpp @@ -43,8 +43,7 @@ using namespace LAMMPS_NS; -#define CHUNK 1024 -#define EPSILON 1.0e-6 +#define CHUNK 16384 // also in reader_native.cpp @@ -65,17 +64,21 @@ ReadDump::ReadDump(LAMMPS *lmp) : Pointers(lmp) nfile = 0; files = NULL; + nnew = maxnew = 0; nfield = 0; fieldtype = NULL; fieldlabel = NULL; fields = NULL; + buf = NULL; int n = strlen("native") + 1; readerstyle = new char[n]; strcpy(readerstyle,"native"); - reader = NULL; - fp = NULL; + nreader = 0; + readers = NULL; + nsnapatoms = NULL; + clustercomm = MPI_COMM_NULL; } /* ---------------------------------------------------------------------- */ @@ -90,7 +93,13 @@ ReadDump::~ReadDump() delete [] readerstyle; memory->destroy(fields); - delete reader; + memory->destroy(buf); + + for (int i = 0; i < nreader; i++) delete readers[i]; + delete [] readers; + delete [] nsnapatoms; + + MPI_Comm_free(&clustercomm); } /* ---------------------------------------------------------------------- */ @@ -134,13 +143,20 @@ void ReadDump::command(int narg, char **arg) bigint natoms_prev = atom->natoms; atoms(); - if (me == 0) reader->close_file(); + if (filereader) + for (int i = 0; i < nreader; i++) + readers[i]->close_file(); // print out stats - bigint npurge_all,nreplace_all,ntrim_all,nadd_all; + bigint nsnap_all,npurge_all,nreplace_all,ntrim_all,nadd_all; + + bigint tmp = 0; + if (filereader) + for (int i = 0; i < nreader; i++) + tmp += nsnapatoms[i]; + MPI_Allreduce(&tmp,&nsnap_all,1,MPI_LMP_BIGINT,MPI_SUM,world); - bigint tmp; tmp = npurge; MPI_Allreduce(&tmp,&npurge_all,1,MPI_LMP_BIGINT,MPI_SUM,world); tmp = nreplace; @@ -155,7 +171,7 @@ void ReadDump::command(int narg, char **arg) if (me == 0) { if (screen) { fprintf(screen," " BIGINT_FORMAT " atoms before read\n",natoms_prev); - fprintf(screen," " BIGINT_FORMAT " atoms in snapshot\n",nsnapatoms); + fprintf(screen," " BIGINT_FORMAT " atoms in snapshot\n",nsnap_all); fprintf(screen," " BIGINT_FORMAT " atoms purged\n",npurge_all); fprintf(screen," " BIGINT_FORMAT " atoms replaced\n",nreplace_all); fprintf(screen," " BIGINT_FORMAT " atoms trimmed\n",ntrim_all); @@ -164,7 +180,7 @@ void ReadDump::command(int narg, char **arg) } if (logfile) { fprintf(logfile," " BIGINT_FORMAT " atoms before read\n",natoms_prev); - fprintf(logfile," " BIGINT_FORMAT " atoms in snapshot\n",nsnapatoms); + fprintf(logfile," " BIGINT_FORMAT " atoms in snapshot\n",nsnap_all); fprintf(logfile," " BIGINT_FORMAT " atoms purged\n",npurge_all); fprintf(logfile," " BIGINT_FORMAT " atoms replaced\n",nreplace_all); fprintf(logfile," " BIGINT_FORMAT " atoms trimmed\n",ntrim_all); @@ -181,10 +197,22 @@ void ReadDump::store_files(int nstr, char **str) nfile = nstr; files = new char*[nfile]; + // either all or none of files must have '%' wild-card + for (int i = 0; i < nfile; i++) { int n = strlen(str[i]) + 1; files[i] = new char[n]; strcpy(files[i],str[i]); + + if (i == 0) { + if (strchr(files[i],'%')) multiproc = 1; + else multiproc = 0; + } else { + if (multiproc && !strchr(files[i],'%')) + error->all(FLERR,"All read_dump files must be serial or parallel"); + if (!multiproc && strchr(files[i],'%')) + error->all(FLERR,"All read_dump files must be serial or parallel"); + } } } @@ -192,18 +220,47 @@ void ReadDump::store_files(int nstr, char **str) void ReadDump::setup_reader(int narg, char **arg) { - // allocate snapshot field buffer + // setup serial or parallel file reading + // multiproc = 0: only one file to read from, only proc 0 is a reader + // multiproc_nfile >= nprocs: every proc reads one or more files + // multiproc_nfile < nprocs: multiproc_nfile readers, create clusters + // see read_dump.h for explanation of these variables + + if (multiproc == 0) { + nreader = 1; + firstfile = -1; + MPI_Comm_dup(world,&clustercomm); + } else if (multiproc_nfile >= nprocs) { + firstfile = static_cast ((bigint) me * multiproc_nfile/nprocs); + int lastfile = static_cast ((bigint) (me+1) * multiproc_nfile/nprocs); + nreader = lastfile - firstfile; + MPI_Comm_split(world,me,0,&clustercomm); + } else if (multiproc_nfile < nprocs) { + nreader = 1; + int icluster = static_cast ((bigint) me * multiproc_nfile/nprocs); + firstfile = icluster; + MPI_Comm_split(world,icluster,0,&clustercomm); + } - memory->create(fields,CHUNK,nfield,"read_dump:fields"); + MPI_Comm_rank(clustercomm,&me_cluster); + MPI_Comm_size(clustercomm,&nprocs_cluster); + if (me_cluster == 0) filereader = 1; + else filereader = 0; - // create reader class + readers = new Reader*[nreader]; + nsnapatoms = new bigint[nreader]; + + // create Nreader reader classes per reader // match readerstyle to options in style_reader.h if (0) return; // dummy line to enable else-if macro expansion #define READER_CLASS #define ReaderStyle(key,Class) \ - else if (strcmp(readerstyle,#key) == 0) reader = new Class(lmp); + else if (strcmp(readerstyle,#key) == 0) { \ + for (int i = 0; i < nreader; i++) \ + readers[i] = new Class(lmp); \ + } #include "style_reader.h" #undef READER_CLASS @@ -211,9 +268,11 @@ void ReadDump::setup_reader(int narg, char **arg) else error->all(FLERR,"Unknown dump reader style"); - // pass any arguments to reader + // pass any arguments to readers - if (narg > 0) reader->settings(narg,arg); + if (narg > 0 && filereader) + for (int i = 0; i < nreader; i++) + readers[i]->settings(narg,arg); } /* ---------------------------------------------------------------------- @@ -228,6 +287,8 @@ bigint ReadDump::seek(bigint nrequest, int exact) int ifile,eofflag; bigint ntimestep; + // proc 0 finds the timestep in its first reader + if (me == 0) { // exit file loop when dump timestep >= nrequest @@ -235,24 +296,75 @@ bigint ReadDump::seek(bigint nrequest, int exact) for (ifile = 0; ifile < nfile; ifile++) { ntimestep = -1; - reader->open_file(files[ifile]); + if (multiproc) { + char *ptr = strchr(files[ifile],'%'); + char *multiname = new char[strlen(files[ifile]) + 16]; + *ptr = '\0'; + sprintf(multiname,"%s%d%s",files[ifile],0,ptr+1); + *ptr = '%'; + readers[0]->open_file(multiname); + delete [] multiname; + } else readers[0]->open_file(files[ifile]); + while (1) { - eofflag = reader->read_time(ntimestep); + eofflag = readers[0]->read_time(ntimestep); if (eofflag) break; if (ntimestep >= nrequest) break; - reader->skip(); + readers[0]->skip(); } + if (ntimestep >= nrequest) break; - reader->close_file(); + readers[0]->close_file(); } currentfile = ifile; if (ntimestep < nrequest) ntimestep = -1; if (exact && ntimestep != nrequest) ntimestep = -1; - if (ntimestep < 0) reader->close_file(); } + // proc 0 broadcasts timestep and currentfile to all procs + MPI_Bcast(&ntimestep,1,MPI_LMP_BIGINT,0,world); + MPI_Bcast(¤tfile,1,MPI_INT,0,world); + + // if ntimestep < 0: + // all filereader procs close all their files and return + + if (ntimestep < 0) { + if (filereader) + for (int i = 0; i < nreader; i++) + readers[i]->close_file(); + return ntimestep; + } + + // for multiproc mode: + // all filereader procs search for same ntimestep in currentfile + + if (multiproc && filereader) { + for (int i = 0; i < nreader; i++) { + if (me == 0 && i == 0) continue; // proc 0, reader 0 already found it + char *ptr = strchr(files[currentfile],'%'); + char *multiname = new char[strlen(files[currentfile]) + 16]; + *ptr = '\0'; + sprintf(multiname,"%s%d%s",files[currentfile],firstfile+i,ptr+1); + *ptr = '%'; + readers[i]->open_file(multiname); + delete [] multiname; + + bigint step; + while (1) { + eofflag = readers[i]->read_time(step); + if (eofflag) break; + if (step == ntimestep) break; + readers[i]->skip(); + } + + if (eofflag) + error->one(FLERR,"Read dump parallel files " + "do not all have same timestep"); + } + } + return ntimestep; } @@ -270,6 +382,8 @@ bigint ReadDump::next(bigint ncurrent, bigint nlast, int nevery, int nskip) int ifile,eofflag; bigint ntimestep; + // proc 0 finds the timestep in its first reader + if (me == 0) { // exit file loop when dump timestep matches all criteria @@ -279,19 +393,34 @@ bigint ReadDump::next(bigint ncurrent, bigint nlast, int nevery, int nskip) for (ifile = currentfile; ifile < nfile; ifile++) { ntimestep = -1; - if (ifile != currentfile) reader->open_file(files[ifile]); + if (ifile != currentfile) { + if (multiproc) { + char *ptr = strchr(files[ifile],'%'); + char *multiname = new char[strlen(files[ifile]) + 16]; + *ptr = '\0'; + sprintf(multiname,"%s%d%s",files[ifile],0,ptr+1); + *ptr = '%'; + readers[0]->open_file(multiname); + delete [] multiname; + } else readers[0]->open_file(files[ifile]); + } + while (1) { - eofflag = reader->read_time(ntimestep); - if (iskip == nskip) iskip = 0; - iskip++; + eofflag = readers[0]->read_time(ntimestep); if (eofflag) break; - if (ntimestep <= ncurrent) break; if (ntimestep > nlast) break; - if (nevery && ntimestep % nevery) reader->skip(); - else if (iskip < nskip) reader->skip(); + if (ntimestep <= ncurrent) { + readers[0]->skip(); + continue; + } + if (iskip == nskip) iskip = 0; + iskip++; + if (nevery && ntimestep % nevery) readers[0]->skip(); + else if (iskip < nskip) readers[0]->skip(); else break; } - if (eofflag) reader->close_file(); + + if (eofflag) readers[0]->close_file(); else break; } @@ -299,10 +428,50 @@ bigint ReadDump::next(bigint ncurrent, bigint nlast, int nevery, int nskip) if (eofflag) ntimestep = -1; if (ntimestep <= ncurrent) ntimestep = -1; if (ntimestep > nlast) ntimestep = -1; - if (ntimestep < 0) reader->close_file(); } + // proc 0 broadcasts timestep and currentfile to all procs + MPI_Bcast(&ntimestep,1,MPI_LMP_BIGINT,0,world); + MPI_Bcast(¤tfile,1,MPI_INT,0,world); + + // if ntimestep < 0: + // all filereader procs close all their files and return + + if (ntimestep < 0) { + for (int i = 0; i < nreader; i++) + readers[i]->close_file(); + return ntimestep; + } + + // for multiproc mode: + // all filereader procs search for same ntimestep in currentfile + + if (multiproc && filereader) { + for (int i = 0; i < nreader; i++) { + if (me == 0 && i == 0) continue; + char *ptr = strchr(files[currentfile],'%'); + char *multiname = new char[strlen(files[currentfile]) + 16]; + *ptr = '\0'; + sprintf(multiname,"%s%d%s",files[currentfile],firstfile+i,ptr+1); + *ptr = '%'; + readers[i]->open_file(multiname); + delete [] multiname; + + bigint step; + while (1) { + eofflag = readers[i]->read_time(step); + if (eofflag) break; + if (step == ntimestep) break; + readers[i]->skip(); + } + + if (eofflag) + error->one(FLERR,"Read dump parallel files " + "do not all have same timestep"); + } + } + return ntimestep; } @@ -316,15 +485,17 @@ void ReadDump::header(int fieldinfo) int triclinic_snap; int fieldflag,xflag,yflag,zflag; - if (me == 0) - nsnapatoms = reader->read_header(box,triclinic_snap, - fieldinfo,nfield,fieldtype,fieldlabel, - scaleflag,wrapflag,fieldflag, - xflag,yflag,zflag); + if (filereader) { + for (int i = 0; i < nreader; i++) + nsnapatoms[i] = readers[i]->read_header(box,triclinic_snap,fieldinfo, + nfield,fieldtype,fieldlabel, + scaleflag,wrapflag,fieldflag, + xflag,yflag,zflag); + } - MPI_Bcast(&nsnapatoms,1,MPI_LMP_BIGINT,0,world); - MPI_Bcast(&triclinic_snap,1,MPI_INT,0,world); - MPI_Bcast(&box[0][0],9,MPI_DOUBLE,0,world); + MPI_Bcast(nsnapatoms,nreader,MPI_LMP_BIGINT,0,clustercomm); + MPI_Bcast(&triclinic_snap,1,MPI_INT,0,clustercomm); + MPI_Bcast(&box[0][0],9,MPI_DOUBLE,0,clustercomm); // local copy of snapshot box parameters // used in xfield,yfield,zfield when converting dump atom to absolute coords @@ -358,10 +529,10 @@ void ReadDump::header(int fieldinfo) if (!fieldinfo) return; - MPI_Bcast(&fieldflag,1,MPI_INT,0,world); - MPI_Bcast(&xflag,1,MPI_INT,0,world); - MPI_Bcast(&yflag,1,MPI_INT,0,world); - MPI_Bcast(&zflag,1,MPI_INT,0,world); + MPI_Bcast(&fieldflag,1,MPI_INT,0,clustercomm); + MPI_Bcast(&xflag,1,MPI_INT,0,clustercomm); + MPI_Bcast(&yflag,1,MPI_INT,0,clustercomm); + MPI_Bcast(&zflag,1,MPI_INT,0,clustercomm); // error check on current vs new box and fields // triclinic_snap < 0 means no box info in file @@ -430,7 +601,9 @@ void ReadDump::header(int fieldinfo) } } -/* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + read and process one snapshot of atoms +------------------------------------------------------------------------- */ void ReadDump::atoms() { @@ -447,8 +620,23 @@ void ReadDump::atoms() atom->natoms = 0; } - // to match existing atoms to dump atoms: + // read all the snapshot atoms into fields + // each proc will own an arbitrary subset of atoms + + read_atoms(); + + // migrate old owned atoms to new procs based on atom IDs + // not necessary if purged all old atoms or if only 1 proc + + if (!purgeflag && nprocs > 1) migrate_old_atoms(); + + // migrate new snapshot atoms to same new procs based on atom IDs + // not necessary if purged all old atoms or if only 1 proc + + if (!purgeflag && nprocs > 1) migrate_new_atoms(); + // must build map if not a molecular system + // this will be needed to match new atoms to old atoms int mapflag = 0; if (atom->map_style == 0) { @@ -457,52 +645,14 @@ void ReadDump::atoms() atom->map_set(); } - // uflag[i] = 1 for each owned atom appearing in dump - // ucflag = similar flag for each chunk atom, used in process_atoms() + // each proc now owns both old and new info for same subset of atoms + // update each local atom with new info - int nlocal = atom->nlocal; - memory->create(uflag,nlocal,"read_dump:uflag"); - for (int i = 0; i < nlocal; i++) uflag[i] = 0; - memory->create(ucflag,CHUNK,"read_dump:ucflag"); - memory->create(ucflag_all,CHUNK,"read_dump:ucflag"); - - // read, broadcast, and process atoms from snapshot in chunks - - addproc = -1; - - int nchunk; - bigint nread = 0; - while (nread < nsnapatoms) { - nchunk = MIN(nsnapatoms-nread,CHUNK); - if (me == 0) reader->read_atoms(nchunk,nfield,fields); - MPI_Bcast(&fields[0][0],nchunk*nfield,MPI_DOUBLE,0,world); - process_atoms(nchunk); - nread += nchunk; - } + process_atoms(); - // if addflag = YESADD, assign IDs to new snapshot atoms - - if (addflag == YESADD) { - bigint nblocal = atom->nlocal; - MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); - if (atom->natoms < 0 || atom->natoms >= MAXBIGINT) - error->all(FLERR,"Too many total atoms"); - if (atom->tag_enable) atom->tag_extend(); - } - - // if trimflag set, delete atoms not replaced by snapshot atoms - - if (trimflag) { - delete_atoms(); - bigint nblocal = atom->nlocal; - MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); - } - - // can now delete uflag arrays + // check that atom IDs are valid - memory->destroy(uflag); - memory->destroy(ucflag); - memory->destroy(ucflag_all); + atom->tag_check(); // delete atom map if created it above // else reinitialize map for current atoms @@ -543,209 +693,152 @@ void ReadDump::atoms() domain->set_local_box(); } - // move atoms back inside simulation box and to new processors - // use remap() instead of pbc() in case atoms moved a long distance - // adjust image flags of all atoms (old and new) based on current box - // use irregular() in case atoms moved a long distance - - double **x = atom->x; - imageint *image = atom->image; - nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]); - - if (triclinic) domain->x2lamda(atom->nlocal); - domain->reset_box(); - Irregular *irregular = new Irregular(lmp); - irregular->migrate_atoms(1); - delete irregular; - if (triclinic) domain->lamda2x(atom->nlocal); + // migrate atoms to their new owing proc, based on atom coords - // check that atom IDs are valid - - atom->tag_check(); + migrate_atoms_by_coords(); } /* ---------------------------------------------------------------------- - process arg list for dump file fields and optional keywords + read all the snapshot atoms into fields + done in different ways for multiproc no/yes and # of procs < or >= nprocs + nnew = # of snapshot atoms this proc stores ------------------------------------------------------------------------- */ -int ReadDump::fields_and_keywords(int narg, char **arg) +void ReadDump::read_atoms() { - // per-field vectors, leave space for ID and TYPE - - fieldtype = new int[narg+2]; - fieldlabel = new char*[narg+2]; - - // add id and type fields as needed - // scan ahead to see if "add yes/keep" keyword/value is used - // requires extra "type" field from from dump file - - int iarg; - for (iarg = 0; iarg < narg; iarg++) - if (strcmp(arg[iarg],"add") == 0) - if (iarg < narg-1 && (strcmp(arg[iarg+1],"yes") == 0 || - strcmp(arg[iarg+1],"keep") == 0)) break; - - nfield = 0; - fieldtype[nfield++] = ID; - if (iarg < narg) fieldtype[nfield++] = TYPE; - - // parse fields - - iarg = 0; - while (iarg < narg) { - int type = whichtype(arg[iarg]); - if (type < 0) break; - if (type == Q && !atom->q_flag) - error->all(FLERR,"Read dump of atom property that isn't allocated"); - fieldtype[nfield++] = type; - iarg++; - } - - // check for no fields - - if (fieldtype[nfield-1] == ID || fieldtype[nfield-1] == TYPE) - error->all(FLERR,"Illegal read_dump command"); - - if (dimension == 2) { - for (int i = 0; i < nfield; i++) - if (fieldtype[i] == Z || fieldtype[i] == VZ || - fieldtype[i] == IZ || fieldtype[i] == FZ) - error->all(FLERR,"Illegal read_dump command"); - } - - for (int i = 0; i < nfield; i++) - for (int j = i+1; j < nfield; j++) - if (fieldtype[i] == fieldtype[j]) - error->all(FLERR,"Duplicate fields in read_dump command"); - - // parse optional args + int count,nread,nsend,nrecv,otherproc; + bigint nsnap,ntotal,ofirst,olast,rfirst,rlast,lo,hi; + MPI_Request request; + MPI_Status status; + + // one reader per cluster of procs + // each reading proc reads one file and splits data across cluster + // cluster can be all procs or a subset + + if (!multiproc || multiproc_nfile < nprocs) { + nsnap = nsnapatoms[0]; + + if (filereader) { + if (!buf) memory->create(buf,CHUNK,nfield,"read_dump:buf"); + + otherproc = 0; + ofirst = (bigint) otherproc * nsnap/nprocs_cluster; + olast = (bigint) (otherproc+1) * nsnap/nprocs_cluster; + if (olast-ofirst > MAXSMALLINT) + error->one(FLERR,"Read dump snapshot is too large for a proc"); + nnew = static_cast (olast - ofirst); + + if (nnew > maxnew || maxnew == 0) { + memory->destroy(fields); + maxnew = MAX(nnew,1); // avoid NULL ptr + memory->create(fields,maxnew,nfield,"read_dump:fields"); + } - boxflag = 1; - replaceflag = 1; - purgeflag = 0; - trimflag = 0; - addflag = NOADD; - for (int i = 0; i < nfield; i++) fieldlabel[i] = NULL; - scaleflag = 0; - wrapflag = 1; + ntotal = 0; + while (ntotal < nsnap) { + nread = MIN(CHUNK,nsnap-ntotal); + readers[0]->read_atoms(nread,nfield,buf); + rfirst = ntotal; + rlast = ntotal + nread; + + nsend = 0; + while (nsend < nread) { + lo = MAX(ofirst,rfirst); + hi = MIN(olast,rlast); + if (otherproc) // send to otherproc or copy to self + MPI_Send(&buf[nsend][0],(hi-lo)*nfield,MPI_DOUBLE, + otherproc,0,clustercomm); + else + memcpy(&fields[rfirst][0],&buf[nsend][0], + (hi-lo)*nfield*sizeof(double)); + nsend += hi-lo; + if (hi == olast) { + otherproc++; + ofirst = (bigint) otherproc * nsnap/nprocs_cluster; + olast = (bigint) (otherproc+1) * nsnap/nprocs_cluster; + } + } - while (iarg < narg) { - if (strcmp(arg[iarg],"box") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) boxflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) boxflag = 0; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"replace") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) replaceflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) replaceflag = 0; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"purge") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) purgeflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) purgeflag = 0; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"trim") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) trimflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) trimflag = 0; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"add") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) addflag = YESADD; - else if (strcmp(arg[iarg+1],"no") == 0) addflag = NOADD; - else if (strcmp(arg[iarg+1],"keep") == 0) addflag = KEEPADD; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"label") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal read_dump command"); - int type = whichtype(arg[iarg+1]); - int i; - for (i = 0; i < nfield; i++) - if (type == fieldtype[i]) break; - if (i == nfield) error->all(FLERR,"Illegal read_dump command"); - int n = strlen(arg[iarg+2]) + 1; - fieldlabel[i] = new char[n]; - strcpy(fieldlabel[i],arg[iarg+2]); - iarg += 3; - } else if (strcmp(arg[iarg],"scaled") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) scaleflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) scaleflag = 0; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"wrapped") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - if (strcmp(arg[iarg+1],"yes") == 0) wrapflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) wrapflag = 0; - else error->all(FLERR,"Illegal read_dump command"); - iarg += 2; - } else if (strcmp(arg[iarg],"format") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); - delete [] readerstyle; - int n = strlen(arg[iarg+1]) + 1; - readerstyle = new char[n]; - strcpy(readerstyle,arg[iarg+1]); - iarg += 2; - break; - } else error->all(FLERR,"Illegal read_dump command"); - } + ntotal += nread; + } - if (purgeflag && (replaceflag || trimflag)) - error->all(FLERR,"If read_dump purges it cannot replace or trim"); - if (addflag == KEEPADD && atom->tag_enable == 0) - error->all(FLERR,"Read_dump cannot use 'add keep' without atom IDs"); + } else { + ofirst = (bigint) me_cluster * nsnap/nprocs_cluster; + olast = (bigint) (me_cluster+1) * nsnap/nprocs_cluster; + if (olast-ofirst > MAXSMALLINT) + error->one(FLERR,"Read dump snapshot is too large for a proc"); + nnew = static_cast (olast - ofirst); + if (nnew > maxnew || maxnew == 0) { + memory->destroy(fields); + maxnew = MAX(nnew,1); // avoid NULL ptr + memory->create(fields,maxnew,nfield,"read_dump:fields"); + } - return narg-iarg; -} + nrecv = 0; + while (nrecv < nnew) { + MPI_Irecv(&fields[nrecv][0],(nnew-nrecv)*nfield,MPI_DOUBLE,0,0, + clustercomm,&request); + MPI_Wait(&request,&status); + MPI_Get_count(&status,MPI_DOUBLE,&count); + nrecv += count/nfield; + } + } -/* ---------------------------------------------------------------------- - check if str is a field argument - if yes, return index of which - if not, return -1 -------------------------------------------------------------------------- */ + // every proc is a filereader, reads one or more files + // each proc keeps all data it reads, no communication required + + } else if (multiproc_nfile >= nprocs) { + bigint sum = 0; + for (int i = 0; i < nreader; i++) + sum += nsnapatoms[i]; + if (sum > MAXSMALLINT) + error->one(FLERR,"Read dump snapshot is too large for a proc"); + nnew = static_cast (sum); + if (nnew > maxnew || maxnew == 0) { + memory->destroy(fields); + maxnew = MAX(nnew,1); // avoid NULL ptr + memory->create(fields,maxnew,nfield,"read_dump:fields"); + } -int ReadDump::whichtype(char *str) -{ - int type = -1; - if (strcmp(str,"id") == 0) type = ID; - else if (strcmp(str,"type") == 0) type = TYPE; - else if (strcmp(str,"x") == 0) type = X; - else if (strcmp(str,"y") == 0) type = Y; - else if (strcmp(str,"z") == 0) type = Z; - else if (strcmp(str,"vx") == 0) type = VX; - else if (strcmp(str,"vy") == 0) type = VY; - else if (strcmp(str,"vz") == 0) type = VZ; - else if (strcmp(str,"q") == 0) type = Q; - else if (strcmp(str,"ix") == 0) type = IX; - else if (strcmp(str,"iy") == 0) type = IY; - else if (strcmp(str,"iz") == 0) type = IZ; - else if (strcmp(str,"fx") == 0) type = FX; - else if (strcmp(str,"fy") == 0) type = FY; - else if (strcmp(str,"fz") == 0) type = FZ; - return type; + nnew = 0; + for (int i = 0; i < nreader; i++) { + nsnap = nsnapatoms[i]; + ntotal = 0; + while (ntotal < nsnap) { + nread = MIN(CHUNK,nsnap-ntotal); + readers[i]->read_atoms(nread,nfield,&fields[nnew+ntotal]); + ntotal += nread; + } + nnew += nsnap; + } + } } /* ---------------------------------------------------------------------- - process each of N atoms in chunk read from dump file + update info for each old atom I own based on snapshot info if in replace mode and atom ID matches current atom, overwrite atom info with fields from dump file - if in add mode and atom ID does not match any current atom, - create new atom with dump file field values, - and assign to a proc in round-robin manner - use round-robin method, b/c atom coords may not be inside simulation box + if in add mode and atom ID does not match any old atom, + create new atom with dump file field values ------------------------------------------------------------------------- */ -void ReadDump::process_atoms(int n) +void ReadDump::process_atoms() { int i,m,ifield,itype; int xbox,ybox,zbox; tagint mtag; + int *updateflag,*newflag; + + // updateflag[i] = flag for old atoms, 1 if updated, else 0 + // newflag[i] = flag for new atoms, 0 if used to update old atom, else 1 + + int nlocal = atom->nlocal; + memory->create(updateflag,nlocal,"read_dump:updateflag"); + for (int i = 0; i < nlocal; i++) updateflag[i] = 0; + memory->create(newflag,nnew,"read_dump:newflag"); + for (int i = 0; i < nnew; i++) newflag[i] = 1; + + // loop over new atoms double **x = atom->x; double **v = atom->v; @@ -753,11 +846,9 @@ void ReadDump::process_atoms(int n) double **f = atom->f; tagint *tag = atom->tag; imageint *image = atom->image; - int nlocal = atom->nlocal; tagint map_tag_max = atom->map_tag_max; - for (i = 0; i < n; i++) { - ucflag[i] = 0; + for (i = 0; i < nnew; i++) { // check if new atom matches one I own // setting m = -1 forces new atom not to match @@ -769,8 +860,8 @@ void ReadDump::process_atoms(int n) else m = -1; if (m < 0 || m >= nlocal) continue; - ucflag[i] = 1; - uflag[m] = 1; + updateflag[m] = 1; + newflag[i] = 0; if (replaceflag) { nreplace++; @@ -838,12 +929,39 @@ void ReadDump::process_atoms(int n) } } - // create any atoms in chunk that no processor owned - // add atoms in round-robin sequence on processors - // cannot do it geometrically b/c dump coords may not be in simulation box - // check that dump file snapshot has atom type field + // if trimflag set, delete atoms not updated by snapshot atoms - if (addflag == NOADD) return; + if (trimflag) { + AtomVec *avec = atom->avec; + + int i = 0; + while (i < nlocal) { + if (!updateflag[i]) { + avec->copy(nlocal-1,i,1); + updateflag[i] = updateflag[nlocal-1]; + nlocal--; + ntrim++; + } else i++; + } + + atom->nlocal = nlocal; + bigint nblocal = atom->nlocal; + MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); + } + + // done if cannot add new atoms + + if (addflag == NOADD) { + memory->destroy(updateflag); + memory->destroy(newflag); + return; + } + + // ---------------------------------------------------- + // create new atoms for dump file atoms with ID that matches no old atom + // ---------------------------------------------------- + + // first check that dump file snapshot has atom type field int tflag = 0; for (ifield = 0; ifield < nfield; ifield++) @@ -851,19 +969,11 @@ void ReadDump::process_atoms(int n) if (!tflag) error->all(FLERR,"Cannot add atoms if dump file does not store atom type"); - MPI_Allreduce(ucflag,ucflag_all,n,MPI_INT,MPI_SUM,world); - int nlocal_previous = atom->nlocal; double one[3]; - for (i = 0; i < n; i++) { - if (ucflag_all[i]) continue; - - // each processor adds every Pth atom - - addproc++; - if (addproc == nprocs) addproc = 0; - if (addproc != me) continue; + for (i = 0; i < nnew; i++) { + if (!newflag[i]) continue; // create type and coord fields from dump file // coord = 0.0 unless corresponding dump file field was specified @@ -932,7 +1042,7 @@ void ReadDump::process_atoms(int n) break; } - // replace image flag in case changed by ix,iy,iz fields + // reset image flag in case changed by ix,iy,iz fields image[m] = ((imageint) (xbox + IMGMAX) & IMGMASK) | (((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) | @@ -940,31 +1050,283 @@ void ReadDump::process_atoms(int n) } } + // if addflag = YESADD + // assign consistent IDs to new snapshot atoms across all procs + + if (addflag == YESADD) { + bigint nblocal = atom->nlocal; + MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world); + if (atom->natoms < 0 || atom->natoms >= MAXBIGINT) + error->all(FLERR,"Too many total atoms"); + if (atom->tag_enable) atom->tag_extend(); + } + // init per-atom fix/compute/variable values for created atoms atom->data_fix_compute_variable(nlocal_previous,atom->nlocal); + + // free allocated vectors + + memory->destroy(updateflag); + memory->destroy(newflag); + } /* ---------------------------------------------------------------------- - delete atoms not flagged as replaced by dump atoms + migrate old atoms to new procs based on atom IDs + use migrate_atoms() with explicit processor assignments ------------------------------------------------------------------------- */ -void ReadDump::delete_atoms() +void ReadDump::migrate_old_atoms() { - AtomVec *avec = atom->avec; + tagint *tag = atom->tag; int nlocal = atom->nlocal; - int i = 0; - while (i < nlocal) { - if (uflag[i] == 0) { - avec->copy(nlocal-1,i,1); - uflag[i] = uflag[nlocal-1]; - nlocal--; - ntrim++; - } else i++; + int *procassign; + memory->create(procassign,nlocal,"read_dump:procassign"); + for (int i = 0; i < nlocal; i++) + procassign[i] = tag[i] % nprocs; + + Irregular *irregular = new Irregular(lmp); + irregular->migrate_atoms(1,1,procassign); + delete irregular; + + memory->destroy(procassign); +} + +/* ---------------------------------------------------------------------- + migrate new atoms to same new procs based on atom IDs +------------------------------------------------------------------------- */ + +void ReadDump::migrate_new_atoms() +{ + tagint mtag; + int *procassign; + double **newfields; + + memory->create(procassign,nnew,"read_dump:procassign"); + for (int i = 0; i < nnew; i++) { + mtag = static_cast (fields[i][0]); + procassign[i] = mtag % nprocs; + } + + Irregular *irregular = new Irregular(lmp); + int nrecv = irregular->create_data(nnew,procassign,1); + int newmaxnew = MAX(nrecv,maxnew); + newmaxnew = MAX(newmaxnew,1); // avoid NULL ptr + memory->create(newfields,newmaxnew,nfield,"read_dump:newfields"); + irregular->exchange_data((char *) &fields[0][0],nfield*sizeof(double), + (char *) &newfields[0][0]); + irregular->destroy_data(); + delete irregular; + + memory->destroy(fields); + memory->destroy(procassign); + + // point fields at newfields + + fields = newfields; + maxnew = newmaxnew; + nnew = nrecv; +} + +/* ---------------------------------------------------------------------- + migrate final atoms to new procs based on atom coords + use migrate_atoms() with implicit processor assignments based on atom coords + move atoms back inside simulation box and to new processors + use remap() instead of pbc() in case atoms moved a long distance + adjust image flags of all atoms (old and new) based on current box +------------------------------------------------------------------------- */ + +void ReadDump::migrate_atoms_by_coords() +{ + double **x = atom->x; + imageint *image = atom->image; + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]); + + if (triclinic) domain->x2lamda(atom->nlocal); + domain->reset_box(); + Irregular *irregular = new Irregular(lmp); + irregular->migrate_atoms(1); + delete irregular; + if (triclinic) domain->lamda2x(atom->nlocal); +} + +/* ---------------------------------------------------------------------- + process arg list for dump file fields and optional keywords +------------------------------------------------------------------------- */ + +int ReadDump::fields_and_keywords(int narg, char **arg) +{ + // per-field vectors, leave space for ID and TYPE + + fieldtype = new int[narg+2]; + fieldlabel = new char*[narg+2]; + + // add id and type fields as needed + // scan ahead to see if "add yes/keep" keyword/value is used + // requires extra "type" field from from dump file + + int iarg; + for (iarg = 0; iarg < narg; iarg++) + if (strcmp(arg[iarg],"add") == 0) + if (iarg < narg-1 && (strcmp(arg[iarg+1],"yes") == 0 || + strcmp(arg[iarg+1],"keep") == 0)) break; + + nfield = 0; + fieldtype[nfield++] = ID; + if (iarg < narg) fieldtype[nfield++] = TYPE; + + // parse fields + + iarg = 0; + while (iarg < narg) { + int type = whichtype(arg[iarg]); + if (type < 0) break; + if (type == Q && !atom->q_flag) + error->all(FLERR,"Read dump of atom property that isn't allocated"); + fieldtype[nfield++] = type; + iarg++; + } + + // check for no fields + + if (fieldtype[nfield-1] == ID || fieldtype[nfield-1] == TYPE) + error->all(FLERR,"Illegal read_dump command"); + + if (dimension == 2) { + for (int i = 0; i < nfield; i++) + if (fieldtype[i] == Z || fieldtype[i] == VZ || + fieldtype[i] == IZ || fieldtype[i] == FZ) + error->all(FLERR,"Illegal read_dump command"); + } + + for (int i = 0; i < nfield; i++) + for (int j = i+1; j < nfield; j++) + if (fieldtype[i] == fieldtype[j]) + error->all(FLERR,"Duplicate fields in read_dump command"); + + // parse optional args + + multiproc_nfile = 0; + boxflag = 1; + replaceflag = 1; + purgeflag = 0; + trimflag = 0; + addflag = NOADD; + for (int i = 0; i < nfield; i++) fieldlabel[i] = NULL; + scaleflag = 0; + wrapflag = 1; + + while (iarg < narg) { + if (strcmp(arg[iarg],"nfile") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + multiproc_nfile = force->inumeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"box") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) boxflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) boxflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"replace") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) replaceflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) replaceflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"purge") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) purgeflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) purgeflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"trim") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) trimflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) trimflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"add") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) addflag = YESADD; + else if (strcmp(arg[iarg+1],"no") == 0) addflag = NOADD; + else if (strcmp(arg[iarg+1],"keep") == 0) addflag = KEEPADD; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"label") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal read_dump command"); + int type = whichtype(arg[iarg+1]); + int i; + for (i = 0; i < nfield; i++) + if (type == fieldtype[i]) break; + if (i == nfield) error->all(FLERR,"Illegal read_dump command"); + int n = strlen(arg[iarg+2]) + 1; + fieldlabel[i] = new char[n]; + strcpy(fieldlabel[i],arg[iarg+2]); + iarg += 3; + } else if (strcmp(arg[iarg],"scaled") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) scaleflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) scaleflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"wrapped") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + if (strcmp(arg[iarg+1],"yes") == 0) wrapflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) wrapflag = 0; + else error->all(FLERR,"Illegal read_dump command"); + iarg += 2; + } else if (strcmp(arg[iarg],"format") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_dump command"); + delete [] readerstyle; + int n = strlen(arg[iarg+1]) + 1; + readerstyle = new char[n]; + strcpy(readerstyle,arg[iarg+1]); + iarg += 2; + break; + } else error->all(FLERR,"Illegal read_dump command"); } - atom->nlocal = nlocal; + if (multiproc == 0 && multiproc_nfile) + error->all(FLERR,"Dump file is not a multi-proc file"); + if (multiproc && multiproc_nfile == 0) + error->all(FLERR,"Dump file is a multi-proc file"); + + if (purgeflag && (replaceflag || trimflag)) + error->all(FLERR,"If read_dump purges it cannot replace or trim"); + if (addflag == KEEPADD && atom->tag_enable == 0) + error->all(FLERR,"Read_dump cannot use 'add keep' without atom IDs"); + + return narg-iarg; +} + +/* ---------------------------------------------------------------------- + check if str is a field argument + if yes, return index of which + if not, return -1 +------------------------------------------------------------------------- */ + +int ReadDump::whichtype(char *str) +{ + int type = -1; + if (strcmp(str,"id") == 0) type = ID; + else if (strcmp(str,"type") == 0) type = TYPE; + else if (strcmp(str,"x") == 0) type = X; + else if (strcmp(str,"y") == 0) type = Y; + else if (strcmp(str,"z") == 0) type = Z; + else if (strcmp(str,"vx") == 0) type = VX; + else if (strcmp(str,"vy") == 0) type = VY; + else if (strcmp(str,"vz") == 0) type = VZ; + else if (strcmp(str,"q") == 0) type = Q; + else if (strcmp(str,"ix") == 0) type = IX; + else if (strcmp(str,"iy") == 0) type = IY; + else if (strcmp(str,"iz") == 0) type = IZ; + else if (strcmp(str,"fx") == 0) type = FX; + else if (strcmp(str,"fy") == 0) type = FY; + else if (strcmp(str,"fz") == 0) type = FZ; + return type; } /* ---------------------------------------------------------------------- diff --git a/src/read_dump.h b/src/read_dump.h index eb70b99808..73cb0a8995 100644 --- a/src/read_dump.h +++ b/src/read_dump.h @@ -22,6 +22,7 @@ CommandStyle(read_dump,ReadDump) #ifndef LMP_READ_DUMP_H #define LMP_READ_DUMP_H +#include #include #include "pointers.h" @@ -43,14 +44,25 @@ class ReadDump : protected Pointers { private: int me,nprocs; - FILE *fp; - int dimension; - int triclinic; + char **files; // list of input dump files to process + int nfile; // # of dump files to process (each may be parallel) + int currentfile; // current open file (0 to nfile-1) + + MPI_Comm clustercomm; // comm for proc cluster that reads/shares a file + int me_cluster,nprocs_cluster; // proc ID and count for my read cluster + + int multiproc; // 0 = each dump file is a single file + // 1 = each dump file is parallel (multiple files) + int multiproc_nfile; // number of parallel files in one dump file - int nfile; // # of dump files to process - char **files; // list of file names - int currentfile; // currently open file + int nreader; // # of parallel dump files read by my cluster + int firstfile; // index of 1st dump file my cluster reads + // (0 to multiproc_nfile-1) + int filereader; // 1 if this proc reads from a dump file(s) + + int dimension; // same as in Domain + int triclinic; int boxflag; // overwrite simulation with dump file box params int replaceflag,addflag; // flags for processing dump snapshot atoms @@ -59,10 +71,13 @@ private: int wrapflag; // user 0/1 if dump file coords are unwrapped/wrapped char *readerstyle; // style of dump files to read + int nnew; // # of dump file atoms this proc owns int nfield; // # of fields to extract from dump file int *fieldtype; // type of each field = X,VY,IZ,etc char **fieldlabel; // user specified label for field double **fields; // per-atom field values + int maxnew; // allocation size of fields array + double **buf; // read buffer int scaled; // 0/1 if dump file coords are unscaled/scaled int wrapped; // 0/1 if dump file coords are unwrapped/wrapped @@ -71,20 +86,26 @@ private: double xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz; // dump snapshot box params double xprd,yprd,zprd; - bigint nsnapatoms; // # of atoms in dump file shapshot + bigint *nsnapatoms; // # of atoms in one snapshot from + // one (parallel) dump file + // nreader-length vector b/c a reader proc + // may read from multiple parallel dump files int npurge,nreplace,ntrim,nadd; // stats on processed atoms - int addproc; // proc that should add next atom int yindex,zindex; // field index for Y,Z coords - int *uflag; // set to 1 if snapshot atom matches owned atom - int *ucflag,*ucflag_all; // set to 1 if snapshot chunk atom was processed + class Reader **readers; // class that reads a dump file + // nreader-length list of readers if proc reads + // from multiple parallel dump files - class Reader *reader; // class that reads dump file + void read_atoms(); + void process_atoms(); + void migrate_old_atoms(); + void migrate_new_atoms(); + void migrate_atoms_by_coords(); + void setup_multiproc(); int whichtype(char *); - void process_atoms(int); - void delete_atoms(); double xfield(int, int); double yfield(int, int); diff --git a/src/rerun.cpp b/src/rerun.cpp index f8a37b5946..063ea882c2 100644 --- a/src/rerun.cpp +++ b/src/rerun.cpp @@ -57,7 +57,7 @@ void Rerun::command(int narg, char **arg) if (nfile == 0 || nfile == narg) error->all(FLERR,"Illegal rerun command"); // parse optional args up until "dump" - // user MAXBIGINT -1 so Output can add 1 to it and still be a big int + // use MAXBIGINT -1 so Output can add 1 to it and still be a big int bigint first = 0; bigint last = MAXBIGINT - 1; -- GitLab From a2671f8943cf15f96555cf4e840ef45f5a5f5d37 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 26 Oct 2018 18:06:34 -0600 Subject: [PATCH 022/362] doc files for new parallel dump file read capability --- doc/src/read_dump.txt | 18 ++++++++++++++---- doc/src/rerun.txt | 25 ++++++++++++++++++------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/doc/src/read_dump.txt b/doc/src/read_dump.txt index db9cfca825..9d2f0a39dc 100644 --- a/doc/src/read_dump.txt +++ b/doc/src/read_dump.txt @@ -22,7 +22,8 @@ field = {x} or {y} or {z} or {vx} or {vy} or {vz} or {q} or {ix} or {iy} or {iz} {ix},{iy},{iz} = image flags in each dimension {fx},{fy},{fz} = force components :pre zero or more keyword/value pairs may be appended :l -keyword = {box} or {replace} or {purge} or {trim} or {add} or {label} or {scaled} or {wrapped} or {format} :l +keyword = {nfile} or {box} or {replace} or {purge} or {trim} or {add} or {label} or {scaled} or {wrapped} or {format} :l + {nfile} value = Nfiles = how many parallel dump files exist {box} value = {yes} or {no} = replace simulation box with dump box {replace} value = {yes} or {no} = overwrite atoms with dump atoms {purge} value = {yes} or {no} = delete all atoms before adding dump atoms @@ -85,9 +86,18 @@ command, after the dump snapshot is read. If the dump filename specified as {file} ends with ".gz", the dump file is read in gzipped format. You cannot (yet) read a dump file -that was written in binary format with a ".bin" suffix, or to multiple -files via the "%" option in the dump file name. See the -"dump"_dump.html command for details. +that was written in binary format with a ".bin" suffix. + +You can read dump files that were written (in parallel) to multiple +files via the "%" wild-card character in the dump file name. If any +specified dump file name contains a "%", they must all contain it. +See the "dump"_dump.html command for details. +The "%" wild-card character is only supported by the {native} format +for dump files, described next. + +If reading parallel dump files, you must also use the {nfile} keyword +to tell LAMMPS how many parallel files exist, via its specified +{Nfiles} value. The format of the dump file is selected through the {format} keyword. If specified, it must be the last keyword used, since all remaining diff --git a/doc/src/rerun.txt b/doc/src/rerun.txt index 71ad464bb0..fa9626dbb2 100644 --- a/doc/src/rerun.txt +++ b/doc/src/rerun.txt @@ -89,12 +89,23 @@ this auxiliary information should be defined in the usual way, e.g. in a data file read in by a "read_data"_read_data.html command, before using the rerun command. +Also note that the frequency of thermodynamic or dump output from the +rerun simulation will depend on settings made in the rerun script, the +same as for output from any LAMMPS simulation. See further info below +as to what that means if the timesteps for snapshots read from dump +files do not match the specified output frequency. + :line If more than one dump file is specified, the dump files are read one after the other. It is assumed that snapshot timesteps will be in ascending order. If a snapshot is encountered that is not in -ascending order, it will cause the rerun command to complete. +ascending order, it will skip the snapshot until it reads one that is. +This allows skipping of a duplicate snapshot (same timestep), +e.g. that appeared at the end of one file and beginning of the next. +However if you specify a series of dump files in an incorrect order +(with respect to the timesteps they contain), you may skip large +numbers of snapshots The {first}, {last}, {every}, {skip} keywords determine which snapshots are read from the dump file(s). Snapshots are skipped until @@ -177,12 +188,12 @@ a timestep it expects to be, LAMMPS will flag an error. The various forms of LAMMPS output, as defined by the "thermo_style"_thermo_style.html, "thermo"_thermo.html, -"dump"_dump.html, and "restart"_restart.html commands occur on -specific timesteps. If successive dump snapshots skip those -timesteps, then no output will be produced. E.g. if you request -thermodynamic output every 100 steps, but the dump file snapshots are -every 1000 steps, then you will only see thermodynamic output every -1000 steps. +"dump"_dump.html, and "restart"_restart.html commands occur with +specified frequency, e.g. every N steps. If the timestep for a dump +snapshot is not a multiple of N, then it will be read and processed, +but no output will be produced. If you want output for every dump +snapshot, you can simply use N=1 for an output frequency, e.g. for +thermodyanmic output or new dump file output. :line -- GitLab From f70af61b35d97d3e30c322b606e1b7af03cbb9b9 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 28 Oct 2018 09:27:22 +0000 Subject: [PATCH 023/362] Added new version of Plumed wrapper --- src/USER-PLUMED/Plumed.cpp | 449 +------------------------------------ 1 file changed, 11 insertions(+), 438 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 . +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ -#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 +/* + Do not link plumed directly but rather do it at runtime */ -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 024/362] 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 -- GitLab From a60b6d1ab8a5be3560a4b4361540bcc442bd4bec Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 18:12:32 -0400 Subject: [PATCH 025/362] 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) -- GitLab From 3cc938448818239ec94666ea76780d0c4e709b57 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 28 Oct 2018 16:23:29 -0600 Subject: [PATCH 026/362] 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) -- GitLab From bfbf5695fd2f104af78b33f847d7601bc18989e3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:30:37 -0400 Subject: [PATCH 027/362] 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) -- GitLab From bdf37649057de199bba3d557acba95815a16d1aa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:31:40 -0400 Subject: [PATCH 028/362] 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 -- GitLab From 925d6d37b9d3be6c2b95255657feb3d1bf18bd7c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:32:01 -0400 Subject: [PATCH 029/362] 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" -- GitLab From ae499b980dc12c6ee1e3da0a9ecc48db541ab9c3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:32:47 -0400 Subject: [PATCH 030/362] 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; -- GitLab From 54d728c0c7a09cc562555e708a2d8d0db0d06904 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:33:06 -0400 Subject: [PATCH 031/362] 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 -- GitLab From 3a082e227e4237ae2161b82e74e1800358bdeefa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:33:51 -0400 Subject: [PATCH 032/362] 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 -- GitLab From a662afe97084c4bf0061d2e6ff1793160a87da9b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:37:33 -0400 Subject: [PATCH 033/362] 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) -- GitLab From 360aca581cba306f3d01db66ecb9fdeefe37292b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 21:56:49 -0400 Subject: [PATCH 034/362] 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 -- GitLab From bee2cb96fa473c1afe0a51303b1a459bdde9af9d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 22:18:27 -0400 Subject: [PATCH 035/362] 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 -- GitLab From 25b425dbb017010eb908d71c016e6d5a1aec940d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 28 Oct 2018 22:21:35 -0400 Subject: [PATCH 036/362] 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 -- GitLab From 283096d1d5c5f1e5d11392cff986b19bc016d2a1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 29 Oct 2018 03:50:55 -0400 Subject: [PATCH 037/362] 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 -- GitLab From bcc7a4c32fc1fd29d855d68cda84eed7f9e3c095 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 29 Oct 2018 06:36:47 -0600 Subject: [PATCH 038/362] 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) -- GitLab From 044507640f6fa0ff044f3192a1f1efe5a0688471 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 29 Oct 2018 06:52:19 -0600 Subject: [PATCH 039/362] 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; -- GitLab From 1bae30c295527f9cba86fd1a737653865a943af9 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 29 Oct 2018 06:57:46 -0600 Subject: [PATCH 040/362] 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@ -- GitLab From ba6f6f73f172f936ce7979a4ffac476ca96941d3 Mon Sep 17 00:00:00 2001 From: Morteza Jalalvand Date: Tue, 30 Oct 2018 17:40:00 +0330 Subject: [PATCH 041/362] first commit: added SDPD --- cmake/CMakeLists.txt | 4 +- cmake/presets/all_off.cmake | 2 +- cmake/presets/all_on.cmake | 2 +- cmake/presets/manual_selection.cmake | 1 + cmake/presets/nolib.cmake | 2 +- cmake/presets/std.cmake | 2 +- cmake/presets/std_nolib.cmake | 2 +- cmake/presets/user.cmake | 2 +- doc/src/Commands_fix.txt | 2 + doc/src/Commands_pair.txt | 1 + doc/src/Packages_details.txt | 26 + doc/src/Packages_user.txt | 1 + doc/src/fix.txt | 2 + doc/src/fix_meso_move.txt | 233 ++++ doc/src/fix_rigid_meso.txt | 349 ++++++ doc/src/fixes.txt | 2 + doc/src/lammps.book | 3 + doc/src/pair_sdpd_taitwater_isothermal.txt | 108 ++ doc/src/pair_style.txt | 1 + doc/src/pairs.txt | 1 + .../sdpd/2d-diffusion-in-shear-flow/in.lammps | 61 ++ ...g.24Oct18.2d-diffusion-in-shear-flow.g++.1 | 247 +++++ ...g.24Oct18.2d-diffusion-in-shear-flow.g++.4 | 247 +++++ examples/USER/sdpd/2d-diffusion/in.lammps | 49 + .../log.24Oct18.2d-diffusion.g++.1 | 226 ++++ .../log.24Oct18.2d-diffusion.g++.4 | 226 ++++ examples/USER/sdpd/README | 24 + .../sdpd/equipartition-verification/in.lammps | 45 + .../log.24Oct18.equipartition.g++.1 | 146 +++ .../log.24Oct18.equipartition.g++.4 | 146 +++ src/Depend.sh | 1 + src/USER-SDPD/Install.sh | 37 + src/USER-SDPD/README | 13 + src/USER-SDPD/fix_meso_move.cpp | 998 ++++++++++++++++++ src/USER-SDPD/fix_meso_move.h | 127 +++ src/USER-SDPD/fix_rigid_meso.cpp | 500 +++++++++ src/USER-SDPD/fix_rigid_meso.h | 69 ++ .../pair_sdpd_taitwater_isothermal.cpp | 321 ++++++ .../pair_sdpd_taitwater_isothermal.h | 60 ++ 39 files changed, 4281 insertions(+), 8 deletions(-) create mode 100644 doc/src/fix_meso_move.txt create mode 100644 doc/src/fix_rigid_meso.txt create mode 100644 doc/src/pair_sdpd_taitwater_isothermal.txt create mode 100644 examples/USER/sdpd/2d-diffusion-in-shear-flow/in.lammps create mode 100644 examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.1 create mode 100644 examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.4 create mode 100644 examples/USER/sdpd/2d-diffusion/in.lammps create mode 100644 examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.1 create mode 100644 examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.4 create mode 100644 examples/USER/sdpd/README create mode 100644 examples/USER/sdpd/equipartition-verification/in.lammps create mode 100644 examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.1 create mode 100644 examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.4 create mode 100644 src/USER-SDPD/Install.sh create mode 100644 src/USER-SDPD/README create mode 100644 src/USER-SDPD/fix_meso_move.cpp create mode 100644 src/USER-SDPD/fix_meso_move.h create mode 100644 src/USER-SDPD/fix_rigid_meso.cpp create mode 100644 src/USER-SDPD/fix_rigid_meso.h create mode 100644 src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp create mode 100644 src/USER-SDPD/pair_sdpd_taitwater_isothermal.h diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b3c0a70e4a..a334ba0368 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -171,8 +171,8 @@ 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-PTM USER-QTB USER-REAXC USER-SCAFACOS USER-SDPD 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}) diff --git a/cmake/presets/all_off.cmake b/cmake/presets/all_off.cmake index f7e90ddbb4..9021dedc08 100644 --- a/cmake/presets/all_off.cmake +++ b/cmake/presets/all_off.cmake @@ -8,7 +8,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA 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-QMMM USER-QTB - USER-QUIP USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY + USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK) set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI diff --git a/cmake/presets/all_on.cmake b/cmake/presets/all_on.cmake index 2c6f67904e..ef17e38914 100644 --- a/cmake/presets/all_on.cmake +++ b/cmake/presets/all_on.cmake @@ -8,7 +8,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA 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-QMMM USER-QTB - USER-QUIP USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY + USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK) set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI diff --git a/cmake/presets/manual_selection.cmake b/cmake/presets/manual_selection.cmake index 6c03d983f6..35a45a5c87 100644 --- a/cmake/presets/manual_selection.cmake +++ b/cmake/presets/manual_selection.cmake @@ -61,6 +61,7 @@ set(PKG_USER-QMMM OFF CACHE BOOL "" FORCE) set(PKG_USER-QTB OFF CACHE BOOL "" FORCE) set(PKG_USER-QUIP OFF CACHE BOOL "" FORCE) set(PKG_USER-REAXC OFF CACHE BOOL "" FORCE) +set(PKG_USER-SDPD OFF CACHE BOOL "" FORCE) set(PKG_USER-SMD OFF CACHE BOOL "" FORCE) set(PKG_USER-SMTBQ OFF CACHE BOOL "" FORCE) set(PKG_USER-SPH OFF CACHE BOOL "" FORCE) diff --git a/cmake/presets/nolib.cmake b/cmake/presets/nolib.cmake index cd603aa804..54db12a851 100644 --- a/cmake/presets/nolib.cmake +++ b/cmake/presets/nolib.cmake @@ -8,7 +8,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA 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-QMMM USER-QTB - USER-QUIP USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY + USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK) set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI diff --git a/cmake/presets/std.cmake b/cmake/presets/std.cmake index 36da897957..4176aba44e 100644 --- a/cmake/presets/std.cmake +++ b/cmake/presets/std.cmake @@ -8,7 +8,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA 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-QMMM USER-QTB - USER-QUIP USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY + USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK) set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI diff --git a/cmake/presets/std_nolib.cmake b/cmake/presets/std_nolib.cmake index 9bffefcbe0..aa067f2ba0 100644 --- a/cmake/presets/std_nolib.cmake +++ b/cmake/presets/std_nolib.cmake @@ -8,7 +8,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA 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-QMMM USER-QTB - USER-QUIP USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY + USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK) set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI diff --git a/cmake/presets/user.cmake b/cmake/presets/user.cmake index cb81b67558..afb030d3d6 100644 --- a/cmake/presets/user.cmake +++ b/cmake/presets/user.cmake @@ -8,7 +8,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA 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-QMMM USER-QTB - USER-QUIP USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY + USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK) set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI diff --git a/doc/src/Commands_fix.txt b/doc/src/Commands_fix.txt index 4144c7eb90..77684390bd 100644 --- a/doc/src/Commands_fix.txt +++ b/doc/src/Commands_fix.txt @@ -94,6 +94,7 @@ OPT. "lineforce"_fix_lineforce.html, "manifoldforce"_fix_manifoldforce.html, "meso"_fix_meso.html, +"meso/move"_fix_meso_move.html, "meso/stationary"_fix_meso_stationary.html, "momentum (k)"_fix_momentum.html, "move"_fix_move.html, @@ -172,6 +173,7 @@ OPT. "restrain"_fix_restrain.html, "rhok"_fix_rhok.html, "rigid (o)"_fix_rigid.html, +"rigid/meso"_fix_rigid_meso.html, "rigid/nph (o)"_fix_rigid.html, "rigid/nph/small"_fix_rigid.html, "rigid/npt (o)"_fix_rigid.html, diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt index a74574367c..7af2cc9bae 100644 --- a/doc/src/Commands_pair.txt +++ b/doc/src/Commands_pair.txt @@ -198,6 +198,7 @@ OPT. "reax/c (ko)"_pair_reaxc.html, "rebo (io)"_pair_airebo.html, "resquared (go)"_pair_resquared.html, +"sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html, "smd/hertz"_pair_smd_hertz.html, "smd/tlsph"_pair_smd_tlsph.html, "smd/tri_surface"_pair_smd_triangulated_surface.html, diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 031858e846..be9006316a 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -95,6 +95,7 @@ as contained in the file name. "USER-QUIP"_#PKG-USER-QUIP, "USER-REAXC"_#PKG-USER-REAXC, "USER-SCAFACOS"_#PKG-USER-SCAFACOS, +"USER-SDPD"_#PKG-USER-SDPD, "USER-SMD"_#PKG-USER-SMD, "USER-SMTBQ"_#PKG-USER-SMTBQ, "USER-SPH"_#PKG-USER-SPH, @@ -1916,6 +1917,31 @@ examples/USER/scafacos :ul :line +USER-SDPD package :link(PKG-USER-SDPD),h4 + +[Contents:] + +A pair style for smoothed dissipative particle dynamics (SDPD), which +is an extension of smoothed particle hydrodynamics (SPH) to mesoscale +where thermal fluctuations are important (see the +"USER-SPH package"_#PKG-USER-SPH). +Also two fixes for moving and rigid body integration of SPH/SDPD particles +(particles of atom_style meso). + +[Author:] Morteza Jalalvand (Institute for Advanced Studies in Basic +Sciences, Iran). + +[Supporting info:] + +src/USER-SDPD: filenames -> commands +src/USER-SDPD/README +"pair_style sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html +"fix meso/move"_fix_meso_move.html +"fix rigid/meso"_fix_rigid_meso.html +examples/USER/sdpd :ul + +:line + USER-SMD package :link(PKG-USER-SMD),h4 [Contents:] diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt index 9bb3fbd18c..e1269b0d0c 100644 --- a/doc/src/Packages_user.txt +++ b/doc/src/Packages_user.txt @@ -68,6 +68,7 @@ Package, Description, Doc page, Example, Library "USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext "USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no "USER-SCAFACOS"_Packages_details.html#PKG-USER-SCAFACOS, wrapper on ScaFaCoS solver,"kspace_style scafacos"_kspace_style.html, USER/scafacos, ext +"USER-SDPD"_Packages_details.html#PKG-USER-SDPD, smoothed dissipative particle dynamics,"pair_style sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal, USER/sdpd, no "USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext "USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no "USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no diff --git a/doc/src/fix.txt b/doc/src/fix.txt index 27cc0467e2..8d00fa987d 100644 --- a/doc/src/fix.txt +++ b/doc/src/fix.txt @@ -237,6 +237,7 @@ accelerated styles exist. "lineforce"_fix_lineforce.html - constrain atoms to move in a line "manifoldforce"_fix_manifoldforce.html - "meso"_fix_meso.html - +"meso"_fix_meso_move.html - move mesoscopic SPH/SDPD particles in a prescribed fashion "meso/stationary"_fix_meso_stationary.html - "momentum"_fix_momentum.html - zero the linear and/or angular momentum of a group of atoms "move"_fix_move.html - move atoms in a prescribed fashion @@ -331,6 +332,7 @@ accelerated styles exist. "rigid/small/npt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPT integration "rigid/small/nve"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with alternate NVE integration "rigid/small/nvt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration +"rigid/meso"_fix_rigid_meso.html - constrain clusters of mesoscopic SPH/SDPD particles to move as a rigid body "rx"_fix_rx.html - "saed/vtk"_fix_saed_vtk.html - "setforce"_fix_setforce.html - set the force on each atom diff --git a/doc/src/fix_meso_move.txt b/doc/src/fix_meso_move.txt new file mode 100644 index 0000000000..0a222e79ed --- /dev/null +++ b/doc/src/fix_meso_move.txt @@ -0,0 +1,233 @@ +"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 meso/move command :h3 + +[Syntax:] + +fix ID group-ID meso/move style args keyword values ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +meso/move = style name of this fix command :l +style = {linear} or {wiggle} or {rotate} or {variable} :l + {linear} args = Vx Vy Vz + Vx,Vy,Vz = components of velocity vector (velocity units), any component can be specified as NULL + {wiggle} args = Ax Ay Az period + Ax,Ay,Az = components of amplitude vector (distance units), any component can be specified as NULL + period = period of oscillation (time units) + {rotate} args = Px Py Pz Rx Ry Rz period + Px,Py,Pz = origin point of axis of rotation (distance units) + Rx,Ry,Rz = axis of rotation vector + period = period of rotation (time units) + {variable} args = v_dx v_dy v_dz v_vx v_vy v_vz + v_dx,v_dy,v_dz = 3 variable names that calculate x,y,z displacement as function of time, any component can be specified as NULL + v_vx,v_vy,v_vz = 3 variable names that calculate x,y,z velocity as function of time, any component can be specified as NULL :pre + +zero or more keyword/value pairs may be appended :l +keyword = {units} :l + {units} value = {box} or {lattice} :pre +:ule + +[Examples:] + +fix 1 boundary meso/move wiggle 3.0 0.0 0.0 1.0 units box +fix 2 boundary meso/move rotate 0.0 0.0 0.0 0.0 0.0 1.0 5.0 +fix 2 boundary meso/move variable v_myx v_myy NULL v_VX v_VY NULL :pre + +[Description:] + +Perform updates of position, velocity, internal energy and local +density for mesoscopic particles in the group each timestep using the +specified settings or formulas, without regard to forces on the +particles. This can be useful for boundary, solid bodies or other +particles, whose movement can influence nearby particles. + +The operation of this fix is exactly like that described by the +"fix move"_fix_move.html command, except that particles' density, +internal energy and extrapolated velocity are also updated. + +NOTE: The particles affected by this fix should not be time integrated +by other fixes (e.g. "fix meso"_fix_meso.html, "fix +meso/stationary"_fix_meso_stationary.html), since that will change their +positions and velocities twice. + +NOTE: As particles move due to this fix, they will pass thru periodic +boundaries and be remapped to the other side of the simulation box, +just as they would during normal time integration (e.g. via the "fix +meso"_fix_meso.html command). It is up to you to decide whether periodic +boundaries are appropriate with the kind of particle motion you are +prescribing with this fix. + +NOTE: As dicsussed below, particles are moved relative to their initial +position at the time the fix is specified. These initial coordinates +are stored by the fix in "unwrapped" form, by using the image flags +associated with each particle. See the "dump custom"_dump.html command +for a discussion of "unwrapped" coordinates. See the Atoms section of +the "read_data"_read_data.html command for a discussion of image flags +and how they are set for each particle. You can reset the image flags +(e.g. to 0) before invoking this fix by using the "set image"_set.html +command. + +:line + +The {linear} style moves particles at a constant velocity, so that their +position {X} = (x,y,z) as a function of time is given in vector +notation as + +X(t) = X0 + V * delta :pre + +where {X0} = (x0,y0,z0) is their position at the time the fix is +specified, {V} is the specified velocity vector with components +(Vx,Vy,Vz), and {delta} is the time elapsed since the fix was +specified. This style also sets the velocity of each particle to V = +(Vx,Vy,Vz). If any of the velocity components is specified as NULL, +then the position and velocity of that component is time integrated +the same as the "fix meso"_fix_meso.html command would perform, using +the corresponding force component on the particle. + +Note that the {linear} style is identical to using the {variable} +style with an "equal-style variable"_variable.html that uses the +vdisplace() function. E.g. + +variable V equal 10.0 +variable x equal vdisplace(0.0,$V) +fix 1 boundary move variable v_x NULL NULL v_V NULL NULL :pre + +The {wiggle} style moves particles in an oscillatory fashion, so that +their position {X} = (x,y,z) as a function of time is given in vector +notation as + +X(t) = X0 + A sin(omega*delta) :pre + +where {X0} = (x0,y0,z0) is their position at the time the fix is +specified, {A} is the specified amplitude vector with components +(Ax,Ay,Az), {omega} is 2 PI / {period}, and {delta} is the time +elapsed since the fix was specified. This style also sets the +velocity of each particle to the time derivative of this expression. +If any of the amplitude components is specified as NULL, then the +position and velocity of that component is time integrated the same as +the "fix meso"_fix_meso.html command would perform, using the +corresponding force component on the particle. + +Note that the {wiggle} style is identical to using the {variable} +style with "equal-style variables"_variable.html that use the +swiggle() and cwiggle() functions. E.g. + +variable A equal 10.0 +variable T equal 5.0 +variable omega equal 2.0*PI/$T +variable x equal swiggle(0.0,$A,$T) +variable v equal v_omega*($A-cwiggle(0.0,$A,$T)) +fix 1 boundary move variable v_x NULL NULL v_v NULL NULL :pre + +The {rotate} style rotates particles around a rotation axis {R} = +(Rx,Ry,Rz) that goes thru a point {P} = (Px,Py,Pz). The {period} of +the rotation is also specified. The direction of rotation for the +particles around the rotation axis is consistent with the right-hand +rule: if your right-hand thumb points along {R}, then your fingers wrap +around the axis in the direction of rotation. + +This style also sets the velocity of each particle to (omega cross +Rperp) where omega is its angular velocity around the rotation axis and +Rperp is a perpendicular vector from the rotation axis to the particle. + +The {variable} style allows the position and velocity components of +each particle to be set by formulas specified via the +"variable"_variable.html command. Each of the 6 variables is +specified as an argument to the fix as v_name, where name is the +variable name that is defined elsewhere in the input script. + +Each variable must be of either the {equal} or {atom} style. +{Equal}-style variables compute a single numeric quantity, that can be +a function of the timestep as well as of other simulation values. +{Atom}-style variables compute a numeric quantity for each particle, that +can be a function per-atom quantities, such as the particle's position, as +well as of the timestep and other simulation values. Note that this +fix stores the original coordinates of each particle (see note below) so +that per-atom quantity can be used in an atom-style variable formula. +See the "variable"_variable.html command for details. + +The first 3 variables (v_dx,v_dy,v_dz) specified for the {variable} +style are used to calculate a displacement from the particle's original +position at the time the fix was specified. The second 3 variables +(v_vx,v_vy,v_vz) specified are used to compute a velocity for each +particle. + +Any of the 6 variables can be specified as NULL. If both the +displacement and velocity variables for a particular x,y,z component +are specified as NULL, then the position and velocity of that +component is time integrated the same as the "fix meso"_fix_meso.html +command would perform, using the corresponding force component on the +particle. If only the velocity variable for a component is specified as +NULL, then the displacement variable will be used to set the position +of the particle, and its velocity component will not be changed. If only +the displacement variable for a component is specified as NULL, then +the velocity variable will be used to set the velocity of the particle, +and the position of the particle will be time integrated using that +velocity. + +The {units} keyword determines the meaning of the distance units used +to define the {linear} velocity and {wiggle} amplitude and {rotate} +origin. This setting is ignored for the {variable} style. A {box} +value selects standard units as defined by the "units"_units.html +command, e.g. velocity in Angstroms/fmsec and amplitude and position +in Angstroms for units = real. A {lattice} value means the velocity +units are in lattice spacings per time and the amplitude and position +are in lattice spacings. The "lattice"_lattice.html command must have +been previously used to define the lattice spacing. Each of these 3 +quantities may be dependent on the x,y,z dimension, since the lattice +spacings can be different in x,y,z. + +:line + +[Restart, fix_modify, output, run start/stop, minimize info:] + +This fix writes the original coordinates of moving particles to "binary +restart files"_restart.html, as well as the initial timestep, so that +the motion can be continuous in a restarted simulation. See the +"read_restart"_read_restart.html command for info on how to re-specify +a fix in an input script that reads a restart file, so that the +operation of the fix continues in an uninterrupted fashion. + +NOTE: Because the move positions are a function of the current +timestep and the initial timestep, you cannot reset the timestep to a +different value after reading a restart file, if you expect a fix move +command to work in an uninterrupted fashion. + +None of the "fix_modify"_fix_modify.html options are relevant to this +fix. + +This fix produces a per-atom array which can be accessed by various +"output commands"_Howto_output.html. The number of columns for each +atom is 3, and the columns store the original unwrapped x,y,z coords +of each particle. The per-atom values can be accessed on any timestep. + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. + +This fix is not invoked during "energy minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the USER-SDPD package. It is only enabled if +LAMMPS was built with that package. See the "Build +package"_Build_package.html doc page for more info. + +This fix requires that atoms store density and internal energy as +defined by the "atom_style meso"_atom_style.html command. + +All particles in the group must be mesoscopic SPH/SDPD particles. + +[Related commands:] + +"fix move"_fix_move.html, "fix meso"_fix_meso.html, +"displace_atoms"_displace_atoms.html + +[Default:] + +The option default is units = lattice. diff --git a/doc/src/fix_rigid_meso.txt b/doc/src/fix_rigid_meso.txt new file mode 100644 index 0000000000..79b014e671 --- /dev/null +++ b/doc/src/fix_rigid_meso.txt @@ -0,0 +1,349 @@ +"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 rigid/meso command :h3 + +[Syntax:] + +fix ID group-ID rigid/meso bodystyle args keyword values ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +rigid/meso = style name of this fix command :l +bodystyle = {single} or {molecule} or {group} :l + {single} args = none + {molecule} args = none + {custom} args = {i_propname} or {v_varname} + i_propname = an integer property defined via fix property/atom + v_varname = an atom-style or atomfile-style variable + {group} args = N groupID1 groupID2 ... + N = # of groups + groupID1, groupID2, ... = list of N group IDs :pre + +zero or more keyword/value pairs may be appended :l +keyword = {reinit} or {force} or {torque} or {infile} :l + {reinit} = {yes} or {no} + {force} values = M xflag yflag zflag + M = which rigid body from 1-Nbody (see asterisk form below) + xflag,yflag,zflag = off/on if component of center-of-mass force is active + {torque} values = M xflag yflag zflag + M = which rigid body from 1-Nbody (see asterisk form below) + xflag,yflag,zflag = off/on if component of center-of-mass torque is active + {infile} filename + filename = file with per-body values of mass, center-of-mass, moments of inertia :pre +:ule + +[Examples:] + +fix 1 ellipsoid rigid/meso single +fix 1 rods rigid/meso molecule +fix 1 spheres rigid/meso single force 1 off off on +fix 1 particles rigid/meso molecule force 1*5 off off off force 6*10 off off on +fix 2 spheres rigid/meso group 3 sphere1 sphere2 sphere3 torque * off off off :pre + +[Description:] + +Treat one or more sets of mesoscopic SPH/SDPD particles as independent +rigid bodies. This means that each timestep the total force and torque +on each rigid body is computed as the sum of the forces and torques on +its constituent particles. The coordinates and velocities of the +particles in each body are then updated so that the body moves and +rotates as a single entity using the methods described in the paper by +"(Miller)"_#Miller. Density and internal energy of the particles will +also be updated. This is implemented by creating internal data structures +for each rigid body and performing time integration on these data +structures. Positions and velocities of the constituent particles are +regenerated from the rigid body data structures in every time step. This +restricts which operations and fixes can be applied to rigid bodies. See +below for a detailed discussion. + +The operation of this fix is exactly like that described by the +"fix rigid/nve"_fix_rigid.html command, except that particles' density, +internal energy and extrapolated velocity are also updated. + +NOTE: You should not update the particles in rigid bodies via other +time-integration fixes (e.g. "fix meso"_fix_meso.html, +"fix meso/stationary"_fix_meso_stationary.html), or you will have conflicting +updates to positions and velocities resulting in unphysical behavior in most +cases. When performing a hybrid simulation with some atoms in rigid bodies, +and some not, a separate time integration fix like "fix meso"_fix_meso.html +should be used for the non-rigid particles. + +NOTE: These fixes are overkill if you simply want to hold a collection +of particles stationary or have them move with a constant velocity. To +hold particles stationary use "fix +meso/stationary"_fix_meso_stationary.html instead. If you would like to +move particles with a constant velocity use "fix +meso/move"_fix_meso_move.html. + +IMPORTANT NOTE: The aggregate properties of each rigid body are +calculated at the start of a simulation run and are maintained in +internal data structures. The properties include the position and +velocity of the center-of-mass of the body, its moments of inertia, and +its angular momentum. This is done using the properties of the +constituent particles of the body at that point in time (or see the {infile} +keyword option). Thereafter, changing these properties of individual +particles in the body will have no effect on a rigid body's dynamics, unless +they effect any computation of per-particle forces or torques. If the +keyword {reinit} is set to {yes} (the default), the rigid body data +structures will be recreated at the beginning of each {run} command; +if the keyword {reinit} is set to {no}, the rigid body data structures +will be built only at the very first {run} command and maintained for +as long as the rigid fix is defined. For example, you might think you +could displace the particles in a body or add a large velocity to each particle +in a body to make it move in a desired direction before a 2nd run is +performed, using the "set"_set.html or +"displace_atoms"_displace_atoms.html or "velocity"_velocity.html +commands. But these commands will not affect the internal attributes +of the body unless {reinit} is set to {yes}. With {reinit} set to {no} +(or using the {infile} option, which implies {reinit} {no}) the position +and velocity of individual particles in the body will be reset when time +integration starts again. + +:line + +Each rigid body must have two or more particles. A particle can belong +to at most one rigid body. Which particles are in which bodies can be +defined via several options. + +For bodystyle {single} the entire fix group of particles is treated as +one rigid body. + +For bodystyle {molecule}, particles are grouped into rigid bodies by their +respective molecule IDs: each set of particles in the fix group with the +same molecule ID is treated as a different rigid body. Note that particles +with a molecule ID = 0 will be treated as a single rigid body. For a +system with solvent (typically this is particles with molecule ID = 0) +surrounding rigid bodies, this may not be what you want. Thus you +should be careful to use a fix group that only includes particles you +want to be part of rigid bodies. + +Bodystyle {custom} is similar to bodystyle {molecule} except that it +is more flexible in using other per-atom properties to define the sets +of particles that form rigid bodies. An integer vector defined by the +"fix property/atom"_fix_property_atom.html command can be used. Or an +"atom-style or atomfile-style variable"_variable.html can be used; the +floating-point value produced by the variable is rounded to an +integer. As with bondstyle {molecule}, each set of particles in the fix +groups with the same integer value is treated as a different rigid +body. Since fix property/atom vectors and atom-style variables +produce values for all particles, you should be careful to use a fix group +that only includes particles you want to be part of rigid bodies. + +For bodystyle {group}, each of the listed groups is treated as a +separate rigid body. Only particles that are also in the fix group are +included in each rigid body. + +NOTE: To compute the initial center-of-mass position and other +properties of each rigid body, the image flags for each particle in the +body are used to "unwrap" the particle coordinates. Thus you must +insure that these image flags are consistent so that the unwrapping +creates a valid rigid body (one where the particles are close together) +, particularly if the particles in a single rigid body straddle a +periodic boundary. This means the input data file or restart file must +define the image flags for each particle consistently or that you have +used the "set"_set.html command to specify them correctly. If a +dimension is non-periodic then the image flag of each particle must be +0 in that dimension, else an error is generated. + +By default, each rigid body is acted on by other particles which induce +an external force and torque on its center of mass, causing it to +translate and rotate. Components of the external center-of-mass force +and torque can be turned off by the {force} and {torque} keywords. +This may be useful if you wish a body to rotate but not translate, or +vice versa, or if you wish it to rotate or translate continuously +unaffected by interactions with other particles. Note that if you +expect a rigid body not to move or rotate by using these keywords, you +must insure its initial center-of-mass translational or angular +velocity is 0.0. Otherwise the initial translational or angular +momentum the body has will persist. + +An xflag, yflag, or zflag set to {off} means turn off the component of +force or torque in that dimension. A setting of {on} means turn on +the component, which is the default. Which rigid body(s) the settings +apply to is determined by the first argument of the {force} and +{torque} keywords. It can be an integer M from 1 to Nbody, where +Nbody is the number of rigid bodies defined. A wild-card asterisk can +be used in place of, or in conjunction with, the M argument to set the +flags for multiple rigid bodies. This takes the form "*" or "*n" or +"n*" or "m*n". If N = the number of rigid bodies, then an asterisk +with no numeric values means all bodies from 1 to N. A leading +asterisk means all bodies from 1 to n (inclusive). A trailing +asterisk means all bodies from n to N (inclusive). A middle asterisk +means all bodies from m to n (inclusive). Note that you can use the +{force} or {torque} keywords as many times as you like. If a +particular rigid body has its component flags set multiple times, the +settings from the final keyword are used. + +For computational efficiency, you should typically define one fix +rigid/meso command which includes all the desired rigid bodies. LAMMPS +will allow multiple rigid/meso fixes to be defined, but it is more +expensive. + +:line + +The keyword/value option pairs are used in the following ways. + +The {reinit} keyword determines, whether the rigid body properties +are re-initialized between run commands. With the option {yes} (the +default) this is done, with the option {no} this is not done. Turning +off the re-initialization can be helpful to protect rigid bodies against +unphysical manipulations between runs or when properties cannot be +easily re-computed (e.g. when read from a file). When using the {infile} +keyword, the {reinit} option is automatically set to {no}. + +:line + +The {infile} keyword allows a file of rigid body attributes to be read +in from a file, rather then having LAMMPS compute them. There are 5 +such attributes: the total mass of the rigid body, its center-of-mass +position, its 6 moments of inertia, its center-of-mass velocity, and +the 3 image flags of the center-of-mass position. For rigid bodies +consisting of point particles or non-overlapping finite-size +particles, LAMMPS can compute these values accurately. However, for +rigid bodies consisting of finite-size particles which overlap each +other, LAMMPS will ignore the overlaps when computing these 4 +attributes. The amount of error this induces depends on the amount of +overlap. To avoid this issue, the values can be pre-computed +(e.g. using Monte Carlo integration). + +The format of the file is as follows. Note that the file does not +have to list attributes for every rigid body integrated by fix rigid. +Only bodies which the file specifies will have their computed +attributes overridden. The file can contain initial blank lines or +comment lines starting with "#" which are ignored. The first +non-blank, non-comment line should list N = the number of lines to +follow. The N successive lines contain the following information: + +ID1 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz vxcm vycm vzcm lx ly lz ixcm iycm izcm +ID2 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz vxcm vycm vzcm lx ly lz ixcm iycm izcm +... +IDN masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz vxcm vycm vzcm lx ly lz ixcm iycm izcm :pre + +The rigid body IDs are all positive integers. For the {single} +bodystyle, only an ID of 1 can be used. For the {group} bodystyle, +IDs from 1 to Ng can be used where Ng is the number of specified +groups. For the {molecule} bodystyle, use the molecule ID for the +atoms in a specific rigid body as the rigid body ID. + +The masstotal and center-of-mass coordinates (xcm,ycm,zcm) are +self-explanatory. The center-of-mass should be consistent with what +is calculated for the position of the rigid body with all its atoms +unwrapped by their respective image flags. If this produces a +center-of-mass that is outside the simulation box, LAMMPS wraps it +back into the box. + +The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the +values consistent with the current orientation of the rigid body +around its center of mass. The values are with respect to the +simulation box XYZ axes, not with respect to the principal axes of the +rigid body itself. LAMMPS performs the latter calculation internally. + +The (vxcm,vycm,vzcm) values are the velocity of the center of mass. +The (lx,ly,lz) values are the angular momentum of the body. The +(vxcm,vycm,vzcm) and (lx,ly,lz) values can simply be set to 0 if you +wish the body to have no initial motion. + +The (ixcm,iycm,izcm) values are the image flags of the center of mass +of the body. For periodic dimensions, they specify which image of the +simulation box the body is considered to be in. An image of 0 means +it is inside the box as defined. A value of 2 means add 2 box lengths +to get the true value. A value of -1 means subtract 1 box length to +get the true value. LAMMPS updates these flags as the rigid bodies +cross periodic boundaries during the simulation. + +NOTE: If you use the {infile} keyword and write restart +files during a simulation, then each time a restart file is written, +the fix also write an auxiliary restart file with the name +rfile.rigid, where "rfile" is the name of the restart file, +e.g. tmp.restart.10000 and tmp.restart.10000.rigid. This auxiliary +file is in the same format described above. Thus it can be used in a +new input script that restarts the run and re-specifies a rigid fix +using an {infile} keyword and the appropriate filename. Note that the +auxiliary file will contain one line for every rigid body, even if the +original file only listed a subset of the rigid bodies. + +:line + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information is written to "binary restart files"_restart.html. +If the {infile} keyword is used, an auxiliary file is written out +with rigid body information each time a restart file is written, as +explained above for the {infile} keyword. + +None of the "fix_modify"_fix_modify.html options are relevant to this +fix. + +This fix computes a global array of values which can be accessed by +various "output commands"_Howto_output.html. + +The number of rows in the array is equal to the number of rigid +bodies. The number of columns is 28. Thus for each rigid body, 28 +values are stored: the xyz coords of the center of mass (COM), the xyz +components of the COM velocity, the xyz components of the force acting +on the COM, the components of the 4-vector quaternion representing the +orientation of the rigid body, the xyz components of the angular momentum +of the body around its COM, the xyz components of the torque acting on the +COM, the 3 principal components of the moment of inertia and the xyz image +flags of the COM. + +The center of mass (COM) for each body is similar to unwrapped +coordinates written to a dump file. It will always be inside (or +slightly outside) the simulation box. The image flags have the same +meaning as image flags for particle positions (see the "dump" command). +This means you can calculate the unwrapped COM by applying the image +flags to the COM, the same as when unwrapped coordinates are written +to a dump file. + +The force and torque values in the array are not affected by the +{force} and {torque} keywords in the fix rigid command; they reflect +values before any changes are made by those keywords. + +The ordering of the rigid bodies (by row in the array) is as follows. +For the {single} keyword there is just one rigid body. For the +{molecule} keyword, the bodies are ordered by ascending molecule ID. +For the {group} keyword, the list of group IDs determines the ordering +of bodies. + +The array values calculated by this fix are "intensive", meaning they +are independent of the number of particles in the simulation. + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. + +This fix is not invoked during "energy minimization"_minimize.html. + +:line + +[Restrictions:] + +This fix is part of the USER-SDPD package and also depends on the RIGID +package. It is only enabled if LAMMPS was built with both packages. See +the "Build package"_Build_package.html doc page for more info. + +This fix requires that atoms store density and internal energy as +defined by the "atom_style meso"_atom_style.html command. + +All particles in the group must be mesoscopic SPH/SDPD particles. + +[Related commands:] + +"fix meso/move"_fix_meso_move.html, "fix rigid"_fix_rigid.html, +"neigh_modify exclude"_neigh_modify.html + +[Default:] + +The option defaults are force * on on on and torque * on on on, +meaning all rigid bodies are acted on by center-of-mass force and +torque. Also reinit = yes. + +:line + +:link(Miller) +[(Miller)] Miller, Eleftheriou, Pattnaik, Ndirango, and Newns, +J Chem Phys, 116, 8649 (2002). diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt index 66f6633124..36ccf4269a 100644 --- a/doc/src/fixes.txt +++ b/doc/src/fixes.txt @@ -73,6 +73,7 @@ Fixes :h1 fix_lineforce fix_manifoldforce fix_meso + fix_meso_move fix_meso_stationary fix_momentum fix_move @@ -137,6 +138,7 @@ Fixes :h1 fix_restrain fix_rhok fix_rigid + fix_rigid_meso fix_rx fix_saed_vtk fix_setforce diff --git a/doc/src/lammps.book b/doc/src/lammps.book index f739712f08..cb328c4089 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -293,6 +293,7 @@ fix_lb_viscous.html fix_lineforce.html fix_manifoldforce.html fix_meso.html +fix_meso_move.html fix_meso_stationary.html fix_momentum.html fix_move.html @@ -356,6 +357,7 @@ fix_reaxc_species.html fix_recenter.html fix_restrain.html fix_rigid.html +fix_rigid_meso.html fix_rhok.html fix_rx.html fix_saed_vtk.html @@ -615,6 +617,7 @@ pair_reax.html pair_reaxc.html pair_resquared.html pair_sdk.html +pair_sdpd_taitwater_isothermal.html pair_smd_hertz.html pair_smd_tlsph.html pair_smd_triangulated_surface.html diff --git a/doc/src/pair_sdpd_taitwater_isothermal.txt b/doc/src/pair_sdpd_taitwater_isothermal.txt new file mode 100644 index 0000000000..97b68ceba7 --- /dev/null +++ b/doc/src/pair_sdpd_taitwater_isothermal.txt @@ -0,0 +1,108 @@ +"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 + +pair_style sdpd/taitwater/isothermal command :h3 + +[Syntax:] + +pair_style sdpd/taitwater/isothermal temperature viscosity seed +:pre + +temperature = temperature of the fluid (temperature units) +viscosity = dynamic viscosity of the fluid (mass*distance/time units) +seed = random number generator seed (positive integer, optional) :ul + +[Examples:] + +pair_style sdpd/taitwater/isothermal 300. 1. 28681 +pair_coeff * * 1000.0 1430.0 2.4 :pre + +[Description:] + +The sdpd/taitwater/isothermal style computes forces between mesoscopic +particles according to the Smoothed Dissipative Particle Dynamics model +described in this paper by "(Español and Revenga)"_#Español_Revenga under +the following assumptions: + +:olb +The temperature is constant and uniform. :l +The shear viscosity is constant and uniform. :l +The volume viscosity is negligible before the shear viscosity. :l +The Boltzmann constant is negligible before the heat capacity of a +single mesoscopic particle of fluid. :ole,l + +The third assumption is true for water in nearly incompressible flows. +The fourth holds true for water for any reasonable size one can +imagine for a mesoscopic particle. + +The pressure forces between particles will be computed according to +Tait's equation of state: + +:c,image(Eqs/pair_sph_tait.jpg) + +where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the +reference density and c_0 the reference speed of sound. + +The laminar viscosity and the random forces will be computed according +to formulas described in "(Español and Revenga)"_#Español_Revenga. + +IMPORTANT NOTE: Similar to "brownian"_pair_brownian.html and +"dpd"_pair_dpd.html styles, the "newton"_newton.html setting for +pairwise interactions needs to be on when running LAMMPS in parallel +if you want to ensure linear momentum conservation. Otherwise random +forces generated for pairs straddling processor boundary will not be +equal and opposite. + +NOTE: The actual random seed used will be a mix of what you specify +and other parameters like the MPI ranks. This is to ensure that +different MPI tasks have distinct seeds. + +The following coefficients must be defined for each pair of atoms +types via the "pair_coeff"_pair_coeff.html command as in the examples +above. + +rho0 reference density (mass/volume units) +c0 reference soundspeed (distance/time units) +h kernel function cutoff (distance units) :ul + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +This style does not support mixing. Thus, coefficients for all +I,J pairs must be specified explicitly. + +This style does not support the "pair_modify"_pair_modify.html +shift, table, and tail options. + +This style does not write information to "binary restart +files"_restart.html. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +This style can only be used via the {pair} keyword of the "run_style +respa"_run_style.html command. It does not support the {inner}, +{middle}, {outer} keywords. + +[Restrictions:] + +This pair style is part of the USER-SDPD package. It is only enabled +if LAMMPS was built with that package. See the "Build +package"_Build_package.html doc page for more info. + +[Related commands:] + +"pair coeff"_pair_coeff.html, "pair sph/rhosum"_pair_sph_rhosum.html + +[Default:] + +The default seed is 0 (before mixing). + +:line + +:link(Español_Revenga) +[(Español and Revenga)] Español, Revenga, Physical Review E, 67, 026705 (2003). diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt index 14e3f79215..f6098fa005 100644 --- a/doc/src/pair_style.txt +++ b/doc/src/pair_style.txt @@ -268,6 +268,7 @@ pair"_Commands_pair.html doc page are followed by one or more of "reax/c"_pair_reaxc.html - ReaxFF potential in C "rebo"_pair_airebo.html - 2nd generation REBO potential of Brenner "resquared"_pair_resquared.html - Everaers RE-Squared ellipsoidal potential +"sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html - smoothed dissipative particle dynamics for water at isothermal conditions "smd/hertz"_pair_smd_hertz.html - "smd/tlsph"_pair_smd_tlsph.html - "smd/tri_surface"_pair_smd_triangulated_surface.html - diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt index d535798482..ca79051053 100644 --- a/doc/src/pairs.txt +++ b/doc/src/pairs.txt @@ -86,6 +86,7 @@ Pair Styles :h1 pair_reaxc pair_resquared pair_sdk + pair_sdpd_taitwater_isothermal pair_smd_hertz pair_smd_tlsph pair_smd_triangulated_surface diff --git a/examples/USER/sdpd/2d-diffusion-in-shear-flow/in.lammps b/examples/USER/sdpd/2d-diffusion-in-shear-flow/in.lammps new file mode 100644 index 0000000000..138f7b5338 --- /dev/null +++ b/examples/USER/sdpd/2d-diffusion-in-shear-flow/in.lammps @@ -0,0 +1,61 @@ +dimension 2 +units micro +atom_style meso + +variable R equal 0.5 # radius of sphere micrometers +variable a equal $R/5 # lattice spacing micrometers +variable Lf equal $R*3 +variable Lb equal $R*4 +variable wall_velocity equal 0.01 # micrometers/microsecond +variable T equal 300. +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 100. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.5 # kernel function cutoff micrometers +variable mass equal $a*$a*$a*${rho_0} +variable dt equal 1e-3 # timestep microseconds +variable skin equal 0.2*$h + +region box block -${Lb} ${Lb} -${Lb} ${Lb} 0 ${a} units box +create_box 4 box +lattice sq $a + +create_atoms 1 box + +region sphere sphere 0 0 0 $R units box +set region sphere type 2 + +region upper_wall block INF INF +${Lf} INF INF INF units box +set region upper_wall type 3 + +region lower_wall block INF INF INF -${Lf} INF INF units box +set region lower_wall type 4 + +group fluid type 1 +group sphere type 2 +group upper_wall type 3 +group lower_wall type 4 + +mass * ${mass} +set group all meso/rho ${rho_0} + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_coeff * * ${rho_0} ${c_0} ${h} + +fix 1 fluid meso +fix 2 sphere rigid/meso single +fix 3 upper_wall meso/move linear +${wall_velocity} 0 0 units box +fix 4 lower_wall meso/move linear -${wall_velocity} 0 0 units box + +fix 2d all enforce2d + +neighbor ${skin} bin +neigh_modify delay 0 every 1 check yes +timestep ${dt} + +dump dump_id all atom 100 dump.lammpstrj + +thermo 100 +thermo_style custom step time nbuild ndanger + +run 10000 diff --git a/examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.1 b/examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.1 new file mode 100644 index 0000000000..cd01601292 --- /dev/null +++ b/examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.1 @@ -0,0 +1,247 @@ +LAMMPS (24 Oct 2018) +dimension 2 +units micro +atom_style meso + +variable R equal 0.5 # radius of sphere micrometers +variable a equal $R/5 # lattice spacing micrometers +variable a equal 0.5/5 +variable Lf equal $R*3 +variable Lf equal 0.5*3 +variable Lb equal $R*4 +variable Lb equal 0.5*4 +variable wall_velocity equal 0.01 # micrometers/microsecond +variable T equal 300. +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 100. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.5 # kernel function cutoff micrometers +variable h equal 0.1*4.5 +variable mass equal $a*$a*$a*${rho_0} +variable mass equal 0.1*$a*$a*${rho_0} +variable mass equal 0.1*0.1*$a*${rho_0} +variable mass equal 0.1*0.1*0.1*${rho_0} +variable mass equal 0.1*0.1*0.1*1 +variable dt equal 1e-3 # timestep microseconds +variable skin equal 0.2*$h +variable skin equal 0.2*0.45 + +region box block -${Lb} ${Lb} -${Lb} ${Lb} 0 ${a} units box +region box block -2 ${Lb} -${Lb} ${Lb} 0 ${a} units box +region box block -2 2 -${Lb} ${Lb} 0 ${a} units box +region box block -2 2 -2 ${Lb} 0 ${a} units box +region box block -2 2 -2 2 0 ${a} units box +region box block -2 2 -2 2 0 0.1 units box +create_box 4 box +Created orthogonal box = (-2 -2 0) to (2 2 0.1) + 1 by 1 by 1 MPI processor grid +lattice sq $a +lattice sq 0.1 +Lattice spacing in x,y,z = 0.1 0.1 0.1 + +create_atoms 1 box +Created 1600 atoms + Time spent = 0.00169706 secs + +region sphere sphere 0 0 0 $R units box +region sphere sphere 0 0 0 0.5 units box +set region sphere type 2 + 81 settings made for type + +region upper_wall block INF INF +${Lf} INF INF INF units box +region upper_wall block INF INF +1.5 INF INF INF units box +set region upper_wall type 3 + 200 settings made for type + +region lower_wall block INF INF INF -${Lf} INF INF units box +region lower_wall block INF INF INF -1.5 INF INF units box +set region lower_wall type 4 + 240 settings made for type + +group fluid type 1 +1079 atoms in group fluid +group sphere type 2 +81 atoms in group sphere +group upper_wall type 3 +200 atoms in group upper_wall +group lower_wall type 4 +240 atoms in group lower_wall + +mass * ${mass} +mass * 0.001 +set group all meso/rho ${rho_0} +set group all meso/rho 1 + 1600 settings made for meso/rho + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_style sdpd/taitwater/isothermal 300 ${mu} 76787 +pair_style sdpd/taitwater/isothermal 300 1 76787 +pair_coeff * * ${rho_0} ${c_0} ${h} +pair_coeff * * 1 ${c_0} ${h} +pair_coeff * * 1 100 ${h} +pair_coeff * * 1 100 0.45 + +fix 1 fluid meso +fix 2 sphere rigid/meso single +1 rigid bodies with 81 atoms +fix 3 upper_wall meso/move linear +${wall_velocity} 0 0 units box +fix 3 upper_wall meso/move linear +0.01 0 0 units box +fix 4 lower_wall meso/move linear -${wall_velocity} 0 0 units box +fix 4 lower_wall meso/move linear -0.01 0 0 units box + +fix 2d all enforce2d + +neighbor ${skin} bin +neighbor 0.09 bin +neigh_modify delay 0 every 1 check yes +timestep ${dt} +timestep 0.001 + +dump dump_id all atom 100 dump.lammpstrj + +thermo 100 +thermo_style custom step time nbuild ndanger + +run 10000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.54 + ghost atom cutoff = 0.54 + binsize = 0.27, bins = 15 15 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair sdpd/taitwater/isothermal, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.937 | 6.937 | 6.937 Mbytes +Step Time Nbuild Ndanger + 0 0 0 0 + 100 0.1 0 0 + 200 0.2 0 0 + 300 0.3 0 0 + 400 0.4 0 0 + 500 0.5 1 0 + 600 0.6 1 0 + 700 0.7 2 0 + 800 0.8 2 0 + 900 0.9 2 0 + 1000 1 3 0 + 1100 1.1 3 0 + 1200 1.2 3 0 + 1300 1.3 4 0 + 1400 1.4 4 0 + 1500 1.5 4 0 + 1600 1.6 5 0 + 1700 1.7 5 0 + 1800 1.8 5 0 + 1900 1.9 6 0 + 2000 2 6 0 + 2100 2.1 6 0 + 2200 2.2 7 0 + 2300 2.3 7 0 + 2400 2.4 7 0 + 2500 2.5 8 0 + 2600 2.6 8 0 + 2700 2.7 8 0 + 2800 2.8 9 0 + 2900 2.9 9 0 + 3000 3 9 0 + 3100 3.1 10 0 + 3200 3.2 10 0 + 3300 3.3 10 0 + 3400 3.4 11 0 + 3500 3.5 11 0 + 3600 3.6 11 0 + 3700 3.7 12 0 + 3800 3.8 12 0 + 3900 3.9 12 0 + 4000 4 13 0 + 4100 4.1 13 0 + 4200 4.2 14 0 + 4300 4.3 14 0 + 4400 4.4 14 0 + 4500 4.5 15 0 + 4600 4.6 15 0 + 4700 4.7 15 0 + 4800 4.8 16 0 + 4900 4.9 16 0 + 5000 5 16 0 + 5100 5.1 17 0 + 5200 5.2 17 0 + 5300 5.3 17 0 + 5400 5.4 17 0 + 5500 5.5 18 0 + 5600 5.6 18 0 + 5700 5.7 19 0 + 5800 5.8 19 0 + 5900 5.9 19 0 + 6000 6 20 0 + 6100 6.1 20 0 + 6200 6.2 21 0 + 6300 6.3 21 0 + 6400 6.4 21 0 + 6500 6.5 22 0 + 6600 6.6 22 0 + 6700 6.7 22 0 + 6800 6.8 23 0 + 6900 6.9 23 0 + 7000 7 23 0 + 7100 7.1 24 0 + 7200 7.2 24 0 + 7300 7.3 25 0 + 7400 7.4 25 0 + 7500 7.5 25 0 + 7600 7.6 26 0 + 7700 7.7 26 0 + 7800 7.8 26 0 + 7900 7.9 27 0 + 8000 8 27 0 + 8100 8.1 27 0 + 8200 8.2 28 0 + 8300 8.3 28 0 + 8400 8.4 28 0 + 8500 8.5 29 0 + 8600 8.6 29 0 + 8700 8.7 30 0 + 8800 8.8 30 0 + 8900 8.9 30 0 + 9000 9 31 0 + 9100 9.1 31 0 + 9200 9.2 31 0 + 9300 9.3 32 0 + 9400 9.4 32 0 + 9500 9.5 32 0 + 9600 9.6 33 0 + 9700 9.7 33 0 + 9800 9.8 33 0 + 9900 9.9 34 0 + 10000 10 34 0 +Loop time of 144.208 on 1 procs for 10000 steps with 1600 atoms + +Performance: 5991348.580 ns/day, 0.000 hours/ns, 69.344 timesteps/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 143.08 | 143.08 | 143.08 | 0.0 | 99.22 +Neigh | 0.033195 | 0.033195 | 0.033195 | 0.0 | 0.02 +Comm | 0.24139 | 0.24139 | 0.24139 | 0.0 | 0.17 +Output | 0.11687 | 0.11687 | 0.11687 | 0.0 | 0.08 +Modify | 0.61566 | 0.61566 | 0.61566 | 0.0 | 0.43 +Other | | 0.117 | | | 0.08 + +Nlocal: 1600 ave 1600 max 1600 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 993 ave 993 max 993 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 73236 ave 73236 max 73236 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 73236 +Ave neighs/atom = 45.7725 +Neighbor list builds = 34 +Dangerous builds = 0 +Total wall time: 0:02:24 diff --git a/examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.4 b/examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.4 new file mode 100644 index 0000000000..77823e00fc --- /dev/null +++ b/examples/USER/sdpd/2d-diffusion-in-shear-flow/log.24Oct18.2d-diffusion-in-shear-flow.g++.4 @@ -0,0 +1,247 @@ +LAMMPS (24 Oct 2018) +dimension 2 +units micro +atom_style meso + +variable R equal 0.5 # radius of sphere micrometers +variable a equal $R/5 # lattice spacing micrometers +variable a equal 0.5/5 +variable Lf equal $R*3 +variable Lf equal 0.5*3 +variable Lb equal $R*4 +variable Lb equal 0.5*4 +variable wall_velocity equal 0.01 # micrometers/microsecond +variable T equal 300. +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 100. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.5 # kernel function cutoff micrometers +variable h equal 0.1*4.5 +variable mass equal $a*$a*$a*${rho_0} +variable mass equal 0.1*$a*$a*${rho_0} +variable mass equal 0.1*0.1*$a*${rho_0} +variable mass equal 0.1*0.1*0.1*${rho_0} +variable mass equal 0.1*0.1*0.1*1 +variable dt equal 1e-3 # timestep microseconds +variable skin equal 0.2*$h +variable skin equal 0.2*0.45 + +region box block -${Lb} ${Lb} -${Lb} ${Lb} 0 ${a} units box +region box block -2 ${Lb} -${Lb} ${Lb} 0 ${a} units box +region box block -2 2 -${Lb} ${Lb} 0 ${a} units box +region box block -2 2 -2 ${Lb} 0 ${a} units box +region box block -2 2 -2 2 0 ${a} units box +region box block -2 2 -2 2 0 0.1 units box +create_box 4 box +Created orthogonal box = (-2 -2 0) to (2 2 0.1) + 2 by 2 by 1 MPI processor grid +lattice sq $a +lattice sq 0.1 +Lattice spacing in x,y,z = 0.1 0.1 0.1 + +create_atoms 1 box +Created 1600 atoms + Time spent = 0.000589566 secs + +region sphere sphere 0 0 0 $R units box +region sphere sphere 0 0 0 0.5 units box +set region sphere type 2 + 81 settings made for type + +region upper_wall block INF INF +${Lf} INF INF INF units box +region upper_wall block INF INF +1.5 INF INF INF units box +set region upper_wall type 3 + 200 settings made for type + +region lower_wall block INF INF INF -${Lf} INF INF units box +region lower_wall block INF INF INF -1.5 INF INF units box +set region lower_wall type 4 + 240 settings made for type + +group fluid type 1 +1079 atoms in group fluid +group sphere type 2 +81 atoms in group sphere +group upper_wall type 3 +200 atoms in group upper_wall +group lower_wall type 4 +240 atoms in group lower_wall + +mass * ${mass} +mass * 0.001 +set group all meso/rho ${rho_0} +set group all meso/rho 1 + 1600 settings made for meso/rho + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_style sdpd/taitwater/isothermal 300 ${mu} 76787 +pair_style sdpd/taitwater/isothermal 300 1 76787 +pair_coeff * * ${rho_0} ${c_0} ${h} +pair_coeff * * 1 ${c_0} ${h} +pair_coeff * * 1 100 ${h} +pair_coeff * * 1 100 0.45 + +fix 1 fluid meso +fix 2 sphere rigid/meso single +1 rigid bodies with 81 atoms +fix 3 upper_wall meso/move linear +${wall_velocity} 0 0 units box +fix 3 upper_wall meso/move linear +0.01 0 0 units box +fix 4 lower_wall meso/move linear -${wall_velocity} 0 0 units box +fix 4 lower_wall meso/move linear -0.01 0 0 units box + +fix 2d all enforce2d + +neighbor ${skin} bin +neighbor 0.09 bin +neigh_modify delay 0 every 1 check yes +timestep ${dt} +timestep 0.001 + +dump dump_id all atom 100 dump.lammpstrj + +thermo 100 +thermo_style custom step time nbuild ndanger + +run 10000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.54 + ghost atom cutoff = 0.54 + binsize = 0.27, bins = 15 15 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair sdpd/taitwater/isothermal, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.854 | 6.854 | 6.854 Mbytes +Step Time Nbuild Ndanger + 0 0 0 0 + 100 0.1 0 0 + 200 0.2 0 0 + 300 0.3 0 0 + 400 0.4 1 0 + 500 0.5 1 0 + 600 0.6 1 0 + 700 0.7 2 0 + 800 0.8 2 0 + 900 0.9 2 0 + 1000 1 3 0 + 1100 1.1 3 0 + 1200 1.2 4 0 + 1300 1.3 4 0 + 1400 1.4 4 0 + 1500 1.5 4 0 + 1600 1.6 5 0 + 1700 1.7 5 0 + 1800 1.8 5 0 + 1900 1.9 6 0 + 2000 2 6 0 + 2100 2.1 6 0 + 2200 2.2 6 0 + 2300 2.3 7 0 + 2400 2.4 7 0 + 2500 2.5 7 0 + 2600 2.6 8 0 + 2700 2.7 8 0 + 2800 2.8 8 0 + 2900 2.9 9 0 + 3000 3 9 0 + 3100 3.1 9 0 + 3200 3.2 10 0 + 3300 3.3 10 0 + 3400 3.4 10 0 + 3500 3.5 11 0 + 3600 3.6 11 0 + 3700 3.7 11 0 + 3800 3.8 12 0 + 3900 3.9 12 0 + 4000 4 12 0 + 4100 4.1 13 0 + 4200 4.2 13 0 + 4300 4.3 13 0 + 4400 4.4 14 0 + 4500 4.5 14 0 + 4600 4.6 15 0 + 4700 4.7 15 0 + 4800 4.8 15 0 + 4900 4.9 16 0 + 5000 5 16 0 + 5100 5.1 17 0 + 5200 5.2 17 0 + 5300 5.3 17 0 + 5400 5.4 17 0 + 5500 5.5 18 0 + 5600 5.6 18 0 + 5700 5.7 18 0 + 5800 5.8 19 0 + 5900 5.9 19 0 + 6000 6 20 0 + 6100 6.1 20 0 + 6200 6.2 20 0 + 6300 6.3 21 0 + 6400 6.4 21 0 + 6500 6.5 21 0 + 6600 6.6 22 0 + 6700 6.7 22 0 + 6800 6.8 22 0 + 6900 6.9 23 0 + 7000 7 23 0 + 7100 7.1 23 0 + 7200 7.2 24 0 + 7300 7.3 24 0 + 7400 7.4 25 0 + 7500 7.5 25 0 + 7600 7.6 25 0 + 7700 7.7 25 0 + 7800 7.8 26 0 + 7900 7.9 26 0 + 8000 8 26 0 + 8100 8.1 27 0 + 8200 8.2 27 0 + 8300 8.3 27 0 + 8400 8.4 28 0 + 8500 8.5 28 0 + 8600 8.6 28 0 + 8700 8.7 29 0 + 8800 8.8 29 0 + 8900 8.9 29 0 + 9000 9 30 0 + 9100 9.1 30 0 + 9200 9.2 31 0 + 9300 9.3 31 0 + 9400 9.4 31 0 + 9500 9.5 32 0 + 9600 9.6 32 0 + 9700 9.7 32 0 + 9800 9.8 32 0 + 9900 9.9 33 0 + 10000 10 33 0 +Loop time of 63.2372 on 4 procs for 10000 steps with 1600 atoms + +Performance: 13662841.706 ns/day, 0.000 hours/ns, 158.135 timesteps/s +94.3% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 51.576 | 53.662 | 55.484 | 23.9 | 84.86 +Neigh | 0.011519 | 0.012395 | 0.013405 | 0.7 | 0.02 +Comm | 6.8389 | 8.5423 | 10.517 | 56.1 | 13.51 +Output | 0.12342 | 0.12513 | 0.1302 | 0.8 | 0.20 +Modify | 0.58708 | 0.69128 | 0.78806 | 11.3 | 1.09 +Other | | 0.2038 | | | 0.32 + +Nlocal: 400 ave 411 max 388 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Nghost: 552.25 ave 567 max 539 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 18298.8 ave 18781 max 17829 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 73195 +Ave neighs/atom = 45.7469 +Neighbor list builds = 33 +Dangerous builds = 0 +Total wall time: 0:01:03 diff --git a/examples/USER/sdpd/2d-diffusion/in.lammps b/examples/USER/sdpd/2d-diffusion/in.lammps new file mode 100644 index 0000000000..6ef36a0cf6 --- /dev/null +++ b/examples/USER/sdpd/2d-diffusion/in.lammps @@ -0,0 +1,49 @@ +dimension 2 +units micro +atom_style meso + +variable R equal 0.5 # radius of sphere micrometers +variable a equal $R/5 # lattice spacing micrometers +variable L equal $R*3 +variable T equal 300. +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 100. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.5 # kernel function cutoff micrometers +variable mass equal $a*$a*$a*${rho_0} +variable dt equal 1e-3 # timestep microseconds +variable skin equal 0.2*$h + +region box block -$L $L -$L $L 0 $a units box +create_box 2 box +lattice sq $a + +create_atoms 1 box + +region sphere sphere 0 0 0 $R units box +set region sphere type 2 + +group fluid type 1 +group sphere type 2 + +mass * ${mass} +set group all meso/rho ${rho_0} + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_coeff * * ${rho_0} ${c_0} ${h} + +fix 1 fluid meso +fix 2 sphere rigid/meso single + +fix 2d all enforce2d + +neighbor ${skin} bin +neigh_modify delay 0 every 1 check yes +timestep ${dt} + +dump dump_id all atom 100 dump.lammpstrj + +thermo 100 +thermo_style custom step time nbuild ndanger + +run 10000 diff --git a/examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.1 b/examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.1 new file mode 100644 index 0000000000..d44c0fd6f4 --- /dev/null +++ b/examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.1 @@ -0,0 +1,226 @@ +LAMMPS (24 Oct 2018) +dimension 2 +units micro +atom_style meso + +variable R equal 0.5 # radius of sphere micrometers +variable a equal $R/5 # lattice spacing micrometers +variable a equal 0.5/5 +variable L equal $R*3 +variable L equal 0.5*3 +variable T equal 300. +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 100. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.5 # kernel function cutoff micrometers +variable h equal 0.1*4.5 +variable mass equal $a*$a*$a*${rho_0} +variable mass equal 0.1*$a*$a*${rho_0} +variable mass equal 0.1*0.1*$a*${rho_0} +variable mass equal 0.1*0.1*0.1*${rho_0} +variable mass equal 0.1*0.1*0.1*1 +variable dt equal 1e-3 # timestep microseconds +variable skin equal 0.2*$h +variable skin equal 0.2*0.45 + +region box block -$L $L -$L $L 0 $a units box +region box block -1.5 $L -$L $L 0 $a units box +region box block -1.5 1.5 -$L $L 0 $a units box +region box block -1.5 1.5 -1.5 $L 0 $a units box +region box block -1.5 1.5 -1.5 1.5 0 $a units box +region box block -1.5 1.5 -1.5 1.5 0 0.1 units box +create_box 2 box +Created orthogonal box = (-1.5 -1.5 0) to (1.5 1.5 0.1) + 1 by 1 by 1 MPI processor grid +lattice sq $a +lattice sq 0.1 +Lattice spacing in x,y,z = 0.1 0.1 0.1 + +create_atoms 1 box +Created 900 atoms + Time spent = 0.0015769 secs + +region sphere sphere 0 0 0 $R units box +region sphere sphere 0 0 0 0.5 units box +set region sphere type 2 + 81 settings made for type + +group fluid type 1 +819 atoms in group fluid +group sphere type 2 +81 atoms in group sphere + +mass * ${mass} +mass * 0.001 +set group all meso/rho ${rho_0} +set group all meso/rho 1 + 900 settings made for meso/rho + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_style sdpd/taitwater/isothermal 300 ${mu} 76787 +pair_style sdpd/taitwater/isothermal 300 1 76787 +pair_coeff * * ${rho_0} ${c_0} ${h} +pair_coeff * * 1 ${c_0} ${h} +pair_coeff * * 1 100 ${h} +pair_coeff * * 1 100 0.45 + +fix 1 fluid meso +fix 2 sphere rigid/meso single +1 rigid bodies with 81 atoms + +fix 2d all enforce2d + +neighbor ${skin} bin +neighbor 0.09 bin +neigh_modify delay 0 every 1 check yes +timestep ${dt} +timestep 0.001 + +dump dump_id all atom 100 dump.lammpstrj + +thermo 100 +thermo_style custom step time nbuild ndanger + +run 10000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.54 + ghost atom cutoff = 0.54 + binsize = 0.27, bins = 12 12 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair sdpd/taitwater/isothermal, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.137 | 6.137 | 6.137 Mbytes +Step Time Nbuild Ndanger + 0 0 0 0 + 100 0.1 0 0 + 200 0.2 0 0 + 300 0.3 0 0 + 400 0.4 1 0 + 500 0.5 1 0 + 600 0.6 1 0 + 700 0.7 2 0 + 800 0.8 2 0 + 900 0.9 2 0 + 1000 1 3 0 + 1100 1.1 3 0 + 1200 1.2 3 0 + 1300 1.3 4 0 + 1400 1.4 4 0 + 1500 1.5 4 0 + 1600 1.6 5 0 + 1700 1.7 5 0 + 1800 1.8 6 0 + 1900 1.9 6 0 + 2000 2 6 0 + 2100 2.1 7 0 + 2200 2.2 7 0 + 2300 2.3 7 0 + 2400 2.4 7 0 + 2500 2.5 8 0 + 2600 2.6 8 0 + 2700 2.7 8 0 + 2800 2.8 9 0 + 2900 2.9 9 0 + 3000 3 10 0 + 3100 3.1 10 0 + 3200 3.2 10 0 + 3300 3.3 11 0 + 3400 3.4 11 0 + 3500 3.5 11 0 + 3600 3.6 12 0 + 3700 3.7 12 0 + 3800 3.8 12 0 + 3900 3.9 13 0 + 4000 4 13 0 + 4100 4.1 13 0 + 4200 4.2 14 0 + 4300 4.3 14 0 + 4400 4.4 14 0 + 4500 4.5 15 0 + 4600 4.6 15 0 + 4700 4.7 15 0 + 4800 4.8 16 0 + 4900 4.9 16 0 + 5000 5 17 0 + 5100 5.1 17 0 + 5200 5.2 17 0 + 5300 5.3 17 0 + 5400 5.4 18 0 + 5500 5.5 18 0 + 5600 5.6 18 0 + 5700 5.7 19 0 + 5800 5.8 19 0 + 5900 5.9 19 0 + 6000 6 19 0 + 6100 6.1 20 0 + 6200 6.2 20 0 + 6300 6.3 20 0 + 6400 6.4 21 0 + 6500 6.5 21 0 + 6600 6.6 21 0 + 6700 6.7 21 0 + 6800 6.8 22 0 + 6900 6.9 22 0 + 7000 7 22 0 + 7100 7.1 23 0 + 7200 7.2 23 0 + 7300 7.3 23 0 + 7400 7.4 24 0 + 7500 7.5 24 0 + 7600 7.6 24 0 + 7700 7.7 25 0 + 7800 7.8 25 0 + 7900 7.9 26 0 + 8000 8 26 0 + 8100 8.1 26 0 + 8200 8.2 26 0 + 8300 8.3 27 0 + 8400 8.4 27 0 + 8500 8.5 27 0 + 8600 8.6 28 0 + 8700 8.7 28 0 + 8800 8.8 28 0 + 8900 8.9 29 0 + 9000 9 29 0 + 9100 9.1 29 0 + 9200 9.2 30 0 + 9300 9.3 30 0 + 9400 9.4 30 0 + 9500 9.5 30 0 + 9600 9.6 31 0 + 9700 9.7 31 0 + 9800 9.8 32 0 + 9900 9.9 32 0 + 10000 10 32 0 +Loop time of 80.9456 on 1 procs for 10000 steps with 900 atoms + +Performance: 10673829.855 ns/day, 0.000 hours/ns, 123.540 timesteps/s +99.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 80.306 | 80.306 | 80.306 | 0.0 | 99.21 +Neigh | 0.017418 | 0.017418 | 0.017418 | 0.0 | 0.02 +Comm | 0.16939 | 0.16939 | 0.16939 | 0.0 | 0.21 +Output | 0.070281 | 0.070281 | 0.070281 | 0.0 | 0.09 +Modify | 0.3154 | 0.3154 | 0.3154 | 0.0 | 0.39 +Other | | 0.067 | | | 0.08 + +Nlocal: 900 ave 900 max 900 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 762 ave 762 max 762 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 40697 ave 40697 max 40697 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 40697 +Ave neighs/atom = 45.2189 +Neighbor list builds = 32 +Dangerous builds = 0 +Total wall time: 0:01:20 diff --git a/examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.4 b/examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.4 new file mode 100644 index 0000000000..f904b78ab4 --- /dev/null +++ b/examples/USER/sdpd/2d-diffusion/log.24Oct18.2d-diffusion.g++.4 @@ -0,0 +1,226 @@ +LAMMPS (24 Oct 2018) +dimension 2 +units micro +atom_style meso + +variable R equal 0.5 # radius of sphere micrometers +variable a equal $R/5 # lattice spacing micrometers +variable a equal 0.5/5 +variable L equal $R*3 +variable L equal 0.5*3 +variable T equal 300. +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 100. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.5 # kernel function cutoff micrometers +variable h equal 0.1*4.5 +variable mass equal $a*$a*$a*${rho_0} +variable mass equal 0.1*$a*$a*${rho_0} +variable mass equal 0.1*0.1*$a*${rho_0} +variable mass equal 0.1*0.1*0.1*${rho_0} +variable mass equal 0.1*0.1*0.1*1 +variable dt equal 1e-3 # timestep microseconds +variable skin equal 0.2*$h +variable skin equal 0.2*0.45 + +region box block -$L $L -$L $L 0 $a units box +region box block -1.5 $L -$L $L 0 $a units box +region box block -1.5 1.5 -$L $L 0 $a units box +region box block -1.5 1.5 -1.5 $L 0 $a units box +region box block -1.5 1.5 -1.5 1.5 0 $a units box +region box block -1.5 1.5 -1.5 1.5 0 0.1 units box +create_box 2 box +Created orthogonal box = (-1.5 -1.5 0) to (1.5 1.5 0.1) + 2 by 2 by 1 MPI processor grid +lattice sq $a +lattice sq 0.1 +Lattice spacing in x,y,z = 0.1 0.1 0.1 + +create_atoms 1 box +Created 900 atoms + Time spent = 0.0010246 secs + +region sphere sphere 0 0 0 $R units box +region sphere sphere 0 0 0 0.5 units box +set region sphere type 2 + 81 settings made for type + +group fluid type 1 +819 atoms in group fluid +group sphere type 2 +81 atoms in group sphere + +mass * ${mass} +mass * 0.001 +set group all meso/rho ${rho_0} +set group all meso/rho 1 + 900 settings made for meso/rho + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_style sdpd/taitwater/isothermal 300 ${mu} 76787 +pair_style sdpd/taitwater/isothermal 300 1 76787 +pair_coeff * * ${rho_0} ${c_0} ${h} +pair_coeff * * 1 ${c_0} ${h} +pair_coeff * * 1 100 ${h} +pair_coeff * * 1 100 0.45 + +fix 1 fluid meso +fix 2 sphere rigid/meso single +1 rigid bodies with 81 atoms + +fix 2d all enforce2d + +neighbor ${skin} bin +neighbor 0.09 bin +neigh_modify delay 0 every 1 check yes +timestep ${dt} +timestep 0.001 + +dump dump_id all atom 100 dump.lammpstrj + +thermo 100 +thermo_style custom step time nbuild ndanger + +run 10000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.54 + ghost atom cutoff = 0.54 + binsize = 0.27, bins = 12 12 1 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair sdpd/taitwater/isothermal, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/2d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.087 | 6.087 | 6.087 Mbytes +Step Time Nbuild Ndanger + 0 0 0 0 + 100 0.1 0 0 + 200 0.2 0 0 + 300 0.3 0 0 + 400 0.4 1 0 + 500 0.5 1 0 + 600 0.6 1 0 + 700 0.7 2 0 + 800 0.8 2 0 + 900 0.9 2 0 + 1000 1 3 0 + 1100 1.1 3 0 + 1200 1.2 3 0 + 1300 1.3 4 0 + 1400 1.4 4 0 + 1500 1.5 5 0 + 1600 1.6 5 0 + 1700 1.7 5 0 + 1800 1.8 6 0 + 1900 1.9 6 0 + 2000 2 6 0 + 2100 2.1 7 0 + 2200 2.2 7 0 + 2300 2.3 7 0 + 2400 2.4 8 0 + 2500 2.5 8 0 + 2600 2.6 8 0 + 2700 2.7 9 0 + 2800 2.8 9 0 + 2900 2.9 9 0 + 3000 3 9 0 + 3100 3.1 10 0 + 3200 3.2 10 0 + 3300 3.3 10 0 + 3400 3.4 11 0 + 3500 3.5 11 0 + 3600 3.6 11 0 + 3700 3.7 12 0 + 3800 3.8 12 0 + 3900 3.9 12 0 + 4000 4 13 0 + 4100 4.1 13 0 + 4200 4.2 13 0 + 4300 4.3 14 0 + 4400 4.4 14 0 + 4500 4.5 15 0 + 4600 4.6 15 0 + 4700 4.7 15 0 + 4800 4.8 16 0 + 4900 4.9 16 0 + 5000 5 16 0 + 5100 5.1 16 0 + 5200 5.2 17 0 + 5300 5.3 17 0 + 5400 5.4 18 0 + 5500 5.5 18 0 + 5600 5.6 19 0 + 5700 5.7 19 0 + 5800 5.8 19 0 + 5900 5.9 20 0 + 6000 6 20 0 + 6100 6.1 20 0 + 6200 6.2 21 0 + 6300 6.3 21 0 + 6400 6.4 21 0 + 6500 6.5 22 0 + 6600 6.6 22 0 + 6700 6.7 22 0 + 6800 6.8 23 0 + 6900 6.9 23 0 + 7000 7 23 0 + 7100 7.1 24 0 + 7200 7.2 24 0 + 7300 7.3 24 0 + 7400 7.4 25 0 + 7500 7.5 25 0 + 7600 7.6 25 0 + 7700 7.7 26 0 + 7800 7.8 26 0 + 7900 7.9 26 0 + 8000 8 27 0 + 8100 8.1 27 0 + 8200 8.2 27 0 + 8300 8.3 28 0 + 8400 8.4 28 0 + 8500 8.5 28 0 + 8600 8.6 28 0 + 8700 8.7 29 0 + 8800 8.8 29 0 + 8900 8.9 29 0 + 9000 9 30 0 + 9100 9.1 30 0 + 9200 9.2 31 0 + 9300 9.3 31 0 + 9400 9.4 31 0 + 9500 9.5 31 0 + 9600 9.6 32 0 + 9700 9.7 32 0 + 9800 9.8 32 0 + 9900 9.9 33 0 + 10000 10 33 0 +Loop time of 69.01 on 4 procs for 10000 steps with 900 atoms + +Performance: 12519931.275 ns/day, 0.000 hours/ns, 144.907 timesteps/s +48.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 56.528 | 57.936 | 58.729 | 11.0 | 83.95 +Neigh | 0.013157 | 0.013382 | 0.013551 | 0.1 | 0.02 +Comm | 8.9594 | 9.7555 | 11.113 | 26.7 | 14.14 +Output | 0.14644 | 0.15009 | 0.15809 | 1.2 | 0.22 +Modify | 0.72913 | 0.91574 | 1.0524 | 12.4 | 1.33 +Other | | 0.2389 | | | 0.35 + +Nlocal: 225 ave 229 max 223 min +Histogram: 1 2 0 0 0 0 0 0 0 1 +Nghost: 442 ave 444 max 439 min +Histogram: 1 0 0 0 1 0 0 0 0 2 +Neighs: 10188.8 ave 10437 max 9932 min +Histogram: 1 0 0 1 0 0 0 1 0 1 + +Total # of neighbors = 40755 +Ave neighs/atom = 45.2833 +Neighbor list builds = 33 +Dangerous builds = 0 +Total wall time: 0:01:09 diff --git a/examples/USER/sdpd/README b/examples/USER/sdpd/README new file mode 100644 index 0000000000..72feff15dc --- /dev/null +++ b/examples/USER/sdpd/README @@ -0,0 +1,24 @@ +Smoothed Dissipative Particle Dynamics examples + +equipartition-verification: + This example verifies the equipartition theorem. + It simulates a periodic box of water with no solid bodies. + If equipartition theorem holds true, the average of each component of + translational kinetic energy should be equal to k_B T, and therefore + vx_sq_check, vy_sq_check, and vz_sq_check should fluctuate near 1. + +2d-diffusion: + This example demonstrates the free diffusion of a disk in 2D. + The 3D simulation is similar but takes much longer to complete. + As with other statistical experiments you need an ensemble to + extract meaningful average quantities. + For a more realistic simulation you should increase the resolution + of the disk/sphere which also necessitates reduction of timestep. + +2d-diffusion-in-shear-flow: + This example demonstrates the diffusion of a disk in shear flow in 2D. + The 3D simulation is similar but takes much longer to complete. + As with other statistical experiments you need an ensemble to + extract meaningful average quantities. + For a more realistic simulation you should increase the resolution + of the disk/sphere which also necessitates reduction of timestep. diff --git a/examples/USER/sdpd/equipartition-verification/in.lammps b/examples/USER/sdpd/equipartition-verification/in.lammps new file mode 100644 index 0000000000..0d06723f59 --- /dev/null +++ b/examples/USER/sdpd/equipartition-verification/in.lammps @@ -0,0 +1,45 @@ +dimension 3 +units micro +atom_style meso + +variable a equal 0.1 # lattice spacing micrometers +variable L equal $a*10 +variable T equal 300. +variable kB equal 1.3806504e-8 # picogram-micrometer^2/(microsecond^2-Kelvin) +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 10. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.0 # kernel function cutoff micrometers +variable mass equal $a*$a*$a*${rho_0} +variable dt equal 5e-4 # timestep microseconds +variable skin equal 0.1*$h + +region box block -$L $L -$L $L -$L $L units box +create_box 1 box +lattice sc $a + +create_atoms 1 box + +mass * ${mass} +set group all meso/rho ${rho_0} + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_coeff * * ${rho_0} ${c_0} ${h} + +variable vx_sq atom vx*vx +variable vy_sq atom vy*vy +variable vz_sq atom vz*vz +compute v_sq all reduce ave v_vx_sq v_vy_sq v_vz_sq +variable vx_sq_check equal c_v_sq[1]*${mass}/${kB}/$T +variable vy_sq_check equal c_v_sq[2]*${mass}/${kB}/$T +variable vz_sq_check equal c_v_sq[3]*${mass}/${kB}/$T + +fix 1 all meso + +neighbor ${skin} bin +timestep ${dt} + +thermo 10 +thermo_style custom step time v_vx_sq_check v_vy_sq_check v_vz_sq_check + +run 200 diff --git a/examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.1 b/examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.1 new file mode 100644 index 0000000000..06ffd699bc --- /dev/null +++ b/examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.1 @@ -0,0 +1,146 @@ +LAMMPS (24 Oct 2018) +dimension 3 +units micro +atom_style meso + +variable a equal 0.1 # lattice spacing micrometers +variable L equal $a*10 +variable L equal 0.1*10 +variable T equal 300. +variable kB equal 1.3806504e-8 # picogram-micrometer^2/(microsecond^2-Kelvin) +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 10. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.0 # kernel function cutoff micrometers +variable h equal 0.1*4.0 +variable mass equal $a*$a*$a*${rho_0} +variable mass equal 0.1*$a*$a*${rho_0} +variable mass equal 0.1*0.1*$a*${rho_0} +variable mass equal 0.1*0.1*0.1*${rho_0} +variable mass equal 0.1*0.1*0.1*1 +variable dt equal 5e-4 # timestep microseconds +variable skin equal 0.1*$h +variable skin equal 0.1*0.4 + +region box block -$L $L -$L $L -$L $L units box +region box block -1 $L -$L $L -$L $L units box +region box block -1 1 -$L $L -$L $L units box +region box block -1 1 -1 $L -$L $L units box +region box block -1 1 -1 1 -$L $L units box +region box block -1 1 -1 1 -1 $L units box +region box block -1 1 -1 1 -1 1 units box +create_box 1 box +Created orthogonal box = (-1 -1 -1) to (1 1 1) + 1 by 1 by 1 MPI processor grid +lattice sc $a +lattice sc 0.1 +Lattice spacing in x,y,z = 0.1 0.1 0.1 + +create_atoms 1 box +Created 8000 atoms + Time spent = 0.00285411 secs + +mass * ${mass} +mass * 0.001 +set group all meso/rho ${rho_0} +set group all meso/rho 1 + 8000 settings made for meso/rho + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_style sdpd/taitwater/isothermal 300 ${mu} 76787 +pair_style sdpd/taitwater/isothermal 300 1 76787 +pair_coeff * * ${rho_0} ${c_0} ${h} +pair_coeff * * 1 ${c_0} ${h} +pair_coeff * * 1 10 ${h} +pair_coeff * * 1 10 0.4 + +variable vx_sq atom vx*vx +variable vy_sq atom vy*vy +variable vz_sq atom vz*vz +compute v_sq all reduce ave v_vx_sq v_vy_sq v_vz_sq +variable vx_sq_check equal c_v_sq[1]*${mass}/${kB}/$T +variable vx_sq_check equal c_v_sq[1]*0.001/${kB}/$T +variable vx_sq_check equal c_v_sq[1]*0.001/1.3806504e-08/$T +variable vx_sq_check equal c_v_sq[1]*0.001/1.3806504e-08/300 +variable vy_sq_check equal c_v_sq[2]*${mass}/${kB}/$T +variable vy_sq_check equal c_v_sq[2]*0.001/${kB}/$T +variable vy_sq_check equal c_v_sq[2]*0.001/1.3806504e-08/$T +variable vy_sq_check equal c_v_sq[2]*0.001/1.3806504e-08/300 +variable vz_sq_check equal c_v_sq[3]*${mass}/${kB}/$T +variable vz_sq_check equal c_v_sq[3]*0.001/${kB}/$T +variable vz_sq_check equal c_v_sq[3]*0.001/1.3806504e-08/$T +variable vz_sq_check equal c_v_sq[3]*0.001/1.3806504e-08/300 + +fix 1 all meso + +neighbor ${skin} bin +neighbor 0.04 bin +timestep ${dt} +timestep 0.0005 + +thermo 10 +thermo_style custom step time v_vx_sq_check v_vy_sq_check v_vz_sq_check + +run 200 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.44 + ghost atom cutoff = 0.44 + binsize = 0.22, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair sdpd/taitwater/isothermal, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 13.54 | 13.54 | 13.54 Mbytes +Step Time v_vx_sq_check v_vy_sq_check v_vz_sq_check + 0 0 0 0 0 + 10 0.005 0.70973271 0.71495693 0.71910087 + 20 0.01 0.90418096 0.88845437 0.89659567 + 30 0.015 0.9590736 0.97880338 0.9619016 + 40 0.02 0.98533774 0.96057682 0.95600448 + 50 0.025 0.96433662 0.96650071 0.95509683 + 60 0.03 0.96598029 0.96373656 0.96734888 + 70 0.035 0.95433045 0.98004764 0.96255924 + 80 0.04 0.97872906 0.95987289 0.96623598 + 90 0.045 0.99913888 0.99255731 0.95616142 + 100 0.05 0.98872675 0.97141018 0.95338841 + 110 0.055 0.97794592 0.97389258 0.98473719 + 120 0.06 0.98389266 0.96716284 0.95504862 + 130 0.065 0.98572886 0.96680923 0.95599065 + 140 0.07 0.97602684 0.97580081 0.9886878 + 150 0.075 0.99172003 0.95027467 0.96028033 + 160 0.08 0.96793247 0.94590928 0.95644301 + 170 0.085 0.94167619 0.98048861 0.93439426 + 180 0.09 0.97277934 0.97383622 0.96900866 + 190 0.095 0.96647288 1.0027643 0.96230782 + 200 0.1 0.94864291 0.95902585 0.96398175 +Loop time of 60.1095 on 1 procs for 200 steps with 8000 atoms + +Performance: 143737.595 ns/day, 0.000 hours/ns, 3.327 timesteps/s +99.7% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 59.92 | 59.92 | 59.92 | 0.0 | 99.68 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.11154 | 0.11154 | 0.11154 | 0.0 | 0.19 +Output | 0.0063498 | 0.0063498 | 0.0063498 | 0.0 | 0.01 +Modify | 0.043546 | 0.043546 | 0.043546 | 0.0 | 0.07 +Other | | 0.02811 | | | 0.05 + +Nlocal: 8000 ave 8000 max 8000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 16389 ave 16389 max 16389 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.456e+06 ave 1.456e+06 max 1.456e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1456000 +Ave neighs/atom = 182 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:01:00 diff --git a/examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.4 b/examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.4 new file mode 100644 index 0000000000..88509f0fd1 --- /dev/null +++ b/examples/USER/sdpd/equipartition-verification/log.24Oct18.equipartition.g++.4 @@ -0,0 +1,146 @@ +LAMMPS (24 Oct 2018) +dimension 3 +units micro +atom_style meso + +variable a equal 0.1 # lattice spacing micrometers +variable L equal $a*10 +variable L equal 0.1*10 +variable T equal 300. +variable kB equal 1.3806504e-8 # picogram-micrometer^2/(microsecond^2-Kelvin) +variable rho_0 equal 1. # density picograms/micrometer^3 +variable c_0 equal 10. # speed of sound micrometers/microsecond +variable mu equal 1. # dynamic viscosity picogram/(micrometer-microsecond) +variable h equal $a*4.0 # kernel function cutoff micrometers +variable h equal 0.1*4.0 +variable mass equal $a*$a*$a*${rho_0} +variable mass equal 0.1*$a*$a*${rho_0} +variable mass equal 0.1*0.1*$a*${rho_0} +variable mass equal 0.1*0.1*0.1*${rho_0} +variable mass equal 0.1*0.1*0.1*1 +variable dt equal 5e-4 # timestep microseconds +variable skin equal 0.1*$h +variable skin equal 0.1*0.4 + +region box block -$L $L -$L $L -$L $L units box +region box block -1 $L -$L $L -$L $L units box +region box block -1 1 -$L $L -$L $L units box +region box block -1 1 -1 $L -$L $L units box +region box block -1 1 -1 1 -$L $L units box +region box block -1 1 -1 1 -1 $L units box +region box block -1 1 -1 1 -1 1 units box +create_box 1 box +Created orthogonal box = (-1 -1 -1) to (1 1 1) + 1 by 2 by 2 MPI processor grid +lattice sc $a +lattice sc 0.1 +Lattice spacing in x,y,z = 0.1 0.1 0.1 + +create_atoms 1 box +Created 8000 atoms + Time spent = 0.00252754 secs + +mass * ${mass} +mass * 0.001 +set group all meso/rho ${rho_0} +set group all meso/rho 1 + 8000 settings made for meso/rho + +pair_style sdpd/taitwater/isothermal $T ${mu} 76787 # temperature viscosity random_seed +pair_style sdpd/taitwater/isothermal 300 ${mu} 76787 +pair_style sdpd/taitwater/isothermal 300 1 76787 +pair_coeff * * ${rho_0} ${c_0} ${h} +pair_coeff * * 1 ${c_0} ${h} +pair_coeff * * 1 10 ${h} +pair_coeff * * 1 10 0.4 + +variable vx_sq atom vx*vx +variable vy_sq atom vy*vy +variable vz_sq atom vz*vz +compute v_sq all reduce ave v_vx_sq v_vy_sq v_vz_sq +variable vx_sq_check equal c_v_sq[1]*${mass}/${kB}/$T +variable vx_sq_check equal c_v_sq[1]*0.001/${kB}/$T +variable vx_sq_check equal c_v_sq[1]*0.001/1.3806504e-08/$T +variable vx_sq_check equal c_v_sq[1]*0.001/1.3806504e-08/300 +variable vy_sq_check equal c_v_sq[2]*${mass}/${kB}/$T +variable vy_sq_check equal c_v_sq[2]*0.001/${kB}/$T +variable vy_sq_check equal c_v_sq[2]*0.001/1.3806504e-08/$T +variable vy_sq_check equal c_v_sq[2]*0.001/1.3806504e-08/300 +variable vz_sq_check equal c_v_sq[3]*${mass}/${kB}/$T +variable vz_sq_check equal c_v_sq[3]*0.001/${kB}/$T +variable vz_sq_check equal c_v_sq[3]*0.001/1.3806504e-08/$T +variable vz_sq_check equal c_v_sq[3]*0.001/1.3806504e-08/300 + +fix 1 all meso + +neighbor ${skin} bin +neighbor 0.04 bin +timestep ${dt} +timestep 0.0005 + +thermo 10 +thermo_style custom step time v_vx_sq_check v_vy_sq_check v_vz_sq_check + +run 200 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 0.44 + ghost atom cutoff = 0.44 + binsize = 0.22, bins = 10 10 10 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair sdpd/taitwater/isothermal, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.795 | 5.795 | 5.795 Mbytes +Step Time v_vx_sq_check v_vy_sq_check v_vz_sq_check + 0 0 0 0 0 + 10 0.005 0.71224819 0.71470372 0.7008956 + 20 0.01 0.90627589 0.90683966 0.90116506 + 30 0.015 0.938505 0.95884272 0.93337542 + 40 0.02 0.94394649 0.93668038 0.96468004 + 50 0.025 0.97152309 0.97546161 0.95107762 + 60 0.03 0.94710871 0.95678322 0.97285504 + 70 0.035 0.96253148 0.95838642 0.95450883 + 80 0.04 0.97581495 0.95278681 0.95099478 + 90 0.045 0.96251614 0.9740684 0.96081505 + 100 0.05 0.94191275 0.97137523 0.94084858 + 110 0.055 0.953406 0.95739684 0.98574522 + 120 0.06 0.99001614 0.99608287 0.9839996 + 130 0.065 0.96575225 0.94309655 0.92847798 + 140 0.07 0.97642687 0.97458638 0.94696406 + 150 0.075 0.99316381 0.96876814 0.95440106 + 160 0.08 0.94589744 0.95264791 0.95495169 + 170 0.085 0.97599092 0.95336014 0.97687718 + 180 0.09 0.97214242 0.9726305 0.9726035 + 190 0.095 0.97577583 0.96523645 0.9756968 + 200 0.1 0.96386053 0.97268854 0.94582436 +Loop time of 32.5247 on 4 procs for 200 steps with 8000 atoms + +Performance: 265644.515 ns/day, 0.000 hours/ns, 6.149 timesteps/s +73.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 27.385 | 28.409 | 28.761 | 11.1 | 87.34 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 3.582 | 3.9343 | 4.9531 | 29.7 | 12.10 +Output | 0.022267 | 0.026073 | 0.033141 | 2.7 | 0.08 +Modify | 0.031714 | 0.033134 | 0.034367 | 0.6 | 0.10 +Other | | 0.1226 | | | 0.38 + +Nlocal: 2000 ave 2000 max 2000 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 8469 ave 8469 max 8469 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 364000 ave 376628 max 351184 min +Histogram: 1 0 1 0 0 0 0 1 0 1 + +Total # of neighbors = 1456000 +Ave neighs/atom = 182 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:32 diff --git a/src/Depend.sh b/src/Depend.sh index a3f4e49667..b7ee740c52 100755 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -107,6 +107,7 @@ fi if (test $1 = "RIGID") then depend USER-OMP + depend USER-SDPD fi if (test $1 = "SNAP") then diff --git a/src/USER-SDPD/Install.sh b/src/USER-SDPD/Install.sh new file mode 100644 index 0000000000..cc4af1c038 --- /dev/null +++ b/src/USER-SDPD/Install.sh @@ -0,0 +1,37 @@ +# Install/Uninstall package files in LAMMPS +# 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 +} + +# package files without dependencies +action pair_sdpd_taitwater_isothermal.h +action pair_sdpd_taitwater_isothermal.cpp +action fix_meso_move.h +action fix_meso_move.cpp + +# package files with dependencies +action fix_rigid_meso.h fix_rigid.h +action fix_rigid_meso.cpp fix_rigid.h diff --git a/src/USER-SDPD/README b/src/USER-SDPD/README new file mode 100644 index 0000000000..88ece7ddbf --- /dev/null +++ b/src/USER-SDPD/README @@ -0,0 +1,13 @@ +This package implements the Smoothed Dissipative Particle Dynamics (SDPD) +method for modelling fluids at mesoscale and diffusion of colloids. +Currently it adds pair style sdpd/taitwater/isothermal for modelling water +at isothermal conditions using the Tait equation of state. +It also adds fix meso/move command to move mesoscopic SPH/SDPD particles with +prescribed velocity and fix rigid/meso command to integrate rigid bodies +composed of mesoscopic SPH/SDPD particles. + +Creator of this package is: + +Morteza Jalalvand +Institute for Advanced Studies in Basic Sciences +jalalvand.m AT gmail DOT com diff --git a/src/USER-SDPD/fix_meso_move.cpp b/src/USER-SDPD/fix_meso_move.cpp new file mode 100644 index 0000000000..3e2902d0cc --- /dev/null +++ b/src/USER-SDPD/fix_meso_move.cpp @@ -0,0 +1,998 @@ +/* ---------------------------------------------------------------------- + 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: + Morteza Jalalvand (IASBS) jalalvand.m AT gmail.com +------------------------------------------------------------------------- */ + +#include "string.h" +#include "math.h" +#include "fix_meso_move.h" +#include "atom.h" +#include "group.h" +#include "update.h" +#include "modify.h" +#include "force.h" +#include "domain.h" +#include "lattice.h" +#include "comm.h" +#include "input.h" +#include "variable.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +enum{LINEAR,WIGGLE,ROTATE,VARIABLE}; +enum{EQUAL,ATOM}; + +/* ---------------------------------------------------------------------- */ + +FixMesoMove::FixMesoMove (LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + xvarstr(NULL), yvarstr(NULL), zvarstr(NULL), + vxvarstr(NULL), vyvarstr(NULL), vzvarstr(NULL), + xoriginal(NULL), displace(NULL), velocity(NULL) { + if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + error->all(FLERR, + "fix meso/move command requires atom_style with both energy and density"); + + if (narg < 4) error->all(FLERR,"Illegal fix meso/move command"); + + restart_global = 1; + restart_peratom = 1; + peratom_flag = 1; + size_peratom_cols = 3; + peratom_freq = 1; + time_integrate = 1; + create_attribute = 1; + displaceflag = 0; + velocityflag = 0; + maxatom = 0; + + // parse args + + int iarg; + + if (strcmp(arg[3],"linear") == 0) { + if (narg < 7) error->all(FLERR,"Illegal fix meso/move command"); + iarg = 7; + mstyle = LINEAR; + if (strcmp(arg[4],"NULL") == 0) vxflag = 0; + else { + vxflag = 1; + vx = force->numeric(FLERR,arg[4]); + } + if (strcmp(arg[5],"NULL") == 0) vyflag = 0; + else { + vyflag = 1; + vy = force->numeric(FLERR,arg[5]); + } + if (strcmp(arg[6],"NULL") == 0) vzflag = 0; + else { + vzflag = 1; + vz = force->numeric(FLERR,arg[6]); + } + + } else if (strcmp(arg[3],"wiggle") == 0) { + if (narg < 8) error->all(FLERR,"Illegal fix meso/move command"); + iarg = 8; + mstyle = WIGGLE; + if (strcmp(arg[4],"NULL") == 0) axflag = 0; + else { + axflag = 1; + ax = force->numeric(FLERR,arg[4]); + } + if (strcmp(arg[5],"NULL") == 0) ayflag = 0; + else { + ayflag = 1; + ay = force->numeric(FLERR,arg[5]); + } + if (strcmp(arg[6],"NULL") == 0) azflag = 0; + else { + azflag = 1; + az = force->numeric(FLERR,arg[6]); + } + period = force->numeric(FLERR,arg[7]); + if (period <= 0.0) error->all(FLERR,"Illegal fix meso/move command"); + + } else if (strcmp(arg[3],"rotate") == 0) { + if (narg < 11) error->all(FLERR,"Illegal fix meso/move command"); + iarg = 11; + mstyle = ROTATE; + point[0] = force->numeric(FLERR,arg[4]); + point[1] = force->numeric(FLERR,arg[5]); + point[2] = force->numeric(FLERR,arg[6]); + axis[0] = force->numeric(FLERR,arg[7]); + axis[1] = force->numeric(FLERR,arg[8]); + axis[2] = force->numeric(FLERR,arg[9]); + period = force->numeric(FLERR,arg[10]); + if (period <= 0.0) error->all(FLERR,"Illegal fix meso/move command"); + + } else if (strcmp(arg[3],"variable") == 0) { + if (narg < 10) error->all(FLERR,"Illegal fix meso/move command"); + iarg = 10; + mstyle = VARIABLE; + if (strcmp(arg[4],"NULL") == 0) xvarstr = NULL; + else if (strstr(arg[4],"v_") == arg[4]) { + int n = strlen(&arg[4][2]) + 1; + xvarstr = new char[n]; + strcpy(xvarstr,&arg[4][2]); + } else error->all(FLERR,"Illegal fix meso/move command"); + if (strcmp(arg[5],"NULL") == 0) yvarstr = NULL; + else if (strstr(arg[5],"v_") == arg[5]) { + int n = strlen(&arg[5][2]) + 1; + yvarstr = new char[n]; + strcpy(yvarstr,&arg[5][2]); + } else error->all(FLERR,"Illegal fix meso/move command"); + if (strcmp(arg[6],"NULL") == 0) zvarstr = NULL; + else if (strstr(arg[6],"v_") == arg[6]) { + int n = strlen(&arg[6][2]) + 1; + zvarstr = new char[n]; + strcpy(zvarstr,&arg[6][2]); + } else error->all(FLERR,"Illegal fix meso/move command"); + if (strcmp(arg[7],"NULL") == 0) vxvarstr = NULL; + else if (strstr(arg[7],"v_") == arg[7]) { + int n = strlen(&arg[7][2]) + 1; + vxvarstr = new char[n]; + strcpy(vxvarstr,&arg[7][2]); + } else error->all(FLERR,"Illegal fix meso/move command"); + if (strcmp(arg[8],"NULL") == 0) vyvarstr = NULL; + else if (strstr(arg[8],"v_") == arg[8]) { + int n = strlen(&arg[8][2]) + 1; + vyvarstr = new char[n]; + strcpy(vyvarstr,&arg[8][2]); + } else error->all(FLERR,"Illegal fix meso/move command"); + if (strcmp(arg[9],"NULL") == 0) vzvarstr = NULL; + else if (strstr(arg[9],"v_") == arg[9]) { + int n = strlen(&arg[9][2]) + 1; + vzvarstr = new char[n]; + strcpy(vzvarstr,&arg[9][2]); + } else error->all(FLERR,"Illegal fix meso/move command"); + + } else error->all(FLERR,"Illegal fix meso/move command"); + + // optional args + + int scaleflag = 1; + + while (iarg < narg) { + if (strcmp(arg[iarg],"units") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix meso/move command"); + if (strcmp(arg[iarg+1],"box") == 0) scaleflag = 0; + else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = 1; + else error->all(FLERR,"Illegal fix meso/move command"); + iarg += 2; + } else error->all(FLERR,"Illegal fix meso/move command"); + } + + // error checks and warnings + + if (domain->dimension == 2) { + if (mstyle == LINEAR && vzflag && vz != 0.0) + error->all(FLERR,"Fix meso/move cannot set linear z motion for 2d problem"); + if (mstyle == WIGGLE && azflag && az != 0.0) + error->all(FLERR,"Fix meso/move cannot set wiggle z motion for 2d problem"); + if (mstyle == ROTATE && (axis[0] != 0.0 || axis[1] != 0.0)) + error->all(FLERR, "Fix meso/move cannot rotate aroung non z-axis for 2d problem"); + if (mstyle == VARIABLE && (zvarstr || vzvarstr)) + error->all(FLERR, "Fix meso/move cannot define z or vz variable for 2d problem"); + } + + // setup scaling and apply scaling factors to velocity & amplitude + + if ((mstyle == LINEAR || mstyle == WIGGLE || mstyle == ROTATE) && + scaleflag) { + double xscale = domain->lattice->xlattice; + double yscale = domain->lattice->ylattice; + double zscale = domain->lattice->zlattice; + + if (mstyle == LINEAR) { + if (vxflag) vx *= xscale; + if (vyflag) vy *= yscale; + if (vzflag) vz *= zscale; + } else if (mstyle == WIGGLE) { + if (axflag) ax *= xscale; + if (ayflag) ay *= yscale; + if (azflag) az *= zscale; + } else if (mstyle == ROTATE) { + point[0] *= xscale; + point[1] *= yscale; + point[2] *= zscale; + } + } + + // set omega_rotate from period + + if (mstyle == WIGGLE || mstyle == ROTATE) omega_rotate = MY_2PI / period; + + // runit = unit vector along rotation axis + + if (mstyle == ROTATE) { + double len = sqrt(axis[0]*axis[0] + axis[1]*axis[1] + axis[2]*axis[2]); + if (len == 0.0) + error->all(FLERR,"Zero length rotation vector with fix meso/move"); + runit[0] = axis[0]/len; + runit[1] = axis[1]/len; + runit[2] = axis[2]/len; + } + + // perform initial allocation of atom-based array + // register with Atom class + + grow_arrays(atom->nmax); + atom->add_callback(0); + atom->add_callback(1); + + displace = velocity = NULL; + + // xoriginal = initial unwrapped positions of atoms + + double **x = atom->x; + imageint *image = atom->image; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) domain->unmap(x[i],image[i],xoriginal[i]); + else xoriginal[i][0] = xoriginal[i][1] = xoriginal[i][2] = 0.0; + } + + time_origin = update->ntimestep; +} + +/* ---------------------------------------------------------------------- */ + +FixMesoMove::~FixMesoMove () { + // unregister callbacks to this fix from Atom class + + atom->delete_callback(id,0); + atom->delete_callback(id,1); + + // delete locally stored arrays + + memory->destroy(xoriginal); + memory->destroy(displace); + memory->destroy(velocity); + + delete [] xvarstr; + delete [] yvarstr; + delete [] zvarstr; + delete [] vxvarstr; + delete [] vyvarstr; + delete [] vzvarstr; +} + +/* ---------------------------------------------------------------------- */ + +int FixMesoMove::setmask () { + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + mask |= PRE_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMesoMove::init () { + dt = update->dt; + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; + + // set indices and style of all variables + + displaceflag = velocityflag = 0; + + if (mstyle == VARIABLE) { + if (xvarstr) { + xvar = input->variable->find(xvarstr); + if (xvar < 0) error->all(FLERR, "Variable name for fix meso/move does not exist"); + if (input->variable->equalstyle(xvar)) xvarstyle = EQUAL; + else if (input->variable->atomstyle(xvar)) xvarstyle = ATOM; + else error->all(FLERR,"Variable for fix meso/move is invalid style"); + } + if (yvarstr) { + yvar = input->variable->find(yvarstr); + if (yvar < 0) error->all(FLERR, "Variable name for fix meso/move does not exist"); + if (input->variable->equalstyle(yvar)) yvarstyle = EQUAL; + else if (input->variable->atomstyle(yvar)) yvarstyle = ATOM; + else error->all(FLERR,"Variable for fix meso/move is invalid style"); + } + if (zvarstr) { + zvar = input->variable->find(zvarstr); + if (zvar < 0) error->all(FLERR, "Variable name for fix meso/move does not exist"); + if (input->variable->equalstyle(zvar)) zvarstyle = EQUAL; + else if (input->variable->atomstyle(zvar)) zvarstyle = ATOM; + else error->all(FLERR,"Variable for fix meso/move is invalid style"); + } + if (vxvarstr) { + vxvar = input->variable->find(vxvarstr); + if (vxvar < 0) error->all(FLERR, "Variable name for fix meso/move does not exist"); + if (input->variable->equalstyle(vxvar)) vxvarstyle = EQUAL; + else if (input->variable->atomstyle(vxvar)) vxvarstyle = ATOM; + else error->all(FLERR,"Variable for fix meso/move is invalid style"); + } + if (vyvarstr) { + vyvar = input->variable->find(vyvarstr); + if (vyvar < 0) error->all(FLERR, "Variable name for fix meso/move does not exist"); + if (input->variable->equalstyle(vyvar)) vyvarstyle = EQUAL; + else if (input->variable->atomstyle(vyvar)) vyvarstyle = ATOM; + else error->all(FLERR,"Variable for fix meso/move is invalid style"); + } + if (vzvarstr) { + vzvar = input->variable->find(vzvarstr); + if (vzvar < 0) error->all(FLERR, "Variable name for fix meso/move does not exist"); + if (input->variable->equalstyle(vzvar)) vzvarstyle = EQUAL; + else if (input->variable->atomstyle(vzvar)) vzvarstyle = ATOM; + else error->all(FLERR,"Variable for fix meso/move is invalid style"); + } + + if (xvarstr && xvarstyle == ATOM) displaceflag = 1; + if (yvarstr && yvarstyle == ATOM) displaceflag = 1; + if (zvarstr && zvarstyle == ATOM) displaceflag = 1; + if (vxvarstr && vxvarstyle == ATOM) velocityflag = 1; + if (vyvarstr && vyvarstyle == ATOM) velocityflag = 1; + if (vzvarstr && vzvarstyle == ATOM) velocityflag = 1; + } + + maxatom = atom->nmax; + memory->destroy(displace); + memory->destroy(velocity); + if (displaceflag) memory->create(displace,maxatom,3,"move:displace"); + else displace = NULL; + if (velocityflag) memory->create(velocity,maxatom,3,"move:velocity"); + else velocity = NULL; +} + +void FixMesoMove::setup_pre_force (int /*vflag*/) { + // set vest equal to v + double **v = atom->v; + double **vest = atom->vest; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + vest[i][0] = v[i][0]; + vest[i][1] = v[i][1]; + vest[i][2] = v[i][2]; + } + } +} + +/* ---------------------------------------------------------------------- + set x,v of particles +------------------------------------------------------------------------- */ + +void FixMesoMove::initial_integrate (int /*vflag*/) { + double ddotr,dx,dy,dz; + double dtfm; + double xold[3],a[3],b[3],c[3],d[3],disp[3],disp_next[3]; + + double delta = (update->ntimestep - time_origin) * dt; + double delta_next = (update->ntimestep - time_origin + 1) * dt; + + double **x = atom->x; + double **v = atom->v; + double **vest = atom->vest; + double *rho = atom->rho; + double *drho = atom->drho; + double *e = atom->e; + double *de = atom->de; + double **f = atom->f; + double **omega = atom->omega; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int rmass_flag = atom->rmass_flag; + + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + // for linear: X = X0 + V*dt + + if (mstyle == LINEAR) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + xold[0] = x[i][0]; + xold[1] = x[i][1]; + xold[2] = x[i][2]; + + e[i] += dtf * de[i]; // half-step update of particle internal energy + rho[i] += dtf * drho[i]; // ... and density + + if (vxflag) { + vest[i][0] = v[i][0] = vx; + x[i][0] = xoriginal[i][0] + vx*delta; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][0] = v[i][0] + 2.0 * dtfm * f[i][0]; + v[i][0] += dtfm * f[i][0]; + x[i][0] += dtv * v[i][0]; + } + + if (vyflag) { + vest[i][1] = v[i][1] = vy; + x[i][1] = xoriginal[i][1] + vy*delta; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][1] = v[i][1] + 2.0 * dtfm * f[i][1]; + v[i][1] += dtfm * f[i][1]; + x[i][1] += dtv * v[i][1]; + } + + if (vzflag) { + vest[i][2] = v[i][2] = vz; + x[i][2] = xoriginal[i][2] + vz*delta; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][2] = v[i][2] + 2.0 * dtfm * f[i][2]; + v[i][2] += dtfm * f[i][2]; + x[i][2] += dtv * v[i][2]; + } + + domain->remap_near(x[i],xold); + } + } + + // for wiggle: X = X0 + A sin(w*dt) + + } else if (mstyle == WIGGLE) { + double arg = omega_rotate * delta; + double arg_next = omega_rotate * delta_next; + double sine = sin(arg); + double cosine = cos(arg); + double cosine_next = cos(arg_next); + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + xold[0] = x[i][0]; + xold[1] = x[i][1]; + xold[2] = x[i][2]; + + e[i] += dtf * de[i]; // half-step update of particle internal energy + rho[i] += dtf * drho[i]; // ... and density + + if (axflag) { + v[i][0] = ax*omega_rotate*cosine; + vest[i][0] = ax*omega_rotate*cosine_next; + x[i][0] = xoriginal[i][0] + ax*sine; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][0] = v[i][0] + 2.0 * dtfm * f[i][0]; + v[i][0] += dtfm * f[i][0]; + x[i][0] += dtv * v[i][0]; + } + + if (ayflag) { + v[i][1] = ay*omega_rotate*cosine; + vest[i][1] = ay*omega_rotate*cosine_next; + x[i][1] = xoriginal[i][1] + ay*sine; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][1] = v[i][1] + 2.0 * dtfm * f[i][1]; + v[i][1] += dtfm * f[i][1]; + x[i][1] += dtv * v[i][1]; + } + + if (azflag) { + v[i][2] = az*omega_rotate*cosine; + vest[i][2] = az*omega_rotate*cosine_next; + x[i][2] = xoriginal[i][2] + az*sine; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][2] = v[i][2] + 2.0 * dtfm * f[i][2]; + v[i][2] += dtfm * f[i][2]; + x[i][2] += dtv * v[i][2]; + } + + domain->remap_near(x[i],xold); + } + } + + // for rotate by right-hand rule around omega: + // P = point = vector = point of rotation + // R = vector = axis of rotation + // w = omega of rotation (from period) + // X0 = xoriginal = initial coord of atom + // R0 = runit = unit vector for R + // D = X0 - P = vector from P to X0 + // C = (D dot R0) R0 = projection of atom coord onto R line + // A = D - C = vector from R line to X0 + // B = R0 cross A = vector perp to A in plane of rotation + // A,B define plane of circular rotation around R line + // X = P + C + A cos(w*dt) + B sin(w*dt) + // V = w R0 cross (A cos(w*dt) + B sin(w*dt)) + + } else if (mstyle == ROTATE) { + double arg = omega_rotate * delta; + double arg_next = omega_rotate * delta_next; + double sine = sin(arg); + double cosine = cos(arg); + double sine_next = sin(arg_next); + double cosine_next = cos(arg_next); + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + xold[0] = x[i][0]; + xold[1] = x[i][1]; + xold[2] = x[i][2]; + + e[i] += dtf * de[i]; // half-step update of particle internal energy + rho[i] += dtf * drho[i]; // ... and density + + d[0] = xoriginal[i][0] - point[0]; + d[1] = xoriginal[i][1] - point[1]; + d[2] = xoriginal[i][2] - point[2]; + ddotr = d[0]*runit[0] + d[1]*runit[1] + d[2]*runit[2]; + c[0] = ddotr*runit[0]; + c[1] = ddotr*runit[1]; + c[2] = ddotr*runit[2]; + a[0] = d[0] - c[0]; + a[1] = d[1] - c[1]; + a[2] = d[2] - c[2]; + b[0] = runit[1]*a[2] - runit[2]*a[1]; + b[1] = runit[2]*a[0] - runit[0]*a[2]; + b[2] = runit[0]*a[1] - runit[1]*a[0]; + disp[0] = a[0]*cosine + b[0]*sine; + disp[1] = a[1]*cosine + b[1]*sine; + disp[2] = a[2]*cosine + b[2]*sine; + disp_next[0] = a[0]*cosine_next + b[0]*sine_next; + disp_next[1] = a[1]*cosine_next + b[1]*sine_next; + disp_next[2] = a[2]*cosine_next + b[2]*sine_next; + + x[i][0] = point[0] + c[0] + disp[0]; + x[i][1] = point[1] + c[1] + disp[1]; + x[i][2] = point[2] + c[2] + disp[2]; + v[i][0] = omega_rotate * (runit[1]*disp[2] - runit[2]*disp[1]); + v[i][1] = omega_rotate * (runit[2]*disp[0] - runit[0]*disp[2]); + v[i][2] = omega_rotate * (runit[0]*disp[1] - runit[1]*disp[0]); + vest[i][0] = omega_rotate * (runit[1]*disp_next[2] - runit[2]*disp_next[1]); + vest[i][1] = omega_rotate * (runit[2]*disp_next[0] - runit[0]*disp_next[2]); + vest[i][2] = omega_rotate * (runit[0]*disp_next[1] - runit[1]*disp_next[0]); + + domain->remap_near(x[i],xold); + } + } + + // for variable: compute x,v from variables + + } else if (mstyle == VARIABLE) { + + // reallocate displace and velocity arrays as necessary + + if ((displaceflag || velocityflag) && atom->nmax > maxatom) { + maxatom = atom->nmax; + if (displaceflag) { + memory->destroy(displace); + memory->create(displace,maxatom,3,"move:displace"); + } + if (velocityflag) { + memory->destroy(velocity); + memory->create(velocity,maxatom,3,"move:velocity"); + } + } + + // pre-compute variable values, wrap with clear/add + + modify->clearstep_compute(); + + if (xvarstr) { + if (xvarstyle == EQUAL) dx = input->variable->compute_equal(xvar); + else input->variable->compute_atom(xvar,igroup,&displace[0][0],3,0); + } + if (yvarstr) { + if (yvarstyle == EQUAL) dy = input->variable->compute_equal(yvar); + else input->variable->compute_atom(yvar,igroup,&displace[0][1],3,0); + } + if (zvarstr) { + if (zvarstyle == EQUAL) dz = input->variable->compute_equal(zvar); + else input->variable->compute_atom(zvar,igroup,&displace[0][2],3,0); + } + if (vxvarstr) { + if (vxvarstyle == EQUAL) vx = input->variable->compute_equal(vxvar); + else input->variable->compute_atom(vxvar,igroup,&velocity[0][0],3,0); + } + if (vyvarstr) { + if (vyvarstyle == EQUAL) vy = input->variable->compute_equal(vyvar); + else input->variable->compute_atom(vyvar,igroup,&velocity[0][1],3,0); + } + if (vzvarstr) { + if (vzvarstyle == EQUAL) vz = input->variable->compute_equal(vzvar); + else input->variable->compute_atom(vzvar,igroup,&velocity[0][2],3,0); + } + + modify->addstep_compute(update->ntimestep + 1); + + // update x,v + // vest (velocity in next step) could be different from v in the next + // step, but this is the best we could do + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + xold[0] = x[i][0]; + xold[1] = x[i][1]; + xold[2] = x[i][2]; + + if (xvarstr && vxvarstr) { + if (vxvarstyle == EQUAL) { + vest[i][0] = 2*vx - v[i][0]; + v[i][0] = vx; + } + else { + vest[i][0] = 2*velocity[i][0] - v[i][0]; + v[i][0] = velocity[i][0]; + } + if (xvarstyle == EQUAL) x[i][0] = xoriginal[i][0] + dx; + else x[i][0] = xoriginal[i][0] + displace[i][0]; + } else if (xvarstr) { + if (xvarstyle == EQUAL) x[i][0] = xoriginal[i][0] + dx; + else x[i][0] = xoriginal[i][0] + displace[i][0]; + } else if (vxvarstr) { + if (vxvarstyle == EQUAL) { + vest[i][0] = 2*vx - v[i][0]; + v[i][0] = vx; + } + else { + vest[i][0] = 2*velocity[i][0] - v[i][0]; + v[i][0] = velocity[i][0]; + } + x[i][0] += dtv * v[i][0]; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][0] = v[i][0] + 2.0 * dtfm * f[i][0]; + v[i][0] += dtfm * f[i][0]; + x[i][0] += dtv * v[i][0]; + } + + if (yvarstr && vyvarstr) { + if (vyvarstyle == EQUAL) { + vest[i][1] = 2*vy - v[i][1]; + v[i][1] = vy; + } + else { + vest[i][1] = 2*velocity[i][1] - v[i][1]; + v[i][1] = velocity[i][1]; + } + if (yvarstyle == EQUAL) x[i][1] = xoriginal[i][1] + dy; + else x[i][1] = xoriginal[i][1] + displace[i][1]; + } else if (yvarstr) { + if (yvarstyle == EQUAL) x[i][1] = xoriginal[i][1] + dy; + else x[i][1] = xoriginal[i][1] + displace[i][1]; + } else if (vyvarstr) { + if (vyvarstyle == EQUAL) { + vest[i][1] = 2*vy - v[i][1]; + v[i][1] = vy; + } + else { + vest[i][1] = 2*velocity[i][1] - v[i][1]; + v[i][1] = velocity[i][1]; + } + x[i][1] += dtv * v[i][1]; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][1] = v[i][1] + 2.0 * dtfm * f[i][1]; + v[i][1] += dtfm * f[i][1]; + x[i][1] += dtv * v[i][1]; + } + + if (zvarstr && vzvarstr) { + if (vzvarstyle == EQUAL) { + vest[i][2] = 2*vz - v[i][2]; + v[i][2] = vz; + } + else { + vest[i][2] = 2*velocity[i][2] - v[i][2]; + v[i][2] = velocity[i][2]; + } + if (zvarstyle == EQUAL) x[i][2] = xoriginal[i][2] + dz; + else x[i][2] = xoriginal[i][2] + displace[i][2]; + } else if (zvarstr) { + if (zvarstyle == EQUAL) x[i][2] = xoriginal[i][2] + dz; + else x[i][2] = xoriginal[i][2] + displace[i][2]; + } else if (vzvarstr) { + if (vzvarstyle == EQUAL) { + vest[i][2] = 2*vz - v[i][2]; + v[i][2] = vz; + } + else { + vest[i][2] = 2*velocity[i][2] - v[i][2]; + v[i][2] = velocity[i][2]; + } + x[i][2] += dtv * v[i][2]; + } else { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + vest[i][2] = v[i][2] + 2.0 * dtfm * f[i][2]; + v[i][2] += dtfm * f[i][2]; + x[i][2] += dtv * v[i][2]; + } + + domain->remap_near(x[i],xold); + } + } + } +} + +/* ---------------------------------------------------------------------- + final NVE of particles with NULL components +------------------------------------------------------------------------- */ + +void FixMesoMove::final_integrate () { + double dtfm; + + int xflag = 1; + if (mstyle == LINEAR && vxflag) xflag = 0; + else if (mstyle == WIGGLE && axflag) xflag = 0; + else if (mstyle == ROTATE) xflag = 0; + else if (mstyle == VARIABLE && (xvarstr || vxvarstr)) xflag = 0; + + int yflag = 1; + if (mstyle == LINEAR && vyflag) yflag = 0; + else if (mstyle == WIGGLE && ayflag) yflag = 0; + else if (mstyle == ROTATE) yflag = 0; + else if (mstyle == VARIABLE && (yvarstr || vyvarstr)) yflag = 0; + + int zflag = 1; + if (mstyle == LINEAR && vzflag) zflag = 0; + else if (mstyle == WIGGLE && azflag) zflag = 0; + else if (mstyle == ROTATE) zflag = 0; + else if (mstyle == VARIABLE && (zvarstr || vzvarstr)) zflag = 0; + + double **v = atom->v; + double **f = atom->f; + double *e = atom->e; + double *de = atom->de; + double *rho = atom->rho; + double *drho = atom->drho; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + int rmass_flag = atom->rmass_flag; + + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + e[i] += dtf * de[i]; + rho[i] += dtf * drho[i]; + + if (xflag) { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + v[i][0] += dtfm * f[i][0]; + } + + if (yflag) { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + v[i][1] += dtfm * f[i][1]; + } + + if (zflag) { + dtfm = rmass_flag ? dtf / rmass[i] : dtf / mass[type[i]]; + v[i][2] += dtfm * f[i][2]; + } + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double FixMesoMove::memory_usage () { + double bytes = atom->nmax*3 * sizeof(double); + if (displaceflag) bytes += atom->nmax*3 * sizeof(double); + if (velocityflag) bytes += atom->nmax*3 * sizeof(double); + return bytes; +} + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixMesoMove::write_restart (FILE *fp) { + int n = 0; + double list[1]; + list[n++] = time_origin; + + if (comm->me == 0) { + int size = n * sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),n,fp); + } +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixMesoMove::restart (char *buf) { + int n = 0; + double *list = (double *) buf; + + time_origin = static_cast (list[n++]); +} + +/* ---------------------------------------------------------------------- + allocate atom-based array +------------------------------------------------------------------------- */ + +void FixMesoMove::grow_arrays (int nmax) { + memory->grow(xoriginal,nmax,3,"move:xoriginal"); + array_atom = xoriginal; +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based array +------------------------------------------------------------------------- */ + +void FixMesoMove::copy_arrays (int i, int j, int /*delflag*/) { + xoriginal[j][0] = xoriginal[i][0]; + xoriginal[j][1] = xoriginal[i][1]; + xoriginal[j][2] = xoriginal[i][2]; +} + +/* ---------------------------------------------------------------------- + initialize one atom's array values, called when atom is created +------------------------------------------------------------------------- */ + +void FixMesoMove::set_arrays (int i) { + double **x = atom->x; + imageint *image = atom->image; + int *mask = atom->mask; + + // particle not in group + + if (!(mask[i] & groupbit)) { + xoriginal[i][0] = xoriginal[i][1] = xoriginal[i][2] = 0.0; + return; + } + + // current time still equal fix creation time + + if (update->ntimestep == time_origin) { + domain->unmap(x[i],image[i],xoriginal[i]); + return; + } + + // backup particle to time_origin + + if (mstyle == VARIABLE) + error->all(FLERR,"Cannot add atoms to fix meso/move variable"); + + domain->unmap(x[i],image[i],xoriginal[i]); + double delta = (update->ntimestep - time_origin) * update->dt; + + if (mstyle == LINEAR) { + if (vxflag) xoriginal[i][0] -= vx * delta; + if (vyflag) xoriginal[i][1] -= vy * delta; + if (vzflag) xoriginal[i][2] -= vz * delta; + } else if (mstyle == WIGGLE) { + double arg = omega_rotate * delta; + double sine = sin(arg); + if (axflag) xoriginal[i][0] -= ax*sine; + if (ayflag) xoriginal[i][1] -= ay*sine; + if (azflag) xoriginal[i][2] -= az*sine; + } else if (mstyle == ROTATE) { + double a[3],b[3],c[3],d[3],disp[3],ddotr; + double arg = - omega_rotate * delta; + double sine = sin(arg); + double cosine = cos(arg); + d[0] = x[i][0] - point[0]; + d[1] = x[i][1] - point[1]; + d[2] = x[i][2] - point[2]; + ddotr = d[0]*runit[0] + d[1]*runit[1] + d[2]*runit[2]; + c[0] = ddotr*runit[0]; + c[1] = ddotr*runit[1]; + c[2] = ddotr*runit[2]; + + a[0] = d[0] - c[0]; + a[1] = d[1] - c[1]; + a[2] = d[2] - c[2]; + b[0] = runit[1]*a[2] - runit[2]*a[1]; + b[1] = runit[2]*a[0] - runit[0]*a[2]; + b[2] = runit[0]*a[1] - runit[1]*a[0]; + disp[0] = a[0]*cosine + b[0]*sine; + disp[1] = a[1]*cosine + b[1]*sine; + disp[2] = a[2]*cosine + b[2]*sine; + + xoriginal[i][0] = point[0] + c[0] + disp[0]; + xoriginal[i][1] = point[1] + c[1] + disp[1]; + xoriginal[i][2] = point[2] + c[2] + disp[2]; + } +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based array for exchange with another proc +------------------------------------------------------------------------- */ + +int FixMesoMove::pack_exchange (int i, double *buf) { + buf[0] = xoriginal[i][0]; + buf[1] = xoriginal[i][1]; + buf[2] = xoriginal[i][2]; + return 3; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based array from exchange with another proc +------------------------------------------------------------------------- */ + +int FixMesoMove::unpack_exchange (int nlocal, double *buf) { + xoriginal[nlocal][0] = buf[0]; + xoriginal[nlocal][1] = buf[1]; + xoriginal[nlocal][2] = buf[2]; + return 3; +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for restart file +------------------------------------------------------------------------- */ + +int FixMesoMove::pack_restart (int i, double *buf) { + buf[0] = 4; + buf[1] = xoriginal[i][0]; + buf[2] = xoriginal[i][1]; + buf[3] = xoriginal[i][2]; + return 4; +} + +/* ---------------------------------------------------------------------- + unpack values from atom->extra array to restart the fix +------------------------------------------------------------------------- */ + +void FixMesoMove::unpack_restart (int nlocal, int nth) { + double **extra = atom->extra; + + // skip to Nth set of extra values + + int m = 0; + for (int i = 0; i < nth; i++) m += static_cast (extra[nlocal][m]); + m++; + + xoriginal[nlocal][0] = extra[nlocal][m++]; + xoriginal[nlocal][1] = extra[nlocal][m++]; + xoriginal[nlocal][2] = extra[nlocal][m++]; +} + +/* ---------------------------------------------------------------------- + maxsize of any atom's restart data +------------------------------------------------------------------------- */ + +int FixMesoMove::maxsize_restart () { + return 4; +} + +/* ---------------------------------------------------------------------- + size of atom nlocal's restart data +------------------------------------------------------------------------- */ + +int FixMesoMove::size_restart (int nlocal) { + return 4; +} + +/* ---------------------------------------------------------------------- */ + +void FixMesoMove::reset_dt () { + error->all(FLERR,"Resetting timestep size is not allowed with fix meso/move"); +} diff --git a/src/USER-SDPD/fix_meso_move.h b/src/USER-SDPD/fix_meso_move.h new file mode 100644 index 0000000000..a5e213ba81 --- /dev/null +++ b/src/USER-SDPD/fix_meso_move.h @@ -0,0 +1,127 @@ +/* -*- 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 + +FixStyle(meso/move,FixMesoMove) + +#else + +#ifndef LMP_FIX_MESO_MOVE_H +#define LMP_FIX_MESO_MOVE_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMesoMove : public Fix { + public: + FixMesoMove (class LAMMPS *, int, char **); + ~FixMesoMove (); + int setmask (); + void init (); + void setup_pre_force (int); + void initial_integrate (int); + void final_integrate (); + + double memory_usage (); + void write_restart (FILE *); + void restart (char *); + void grow_arrays (int); + void copy_arrays (int, int, int); + void set_arrays (int); + int pack_exchange (int, double *); + int unpack_exchange (int, double *); + int pack_restart (int, double *); + void unpack_restart (int, int); + int maxsize_restart (); + int size_restart (int); + + void reset_dt (); + + private: + char *xvarstr,*yvarstr,*zvarstr,*vxvarstr,*vyvarstr,*vzvarstr; + int mstyle; + int vxflag,vyflag,vzflag,axflag,ayflag,azflag; + double vx,vy,vz,ax,ay,az; + double period,omega_rotate; + double point[3],axis[3],runit[3]; + double dt,dtv,dtf; + int xvar,yvar,zvar,vxvar,vyvar,vzvar; + int xvarstyle,yvarstyle,zvarstyle,vxvarstyle,vyvarstyle,vzvarstyle; + int time_origin; + + double **xoriginal; // original coords of atoms + int displaceflag,velocityflag; + int maxatom; + double **displace,**velocity; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Fix meso/move cannot set linear z motion for 2d problem + +Self-explanatory. + +E: Fix meso/move cannot set wiggle z motion for 2d problem + +Self-explanatory. + +E: Fix meso/move cannot rotate aroung non z-axis for 2d problem + +Self-explanatory. + +E: Fix meso/move cannot define z or vz variable for 2d problem + +Self-explanatory. + +W: Fix meso/move does not update angular momentum + +Atoms store this quantity, but fix meso/move does not (yet) update it. + +W: Fix meso/move does not update quaternions + +Atoms store this quantity, but fix meso/move does not (yet) update it. + +E: Zero length rotation vector with fix meso/move + +Self-explanatory. + +E: Variable name for fix meso/move does not exist + +Self-explanatory. + +E: Variable for fix meso/move is invalid style + +Only equal-style variables can be used. + +E: Cannot add atoms to fix meso/move variable + +Atoms can not be added afterwards to this fix option. + +E: Resetting timestep size is not allowed with fix meso/move + +This is because fix meso/move is moving atoms based on elapsed time. + +*/ diff --git a/src/USER-SDPD/fix_rigid_meso.cpp b/src/USER-SDPD/fix_rigid_meso.cpp new file mode 100644 index 0000000000..fd881852f7 --- /dev/null +++ b/src/USER-SDPD/fix_rigid_meso.cpp @@ -0,0 +1,500 @@ +/* ---------------------------------------------------------------------- + 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: Tony Sheh (U Michigan), Trung Dac Nguyen (U Michigan) + references: Kamberaj et al., J. Chem. Phys. 122, 224114 (2005) + Miller et al., J Chem Phys. 116, 8649-8659 (2002) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: + Morteza Jalalvand (IASBS) jalalvand.m AT gmail.com + + This is an extension of fix/rigid/nve to SPH/SDPD particles + You can see the original copyright notice of fix/rigid authors above + Note that the Kamberaj paper was related to the nvt variant + and all codes relevant to that has been removed +------------------------------------------------------------------------- */ + +#include +#include "fix_rigid_meso.h" +#include "math_extra.h" +#include "atom.h" +#include "compute.h" +#include "domain.h" +#include "update.h" +#include "modify.h" +#include "group.h" +#include "force.h" +#include "output.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixRigidMeso::FixRigidMeso (LAMMPS *lmp, int narg, char **arg) : +FixRigid (lmp, narg, arg) { + scalar_flag = 0; + size_array_cols = 28; + if ((atom->e_flag != 1) || (atom->rho_flag != 1)) + error->all (FLERR, "fix rigid/meso command requires atom_style with" + " both energy and density"); + + if (langflag || tstat_flag) + error->all (FLERR,"Can not use thermostat with fix rigid/meso"); + + if (pstat_flag) + error->all (FLERR,"Can not use barostat with fix rigid/meso"); + + // memory allocation and initialization + + memory->create(conjqm,nbody,4,"rigid_nh:conjqm"); +} + +/* ---------------------------------------------------------------------- */ + +FixRigidMeso::~FixRigidMeso () { + memory->destroy(conjqm); +} + +/* ---------------------------------------------------------------------- */ + +int FixRigidMeso::setmask () { + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + mask |= PRE_NEIGHBOR; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixRigidMeso::setup (int vflag) { + FixRigid::setup(vflag); + + double mbody[3]; + for (int ibody = 0; ibody < nbody; ibody++) { + MathExtra::transpose_matvec (ex_space[ibody],ey_space[ibody],ez_space[ibody], + angmom[ibody],mbody); + MathExtra::quatvec (quat[ibody],mbody,conjqm[ibody]); + conjqm[ibody][0] *= 2.0; + conjqm[ibody][1] *= 2.0; + conjqm[ibody][2] *= 2.0; + conjqm[ibody][3] *= 2.0; + } +} + +/* ---------------------------------------------------------------------- + perform preforce velocity Verlet integration + see Kamberaj paper for step references +------------------------------------------------------------------------- */ + +void FixRigidMeso::initial_integrate (int vflag) { + double dtfm,mbody[3],tbody[3],fquat[4]; + double dtf2 = dtf * 2.0; + + // update xcm, vcm, quat, conjqm and angmom + + for (int ibody = 0; ibody < nbody; ibody++) { + + // step 1.1 - update vcm by 1/2 step + + dtfm = dtf / masstotal[ibody]; + vcm[ibody][0] += dtfm * fcm[ibody][0] * fflag[ibody][0]; + vcm[ibody][1] += dtfm * fcm[ibody][1] * fflag[ibody][1]; + vcm[ibody][2] += dtfm * fcm[ibody][2] * fflag[ibody][2]; + + // step 1.2 - update xcm by full step + + xcm[ibody][0] += dtv * vcm[ibody][0]; + xcm[ibody][1] += dtv * vcm[ibody][1]; + xcm[ibody][2] += dtv * vcm[ibody][2]; + + // step 1.3 - apply torque (body coords) to quaternion momentum + + torque[ibody][0] *= tflag[ibody][0]; + torque[ibody][1] *= tflag[ibody][1]; + torque[ibody][2] *= tflag[ibody][2]; + + MathExtra::transpose_matvec (ex_space[ibody],ey_space[ibody],ez_space[ibody], + torque[ibody],tbody); + MathExtra::quatvec (quat[ibody],tbody,fquat); + + conjqm[ibody][0] += dtf2 * fquat[0]; + conjqm[ibody][1] += dtf2 * fquat[1]; + conjqm[ibody][2] += dtf2 * fquat[2]; + conjqm[ibody][3] += dtf2 * fquat[3]; + + // step 1.4 to 1.13 - use no_squish rotate to update p and q + + MathExtra::no_squish_rotate (3,conjqm[ibody],quat[ibody],inertia[ibody],dtq); + MathExtra::no_squish_rotate (2,conjqm[ibody],quat[ibody],inertia[ibody],dtq); + MathExtra::no_squish_rotate (1,conjqm[ibody],quat[ibody],inertia[ibody],dtv); + MathExtra::no_squish_rotate (2,conjqm[ibody],quat[ibody],inertia[ibody],dtq); + MathExtra::no_squish_rotate (3,conjqm[ibody],quat[ibody],inertia[ibody],dtq); + + // update exyz_space + // transform p back to angmom + // update angular velocity + + MathExtra::q_to_exyz (quat[ibody],ex_space[ibody],ey_space[ibody], + ez_space[ibody]); + MathExtra::invquatvec (quat[ibody],conjqm[ibody],mbody); + MathExtra::matvec (ex_space[ibody],ey_space[ibody],ez_space[ibody], + mbody,angmom[ibody]); + + angmom[ibody][0] *= 0.5; + angmom[ibody][1] *= 0.5; + angmom[ibody][2] *= 0.5; + + MathExtra::angmom_to_omega (angmom[ibody],ex_space[ibody],ey_space[ibody], + ez_space[ibody],inertia[ibody],omega[ibody]); + } + + // virial setup before call to set_xv + + if (vflag) v_setup(vflag); + else evflag = 0; + + // set coords/orient and velocity/rotation of atoms in rigid bodies + // from quarternion and omega + + set_xv(); +} + +/* ---------------------------------------------------------------------- */ + +void FixRigidMeso::final_integrate () { + int i,ibody; + double dtfm,xy,xz,yz; + double mbody[3],tbody[3],fquat[4]; + + double dtf2 = dtf * 2.0; + + // late calculation of forces and torques (if requested) + + if (!earlyflag) compute_forces_and_torques(); + + // update vcm and angmom + // fflag,tflag = 0 for some dimensions in 2d + + for (ibody = 0; ibody < nbody; ibody++) { + + // update vcm by 1/2 step + + dtfm = dtf / masstotal[ibody]; + + vcm[ibody][0] += dtfm * fcm[ibody][0] * fflag[ibody][0]; + vcm[ibody][1] += dtfm * fcm[ibody][1] * fflag[ibody][1]; + vcm[ibody][2] += dtfm * fcm[ibody][2] * fflag[ibody][2]; + + // update conjqm, then transform to angmom, set velocity again + // virial is already setup from initial_integrate + + torque[ibody][0] *= tflag[ibody][0]; + torque[ibody][1] *= tflag[ibody][1]; + torque[ibody][2] *= tflag[ibody][2]; + + MathExtra::transpose_matvec (ex_space[ibody],ey_space[ibody], + ez_space[ibody],torque[ibody],tbody); + MathExtra::quatvec (quat[ibody],tbody,fquat); + + conjqm[ibody][0] += dtf2 * fquat[0]; + conjqm[ibody][1] += dtf2 * fquat[1]; + conjqm[ibody][2] += dtf2 * fquat[2]; + conjqm[ibody][3] += dtf2 * fquat[3]; + + MathExtra::invquatvec (quat[ibody],conjqm[ibody],mbody); + MathExtra::matvec (ex_space[ibody],ey_space[ibody],ez_space[ibody], + mbody,angmom[ibody]); + + angmom[ibody][0] *= 0.5; + angmom[ibody][1] *= 0.5; + angmom[ibody][2] *= 0.5; + + MathExtra::angmom_to_omega (angmom[ibody],ex_space[ibody],ey_space[ibody], + ez_space[ibody],inertia[ibody],omega[ibody]); + } + + // set velocity/rotation of atoms in rigid bodies + // virial is already setup from initial_integrate + + set_v(); +} + +/* ---------------------------------------------------------------------- + set space-frame coords and velocity of each atom in each rigid body + set orientation and rotation of extended particles + x = Q displace + Xcm, mapped back to periodic box + v = Vcm + (W cross (x - Xcm)) +------------------------------------------------------------------------- */ + +void FixRigidMeso::set_xv () { + int ibody; + int xbox,ybox,zbox; + double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; + double xy,xz,yz; + double ione[3],exone[3],eyone[3],ezone[3],vr[6],p[3][3]; + + double **x = atom->x; + double **v = atom->v; + double **vest = atom->vest; + double **f = atom->f; + double *e = atom->e; + double *de = atom->de; + double *rho = atom->rho; + double *drho = atom->drho; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int nlocal = atom->nlocal; + + double xprd = domain->xprd; + double yprd = domain->yprd; + double zprd = domain->zprd; + + if (triclinic) { + xy = domain->xy; + xz = domain->xz; + yz = domain->yz; + } + + // set x and v of each atom + + for (int i = 0; i < nlocal; i++) { + if (body[i] < 0) continue; + + // half-step update of particle internal energy and density + e[i] += dtf * de[i]; + rho[i] += dtf * drho[i]; + + ibody = body[i]; + + xbox = (xcmimage[i] & IMGMASK) - IMGMAX; + ybox = (xcmimage[i] >> IMGBITS & IMGMASK) - IMGMAX; + zbox = (xcmimage[i] >> IMG2BITS) - IMGMAX; + + // save old positions and velocities for virial + + if (evflag) { + if (triclinic == 0) { + x0 = x[i][0] + xbox*xprd; + x1 = x[i][1] + ybox*yprd; + x2 = x[i][2] + zbox*zprd; + } else { + x0 = x[i][0] + xbox*xprd + ybox*xy + zbox*xz; + x1 = x[i][1] + ybox*yprd + zbox*yz; + x2 = x[i][2] + zbox*zprd; + } + } + + v0 = v[i][0]; + v1 = v[i][1]; + v2 = v[i][2]; + + // x = displacement from center-of-mass, based on body orientation + // v = vcm + omega around center-of-mass + // vest = 2*v - v_old + + MathExtra::matvec (ex_space[ibody],ey_space[ibody], + ez_space[ibody],displace[i],x[i]); + + v[i][0] = omega[ibody][1]*x[i][2] - omega[ibody][2]*x[i][1] + + vcm[ibody][0]; + v[i][1] = omega[ibody][2]*x[i][0] - omega[ibody][0]*x[i][2] + + vcm[ibody][1]; + v[i][2] = omega[ibody][0]*x[i][1] - omega[ibody][1]*x[i][0] + + vcm[ibody][2]; + + vest[i][0] = 2*v[i][0] - v0; + vest[i][1] = 2*v[i][1] - v1; + vest[i][2] = 2*v[i][2] - v2; + + // add center of mass to displacement + // map back into periodic box via xbox,ybox,zbox + // for triclinic, add in box tilt factors as well + + if (triclinic == 0) { + x[i][0] += xcm[ibody][0] - xbox*xprd; + x[i][1] += xcm[ibody][1] - ybox*yprd; + x[i][2] += xcm[ibody][2] - zbox*zprd; + } else { + x[i][0] += xcm[ibody][0] - xbox*xprd - ybox*xy - zbox*xz; + x[i][1] += xcm[ibody][1] - ybox*yprd - zbox*yz; + x[i][2] += xcm[ibody][2] - zbox*zprd; + } + + // virial = unwrapped coords dotted into body constraint force + // body constraint force = implied force due to v change minus f external + // assume f does not include forces internal to body + // 1/2 factor b/c final_integrate contributes other half + // assume per-atom contribution is due to constraint force on that atom + + if (evflag) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + fc0 = massone*(v[i][0] - v0)/dtf - f[i][0]; + fc1 = massone*(v[i][1] - v1)/dtf - f[i][1]; + fc2 = massone*(v[i][2] - v2)/dtf - f[i][2]; + + vr[0] = 0.5*x0*fc0; + vr[1] = 0.5*x1*fc1; + vr[2] = 0.5*x2*fc2; + vr[3] = 0.5*x0*fc1; + vr[4] = 0.5*x0*fc2; + vr[5] = 0.5*x1*fc2; + + v_tally(1,&i,1.0,vr); + } + } + + // set orientation, omega, angmom of each extended particle + + if (extended) { + // TBD + } +} + +/* ---------------------------------------------------------------------- + set space-frame velocity of each atom in a rigid body + set omega and angmom of extended particles + v = Vcm + (W cross (x - Xcm)) +------------------------------------------------------------------------- */ + +void FixRigidMeso::set_v () { + int xbox,ybox,zbox; + double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; + double xy,xz,yz; + double ione[3],exone[3],eyone[3],ezone[3],delta[3],vr[6]; + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double *e = atom->e; + double *de = atom->de; + double *rho = atom->rho; + double *drho = atom->drho; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int nlocal = atom->nlocal; + + double xprd = domain->xprd; + double yprd = domain->yprd; + double zprd = domain->zprd; + if (triclinic) { + xy = domain->xy; + xz = domain->xz; + yz = domain->yz; + } + + // set v of each atom + + for (int i = 0; i < nlocal; i++) { + if (body[i] < 0) continue; + + // half-step update of particle internal energy and density + e[i] += dtf * de[i]; + rho[i] += dtf * drho[i]; + + const int ibody = body[i]; + + MathExtra::matvec (ex_space[ibody],ey_space[ibody], + ez_space[ibody],displace[i],delta); + + // save old velocities for virial + + if (evflag) { + v0 = v[i][0]; + v1 = v[i][1]; + v2 = v[i][2]; + } + + v[i][0] = omega[ibody][1]*delta[2] - omega[ibody][2]*delta[1] + + vcm[ibody][0]; + v[i][1] = omega[ibody][2]*delta[0] - omega[ibody][0]*delta[2] + + vcm[ibody][1]; + v[i][2] = omega[ibody][0]*delta[1] - omega[ibody][1]*delta[0] + + vcm[ibody][2]; + + // virial = unwrapped coords dotted into body constraint force + // body constraint force = implied force due to v change minus f external + // assume f does not include forces internal to body + // 1/2 factor b/c initial_integrate contributes other half + // assume per-atom contribution is due to constraint force on that atom + + if (evflag) { + if (rmass) massone = rmass[i]; + else massone = mass[type[i]]; + fc0 = massone*(v[i][0] - v0)/dtf - f[i][0]; + fc1 = massone*(v[i][1] - v1)/dtf - f[i][1]; + fc2 = massone*(v[i][2] - v2)/dtf - f[i][2]; + + xbox = (xcmimage[i] & IMGMASK) - IMGMAX; + ybox = (xcmimage[i] >> IMGBITS & IMGMASK) - IMGMAX; + zbox = (xcmimage[i] >> IMG2BITS) - IMGMAX; + + if (triclinic == 0) { + x0 = x[i][0] + xbox*xprd; + x1 = x[i][1] + ybox*yprd; + x2 = x[i][2] + zbox*zprd; + } else { + x0 = x[i][0] + xbox*xprd + ybox*xy + zbox*xz; + x1 = x[i][1] + ybox*yprd + zbox*yz; + x2 = x[i][2] + zbox*zprd; + } + + vr[0] = 0.5*x0*fc0; + vr[1] = 0.5*x1*fc1; + vr[2] = 0.5*x2*fc2; + vr[3] = 0.5*x0*fc1; + vr[4] = 0.5*x0*fc2; + vr[5] = 0.5*x1*fc2; + + v_tally(1,&i,1.0,vr); + } + } + + // set omega, angmom of each extended particle + + if (extended) { + // TBD + } +} + +/* ---------------------------------------------------------------------- + return attributes of a rigid body + 19 values per body + xcm = 0,1,2; vcm = 3,4,5; fcm = 6,7,8; + quat = 9,10,11,12; omega = 13,14,15; torque = 16,17,18; + inertia = 19,20,21; angmom = 22,23,24; + image = 25,26,27 +------------------------------------------------------------------------- */ + +double FixRigidMeso::compute_array (int i, int j) { + if (j < 3) return xcm[i][j]; + if (j < 6) return vcm[i][j-3]; + if (j < 9) return fcm[i][j-6]; + if (j < 13) return quat[i][j-9]; + if (j < 16) return omega[i][j-13]; + if (j < 19) return torque[i][j-16]; + if (j < 22) return inertia[i][j-19]; + if (j < 25) return angmom[i][j-22]; + if (j == 25) return (imagebody[i] & IMGMASK) - IMGMAX; + if (j == 26) return (imagebody[i] >> IMGBITS & IMGMASK) - IMGMAX; + return (imagebody[i] >> IMG2BITS) - IMGMAX; +} diff --git a/src/USER-SDPD/fix_rigid_meso.h b/src/USER-SDPD/fix_rigid_meso.h new file mode 100644 index 0000000000..ac73a9503b --- /dev/null +++ b/src/USER-SDPD/fix_rigid_meso.h @@ -0,0 +1,69 @@ +/* -*- 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 + +FixStyle(rigid/meso,FixRigidMeso) + +#else + +#ifndef LMP_FIX_RIGID_MESO_H +#define LMP_FIX_RIGID_MESO_H + +#include "fix_rigid.h" + +namespace LAMMPS_NS { + +class FixRigidMeso : public FixRigid { + public: + FixRigidMeso (class LAMMPS *, int, char **); + ~FixRigidMeso (); + int setmask (); + void setup (int); + void initial_integrate (int); + void final_integrate (); + double compute_scalar () {} + double compute_array (int, int); + + protected: + void set_xv (); + void set_v (); + double **conjqm; // conjugate quaternion momentum +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: fix rigid/meso command requires atom_style with both energy and density + +You should use atom_style meso with this fix + +E: Can not use thermostat with fix rigid/meso + +Self-explanatory + +E: Can not use barostat with fix rigid/meso + +Self-explanatory + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +*/ diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp new file mode 100644 index 0000000000..d8c32e7f6c --- /dev/null +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -0,0 +1,321 @@ +/* ---------------------------------------------------------------------- + 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: + Morteza Jalalvand (IASBS) jalalvand.m AT gmail.com + + references: Espanol and Revenga, Phys Rev E 67, 026705 (2003) +------------------------------------------------------------------------- */ + +#include +#include +#include "pair_sdpd_taitwater_isothermal.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "domain.h" +#include "update.h" +#ifndef USE_ZEST +#include "random_mars.h" +#endif + +using namespace LAMMPS_NS; + +static const double sqrt_2_inv = std::sqrt(0.5); + +/* ---------------------------------------------------------------------- */ + +PairSDPDTaitwaterIsothermal::PairSDPDTaitwaterIsothermal (LAMMPS *lmp) +: Pair (lmp) { + restartinfo = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairSDPDTaitwaterIsothermal::~PairSDPDTaitwaterIsothermal () { + if (allocated) { + memory->destroy (setflag); + memory->destroy (cutsq); + + memory->destroy (cut); + memory->destroy (rho0); + memory->destroy (soundspeed); + memory->destroy (B); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairSDPDTaitwaterIsothermal::compute (int eflag, int vflag) { + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, fpair; + + int *ilist, *jlist, *numneigh, **firstneigh; + double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc; + double h, ih, ihsq, velx, vely, velz; + double rsq, tmp, wfd, delVdotDelR, deltaE; + double prefactor, wiener[3][3], f_random[3]; + + if (eflag || vflag) ev_setup (eflag, vflag); + else evflag = vflag_fdotr = 0; + + double **v = atom->vest; + double **x = atom->x; + double **f = atom->f; + double *rho = atom->rho; + double *mass = atom->mass; + double *de = atom->de; + double *drho = atom->drho; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + int dimension = domain->dimension; + double dtinv = 1.0 / update->dt; + double kBoltzmann = force->boltz; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + vxtmp = v[i][0]; + vytmp = v[i][1]; + vztmp = v[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + imass = mass[itype]; + + // compute pressure of atom i with Tait EOS + tmp = rho[i] / rho0[itype]; + fi = tmp * tmp * tmp; + fi = B[itype] * (fi * fi * tmp - 1.0) / (rho[i] * rho[i]); + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + jtype = type[j]; + jmass = mass[jtype]; + + if (rsq < cutsq[itype][jtype]) { + h = cut[itype][jtype]; + ih = 1.0 / h; + ihsq = ih * ih; + + double r = sqrt (rsq); + wfd = h - r; + if (dimension == 3) { + // Lucy Kernel, 3d + // Note that wfd, the derivative of the weight function with respect to r, + // is lacking a factor of r. + // The missing factor of r is recovered by + // (1) using delV . delX instead of delV . (delX/r) and + // (2) using f[i][0] += delx * fpair instead of f[i][0] += (delx/r) * fpair + wfd = -25.066903536973515383e0 * wfd * wfd * ihsq * ihsq * ihsq * ih; + } else { + // Lucy Kernel, 2d + wfd = -19.098593171027440292e0 * wfd * wfd * ihsq * ihsq * ihsq; + } + + // compute pressure of atom j with Tait EOS + tmp = rho[j] / rho0[jtype]; + fj = tmp * tmp * tmp; + fj = B[jtype] * (fj * fj * tmp - 1.0) / (rho[j] * rho[j]); + + velx=vxtmp - v[j][0]; + vely=vytmp - v[j][1]; + velz=vztmp - v[j][2]; + + // dot product of velocity delta and distance vector + delVdotDelR = delx * velx + dely * vely + delz * velz; + + // Espanol Viscosity (Espanol, 2003) + + fvisc = (5. / 3.) * viscosity * imass * jmass * wfd / (rho[i]*rho[j]); + + // total pair force + fpair = -imass * jmass * (fi + fj) * wfd; + + // random force calculation + // independent increments of a Wiener process matrix +#ifdef USE_ZEST + wiener[0][0] = gaussian (generator); + wiener[1][1] = gaussian (generator); + wiener[2][2] = gaussian (generator); + + wiener[0][1] = wiener[1][0] = sqrt_2_inv * gaussian (generator); + wiener[0][2] = wiener[2][0] = sqrt_2_inv * gaussian (generator); + wiener[1][2] = wiener[2][1] = sqrt_2_inv * gaussian (generator); +#else + wiener[0][0] = random->gaussian (); + wiener[1][1] = random->gaussian (); + wiener[2][2] = random->gaussian (); + + wiener[0][1] = wiener[1][0] = sqrt_2_inv * random->gaussian (); + wiener[0][2] = wiener[2][0] = sqrt_2_inv * random->gaussian (); + wiener[1][2] = wiener[2][1] = sqrt_2_inv * random->gaussian (); +#endif + + prefactor = sqrt (-4. * kBoltzmann*temperature * fvisc * dtinv) / r; + + f_random[0] = prefactor * (wiener[0][0]*delx + wiener[0][1]*dely + wiener[0][2]*delz); + f_random[1] = prefactor * (wiener[1][0]*delx + wiener[1][1]*dely + wiener[1][2]*delz); + f_random[2] = prefactor * (wiener[2][0]*delx + wiener[2][1]*dely + wiener[2][2]*delz); + + f[i][0] += delx * fpair + (velx + delx * delVdotDelR / rsq) * fvisc + f_random[0]; + f[i][1] += dely * fpair + (vely + dely * delVdotDelR / rsq) * fvisc + f_random[1]; + f[i][2] += delz * fpair + (velz + delz * delVdotDelR / rsq) * fvisc + f_random[2]; + + // and change in density + drho[i] += jmass * delVdotDelR * wfd; + + if (newton_pair || j < nlocal) { + f[j][0] -= delx * fpair + (velx + delx * delVdotDelR / rsq) * fvisc + f_random[0]; + f[j][1] -= dely * fpair + (vely + dely * delVdotDelR / rsq) * fvisc + f_random[1]; + f[j][2] -= delz * fpair + (velz + delz * delVdotDelR / rsq) * fvisc + f_random[2]; + drho[j] += imass * delVdotDelR * wfd; + } + + if (evflag) + ev_tally (i, j, nlocal, newton_pair, 0.0, 0.0, fpair, delx, dely, delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute (); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairSDPDTaitwaterIsothermal::allocate () { + allocated = 1; + int n = atom->ntypes; + + memory->create (setflag, n + 1, n + 1, "pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create (cutsq, n + 1, n + 1, "pair:cutsq"); + + memory->create (rho0, n + 1, "pair:rho0"); + memory->create (soundspeed, n + 1, "pair:soundspeed"); + memory->create (B, n + 1, "pair:B"); + memory->create (cut, n + 1, n + 1, "pair:cut"); +} + +/* ---------------------------------------------------------------------- + global settings + ------------------------------------------------------------------------- */ + +void PairSDPDTaitwaterIsothermal::settings (int narg, char **arg) { + if (narg != 2 && narg != 3) error->all (FLERR, "Illegal number of setting " + "arguments for pair_style sdpd/taitwater/morris/isothermal"); + + temperature = force->numeric (FLERR, arg[0]); + viscosity = force->numeric (FLERR, arg[1]); + + if (temperature <= 0) error->all (FLERR, "Temperature must be positive"); + if (viscosity <= 0) error->all (FLERR, "Viscosity must be positive"); + + // seed is immune to underflow/overflow because it is unsigned + seed = comm->nprocs + comm->me + atom->nlocal; + if (narg == 3) seed += force->inumeric (FLERR, arg[2]); +#ifdef USE_ZEST + generator.seed (seed); +#else + random = new RanMars (lmp, seed); +#endif +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairSDPDTaitwaterIsothermal::coeff (int narg, char **arg) { + if (narg != 5) error->all (FLERR, "Incorrect args for pair_style " + "sph/taitwater/morris coefficients"); + + if (!allocated) allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds (FLERR, arg[0], atom->ntypes, ilo, ihi); + force->bounds (FLERR, arg[1], atom->ntypes, jlo, jhi); + + double rho0_one = force->numeric (FLERR,arg[2]); + double soundspeed_one = force->numeric (FLERR,arg[3]); + double cut_one = force->numeric (FLERR,arg[4]); + double B_one = soundspeed_one * soundspeed_one * rho0_one / 7.0; + + if (rho0_one <= 0) error->all (FLERR, "Density must be positive"); + if (soundspeed_one <= 0) error->all (FLERR, "Sound speed must be positive"); + if (cut_one <= 0) error->all (FLERR, "Cutoff must be positive"); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + rho0[i] = rho0_one; + soundspeed[i] = soundspeed_one; + B[i] = B_one; + for (int j = MAX(jlo,i); j <= jhi; j++) { + cut[i][j] = cut_one; + + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i + ------------------------------------------------------------------------- */ + +double PairSDPDTaitwaterIsothermal::init_one (int i, int j) { + if (setflag[i][j] == 0) + error->all(FLERR,"Not all pair sph/taitwater/morris coeffs are not set"); + + cut[j][i] = cut[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairSDPDTaitwaterIsothermal::single (int /*i*/, int /*j*/, int /*itype*/, + int /*jtype*/, double /*rsq*/, double /*factor_coul*/, + double /*factor_lj*/, double &fforce) { + fforce = 0.0; + + return 0.0; +} diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h new file mode 100644 index 0000000000..afa21c4132 --- /dev/null +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h @@ -0,0 +1,60 @@ +/* -*- 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 PAIR_CLASS + +PairStyle(sdpd/taitwater/isothermal,PairSDPDTaitwaterIsothermal) + +#else + +#ifndef LMP_PAIR_SDPD_TAITWATER_MORRIS_ISOTHERMAL_H +#define LMP_PAIR_SDPD_TAITWATER_MORRIS_ISOTHERMAL_H + +#include "pair.h" +#ifdef USE_ZEST +#include +#include "zest.hpp" +#endif + +namespace LAMMPS_NS { + +class PairSDPDTaitwaterIsothermal : public Pair { + public: + PairSDPDTaitwaterIsothermal (class LAMMPS *); + virtual ~PairSDPDTaitwaterIsothermal (); + virtual void compute (int, int); + void settings (int, char **); + void coeff (int, char **); + virtual double init_one (int, int); + virtual double single (int, int, int, int, double, double, double, double &); + + protected: + double viscosity, temperature; + double *rho0, *soundspeed, *B; + double **cut; + + void allocate (); + + unsigned int seed; +#ifdef USE_ZEST + std::mt19937_64 generator; + Ziggurat gaussian; +#else + class RanMars *random; +#endif +}; + +} + +#endif +#endif -- GitLab From e70a9b0f2634582668cfcec452ad5d51d3297f99 Mon Sep 17 00:00:00 2001 From: Morteza Jalalvand Date: Tue, 30 Oct 2018 19:35:22 +0330 Subject: [PATCH 042/362] updated CMakeLists to handle the optional dependency of USER-SDPD --- cmake/CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a334ba0368..52277f558a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -876,6 +876,20 @@ if(PKG_USER-OMP) include_directories(${USER-OMP_SOURCES_DIR}) endif() +# Fix rigid/meso requires RIGID to be installed +if(PKG_USER-SDPD) + set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD) + + get_property(hlist GLOBAL PROPERTY FIX) + if(NOT PKG_RIGID) + list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h) + list(REMOVE_ITEM LIB_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp) + endif() + set_property(GLOBAL PROPERTY FIX "${hlist}") + + include_directories(${USER-SDPD_SOURCES_DIR}) +endif() + if(PKG_KOKKOS) set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos) set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos) -- GitLab From e3b89b60dc424759267cdef92d272f775106fcc2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 30 Oct 2018 20:43:20 -0400 Subject: [PATCH 043/362] 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) + + # 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 plumed tarball ...") + 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) -- GitLab From 50b99c8450ff35761cf41a856d31ebacbf51da70 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 31 Oct 2018 00:19:06 -0400 Subject: [PATCH 044/362] 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); } -- GitLab From b1c50e3bbe90f1c5289b4d00306bef6e72d3b7d2 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Fri, 2 Nov 2018 19:50:49 +0000 Subject: [PATCH 045/362] 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 -- GitLab From ea9746f26d1da69aa23468f0165561ec7aee8502 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:08:32 -0400 Subject: [PATCH 046/362] 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 -- GitLab From b7e507a2585fe8e42d203c503e106296d5cee650 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:08:45 -0400 Subject: [PATCH 047/362] fix typo and reformat --- doc/src/fix_plumed.txt | 113 +++++++++++++++++++++++------------------ 1 file changed, 63 insertions(+), 50 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 {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. +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. +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) -- GitLab From 30518a993bfe6a402a232ff090c793bf4e8fd847 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:14:04 -0400 Subject: [PATCH 048/362] 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 -- GitLab From d185b34b191c629c41ad63f6d6af741a67f1eb34 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:19:53 -0400 Subject: [PATCH 049/362] 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 }; }; -- GitLab From df3390e224074b18ffe95f9623aef1f1c5be3261 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 21:33:30 -0400 Subject: [PATCH 050/362] update formatting to closer match LAMMPS' programming style --- src/USER-PLUMED/fix_plumed.cpp | 187 ++++++++++++++++++--------------- 1 file changed, 102 insertions(+), 85 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: + + 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,"invalid api version for PLUMED"); -// If the -partition option is activated then enable inter-partition communication + // 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"); -- GitLab From 54c52c3bdfea31eacea8baa2fe111d3a059ca381 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 22:52:36 -0400 Subject: [PATCH 051/362] 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 -- GitLab From 3cb2291a5a70fc982447c04d2d6cc38e61622f93 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 22:52:51 -0400 Subject: [PATCH 052/362] 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" -- GitLab From 18216de084461876f02f676008449b55273dba8a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 23:21:09 -0400 Subject: [PATCH 053/362] 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"); } } -- GitLab From ac11d66d5a6eadba1d4cea4bec0f562899118701 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 2 Nov 2018 23:28:09 -0400 Subject: [PATCH 054/362] 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 -- GitLab From badfdd74332c826b3611fa08741b4eee35e34601 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 3 Nov 2018 00:21:10 -0400 Subject: [PATCH 055/362] download only the plumed-src package and include further tweaks to be compatible with plumed 2.5b --- .../plumed/log.24Oct18.peptide-plumed.g++.4 | 46 +++++++++---------- lib/plumed/Install.py | 33 +++++++++---- src/USER-PLUMED/fix_plumed.cpp | 20 +------- 3 files changed, 48 insertions(+), 51 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 - -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 +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: 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" -- GitLab From cb8c51e353ed21b66dba71f906d57b6d72ac3c69 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sat, 3 Nov 2018 18:13:28 +0000 Subject: [PATCH 056/362] 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); -- GitLab From 8cb665f013a4e212f0b79eb0e49c1a4f66fb7988 Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 4 Nov 2018 10:21:28 +0000 Subject: [PATCH 057/362] 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: -- GitLab From a051d61e1fe382ff7cead7d4619e38713e1f277e Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 4 Nov 2018 11:24:01 +0000 Subject: [PATCH 058/362] 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: -- GitLab From a3c0fe77267fcdf7c10bbc4b424337148e58790b Mon Sep 17 00:00:00 2001 From: Gareth Tribello Date: Sun, 4 Nov 2018 11:43:07 +0000 Subject: [PATCH 059/362] 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; } -- GitLab From a3ca177d20c964caba3e1e45959cedf5203a1162 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 4 Nov 2018 19:52:10 -0500 Subject: [PATCH 060/362] 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 -- GitLab From 58d2f0cc575d2e2cefc722eba7f8b9da39304cb5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 5 Nov 2018 05:55:31 -0700 Subject: [PATCH 061/362] 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}) -- GitLab From ce7f76de1d216156bf390c4a19a431b2129c9309 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 5 Nov 2018 07:39:23 -0700 Subject: [PATCH 062/362] 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() -- GitLab From 7ed6cab04051fc1f0caa62b18068b9df053314cf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 5 Nov 2018 20:35:43 -0500 Subject: [PATCH 063/362] 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 -- GitLab From 84fcf01bedcdc4f7586aaa1b95988427386d8d2c Mon Sep 17 00:00:00 2001 From: jrgissing Date: Tue, 6 Nov 2018 19:59:22 -0700 Subject: [PATCH 064/362] 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(); -- GitLab From bdf73f7adb5c449c5e607746e26fe84d5d6e28e9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:07:35 -0500 Subject: [PATCH 065/362] ignore USER-SDPD files when installed --- src/.gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 4f517af3af..f85e8eb86c 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -485,6 +485,8 @@ /fix_load_report.h /fix_meso.cpp /fix_meso.h +/fix_meso_move.cpp +/fix_meso_move.h /fix_meso_stationary.cpp /fix_meso_stationary.h /fix_mscg.cpp @@ -573,6 +575,8 @@ /fix_rhok.h /fix_rigid.cpp /fix_rigid.h +/fix_rigid_meso.cpp +/fix_rigid_meso.h /fix_rigid_nh.cpp /fix_rigid_nh.h /fix_rigid_nph.cpp @@ -901,6 +905,8 @@ /pair_rebo.h /pair_resquared.cpp /pair_resquared.h +/pair_sdpd_taitwater_isothermal.cpp +/pair_sdpd_taitwater_isothermal.h /pair_sph_heatconduction.cpp /pair_sph_heatconduction.h /pair_sph_idealgas.cpp -- GitLab From df232c1cf68353e55fdecacdf727c8f274b35f48 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:09:05 -0500 Subject: [PATCH 066/362] use c++ style include files for c-library functions --- src/USER-SDPD/fix_meso_move.cpp | 4 ++-- src/USER-SDPD/fix_rigid_meso.cpp | 2 +- src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/USER-SDPD/fix_meso_move.cpp b/src/USER-SDPD/fix_meso_move.cpp index 3e2902d0cc..7dd1b5c34d 100644 --- a/src/USER-SDPD/fix_meso_move.cpp +++ b/src/USER-SDPD/fix_meso_move.cpp @@ -16,8 +16,8 @@ Morteza Jalalvand (IASBS) jalalvand.m AT gmail.com ------------------------------------------------------------------------- */ -#include "string.h" -#include "math.h" +#include +#include #include "fix_meso_move.h" #include "atom.h" #include "group.h" diff --git a/src/USER-SDPD/fix_rigid_meso.cpp b/src/USER-SDPD/fix_rigid_meso.cpp index fd881852f7..0abd850fec 100644 --- a/src/USER-SDPD/fix_rigid_meso.cpp +++ b/src/USER-SDPD/fix_rigid_meso.cpp @@ -27,7 +27,7 @@ and all codes relevant to that has been removed ------------------------------------------------------------------------- */ -#include +#include #include "fix_rigid_meso.h" #include "math_extra.h" #include "atom.h" diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp index d8c32e7f6c..5e19ba542c 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -18,8 +18,8 @@ references: Espanol and Revenga, Phys Rev E 67, 026705 (2003) ------------------------------------------------------------------------- */ -#include -#include +#include +#include #include "pair_sdpd_taitwater_isothermal.h" #include "atom.h" #include "force.h" -- GitLab From 31277349c6f95454d6c0fb94c9d29554bb8de52a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:10:27 -0500 Subject: [PATCH 067/362] remove dead code and avoid compiler warnings --- src/USER-SDPD/fix_meso_move.cpp | 3 +-- src/USER-SDPD/fix_rigid_meso.cpp | 10 +++++----- src/USER-SDPD/fix_rigid_meso.h | 2 +- src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp | 3 +-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/USER-SDPD/fix_meso_move.cpp b/src/USER-SDPD/fix_meso_move.cpp index 7dd1b5c34d..4e591c9088 100644 --- a/src/USER-SDPD/fix_meso_move.cpp +++ b/src/USER-SDPD/fix_meso_move.cpp @@ -397,7 +397,6 @@ void FixMesoMove::initial_integrate (int /*vflag*/) { double *e = atom->e; double *de = atom->de; double **f = atom->f; - double **omega = atom->omega; double *rmass = atom->rmass; double *mass = atom->mass; int *type = atom->type; @@ -987,7 +986,7 @@ int FixMesoMove::maxsize_restart () { size of atom nlocal's restart data ------------------------------------------------------------------------- */ -int FixMesoMove::size_restart (int nlocal) { +int FixMesoMove::size_restart (int /* nlocal */) { return 4; } diff --git a/src/USER-SDPD/fix_rigid_meso.cpp b/src/USER-SDPD/fix_rigid_meso.cpp index 0abd850fec..4889acd0de 100644 --- a/src/USER-SDPD/fix_rigid_meso.cpp +++ b/src/USER-SDPD/fix_rigid_meso.cpp @@ -52,7 +52,7 @@ FixRigid (lmp, narg, arg) { size_array_cols = 28; if ((atom->e_flag != 1) || (atom->rho_flag != 1)) error->all (FLERR, "fix rigid/meso command requires atom_style with" - " both energy and density"); + " both energy and density"); if (langflag || tstat_flag) error->all (FLERR,"Can not use thermostat with fix rigid/meso"); @@ -179,8 +179,8 @@ void FixRigidMeso::initial_integrate (int vflag) { /* ---------------------------------------------------------------------- */ void FixRigidMeso::final_integrate () { - int i,ibody; - double dtfm,xy,xz,yz; + int ibody; + double dtfm; double mbody[3],tbody[3],fquat[4]; double dtf2 = dtf * 2.0; @@ -248,7 +248,7 @@ void FixRigidMeso::set_xv () { int xbox,ybox,zbox; double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; double xy,xz,yz; - double ione[3],exone[3],eyone[3],ezone[3],vr[6],p[3][3]; + double vr[6]; double **x = atom->x; double **v = atom->v; @@ -379,7 +379,7 @@ void FixRigidMeso::set_v () { int xbox,ybox,zbox; double x0,x1,x2,v0,v1,v2,fc0,fc1,fc2,massone; double xy,xz,yz; - double ione[3],exone[3],eyone[3],ezone[3],delta[3],vr[6]; + double delta[3],vr[6]; double **x = atom->x; double **v = atom->v; diff --git a/src/USER-SDPD/fix_rigid_meso.h b/src/USER-SDPD/fix_rigid_meso.h index ac73a9503b..6945e3c144 100644 --- a/src/USER-SDPD/fix_rigid_meso.h +++ b/src/USER-SDPD/fix_rigid_meso.h @@ -32,7 +32,7 @@ class FixRigidMeso : public FixRigid { void setup (int); void initial_integrate (int); void final_integrate (); - double compute_scalar () {} + double compute_scalar () { return 0.0; } double compute_array (int, int); protected: diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp index 5e19ba542c..3a83e41341 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -67,7 +67,7 @@ void PairSDPDTaitwaterIsothermal::compute (int eflag, int vflag) { int *ilist, *jlist, *numneigh, **firstneigh; double vxtmp, vytmp, vztmp, imass, jmass, fi, fj, fvisc; double h, ih, ihsq, velx, vely, velz; - double rsq, tmp, wfd, delVdotDelR, deltaE; + double rsq, tmp, wfd, delVdotDelR; double prefactor, wiener[3][3], f_random[3]; if (eflag || vflag) ev_setup (eflag, vflag); @@ -78,7 +78,6 @@ void PairSDPDTaitwaterIsothermal::compute (int eflag, int vflag) { double **f = atom->f; double *rho = atom->rho; double *mass = atom->mass; - double *de = atom->de; double *drho = atom->drho; int *type = atom->type; int nlocal = atom->nlocal; -- GitLab From 2d12260ade030bebec70d7ce32dce1e8c3852ef1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:13:05 -0500 Subject: [PATCH 068/362] remove bogus single function and set single_enable = 0 --- src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp | 10 +--------- src/USER-SDPD/pair_sdpd_taitwater_isothermal.h | 3 +-- src/USER-SPH/pair_sph_taitwater.cpp | 10 +--------- src/USER-SPH/pair_sph_taitwater.h | 1 - src/USER-SPH/pair_sph_taitwater_morris.cpp | 9 +-------- src/USER-SPH/pair_sph_taitwater_morris.h | 1 - 6 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp index 3a83e41341..9669a2bb13 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -42,6 +42,7 @@ static const double sqrt_2_inv = std::sqrt(0.5); PairSDPDTaitwaterIsothermal::PairSDPDTaitwaterIsothermal (LAMMPS *lmp) : Pair (lmp) { restartinfo = 0; + single_enable =0; } /* ---------------------------------------------------------------------- */ @@ -309,12 +310,3 @@ double PairSDPDTaitwaterIsothermal::init_one (int i, int j) { return cut[i][j]; } -/* ---------------------------------------------------------------------- */ - -double PairSDPDTaitwaterIsothermal::single (int /*i*/, int /*j*/, int /*itype*/, - int /*jtype*/, double /*rsq*/, double /*factor_coul*/, - double /*factor_lj*/, double &fforce) { - fforce = 0.0; - - return 0.0; -} diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h index afa21c4132..caaa0759d0 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.h @@ -36,7 +36,6 @@ class PairSDPDTaitwaterIsothermal : public Pair { void settings (int, char **); void coeff (int, char **); virtual double init_one (int, int); - virtual double single (int, int, int, int, double, double, double, double &); protected: double viscosity, temperature; @@ -44,7 +43,7 @@ class PairSDPDTaitwaterIsothermal : public Pair { double **cut; void allocate (); - + unsigned int seed; #ifdef USE_ZEST std::mt19937_64 generator; diff --git a/src/USER-SPH/pair_sph_taitwater.cpp b/src/USER-SPH/pair_sph_taitwater.cpp index 42b318f2c9..a7a57825b8 100644 --- a/src/USER-SPH/pair_sph_taitwater.cpp +++ b/src/USER-SPH/pair_sph_taitwater.cpp @@ -29,7 +29,7 @@ using namespace LAMMPS_NS; PairSPHTaitwater::PairSPHTaitwater(LAMMPS *lmp) : Pair(lmp) { restartinfo = 0; - + single_enable = 0; first = 1; } @@ -291,11 +291,3 @@ double PairSPHTaitwater::init_one(int i, int j) { return cut[i][j]; } -/* ---------------------------------------------------------------------- */ - -double PairSPHTaitwater::single(int /*i*/, int /*j*/, int /*itype*/, int /*jtype*/, - double /*rsq*/, double /*factor_coul*/, double /*factor_lj*/, double &fforce) { - fforce = 0.0; - - return 0.0; -} diff --git a/src/USER-SPH/pair_sph_taitwater.h b/src/USER-SPH/pair_sph_taitwater.h index adcca80b22..ea4cfd8b26 100644 --- a/src/USER-SPH/pair_sph_taitwater.h +++ b/src/USER-SPH/pair_sph_taitwater.h @@ -32,7 +32,6 @@ class PairSPHTaitwater : public Pair { void settings(int, char **); void coeff(int, char **); virtual double init_one(int, int); - virtual double single(int, int, int, int, double, double, double, double &); protected: double *rho0, *soundspeed, *B; diff --git a/src/USER-SPH/pair_sph_taitwater_morris.cpp b/src/USER-SPH/pair_sph_taitwater_morris.cpp index 8012895af8..f2df992322 100644 --- a/src/USER-SPH/pair_sph_taitwater_morris.cpp +++ b/src/USER-SPH/pair_sph_taitwater_morris.cpp @@ -30,6 +30,7 @@ PairSPHTaitwaterMorris::PairSPHTaitwaterMorris(LAMMPS *lmp) : Pair(lmp) { restartinfo = 0; first = 1; + single_enable = 0; } /* ---------------------------------------------------------------------- */ @@ -287,11 +288,3 @@ double PairSPHTaitwaterMorris::init_one(int i, int j) { return cut[i][j]; } -/* ---------------------------------------------------------------------- */ - -double PairSPHTaitwaterMorris::single(int /*i*/, int /*j*/, int /*itype*/, int /*jtype*/, - double /*rsq*/, double /*factor_coul*/, double /*factor_lj*/, double &fforce) { - fforce = 0.0; - - return 0.0; -} diff --git a/src/USER-SPH/pair_sph_taitwater_morris.h b/src/USER-SPH/pair_sph_taitwater_morris.h index 0a66e0ebaf..2736e347e1 100644 --- a/src/USER-SPH/pair_sph_taitwater_morris.h +++ b/src/USER-SPH/pair_sph_taitwater_morris.h @@ -32,7 +32,6 @@ class PairSPHTaitwaterMorris : public Pair { void settings(int, char **); void coeff(int, char **); virtual double init_one(int, int); - virtual double single(int, int, int, int, double, double, double, double &); protected: double *rho0, *soundspeed, *B; -- GitLab From baa7b705b86c82a2e1727b3ea826b33208e98009 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:13:38 -0500 Subject: [PATCH 069/362] improve logic and grammar of error messages --- src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp | 12 +++++++----- src/USER-SPH/pair_sph_heatconduction.cpp | 2 +- src/USER-SPH/pair_sph_idealgas.cpp | 2 +- src/USER-SPH/pair_sph_lj.cpp | 2 +- src/USER-SPH/pair_sph_rhosum.cpp | 2 +- src/USER-SPH/pair_sph_taitwater.cpp | 4 ++-- src/USER-SPH/pair_sph_taitwater_morris.cpp | 4 ++-- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp index 9669a2bb13..0350843eb7 100644 --- a/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp +++ b/src/USER-SDPD/pair_sdpd_taitwater_isothermal.cpp @@ -238,8 +238,9 @@ void PairSDPDTaitwaterIsothermal::allocate () { ------------------------------------------------------------------------- */ void PairSDPDTaitwaterIsothermal::settings (int narg, char **arg) { - if (narg != 2 && narg != 3) error->all (FLERR, "Illegal number of setting " - "arguments for pair_style sdpd/taitwater/morris/isothermal"); + if (narg != 2 && narg != 3) + error->all (FLERR, "Illegal number of arguments for " + "pair_style sdpd/taitwater/morris/isothermal"); temperature = force->numeric (FLERR, arg[0]); viscosity = force->numeric (FLERR, arg[1]); @@ -262,8 +263,9 @@ void PairSDPDTaitwaterIsothermal::settings (int narg, char **arg) { ------------------------------------------------------------------------- */ void PairSDPDTaitwaterIsothermal::coeff (int narg, char **arg) { - if (narg != 5) error->all (FLERR, "Incorrect args for pair_style " - "sph/taitwater/morris coefficients"); + if (narg != 5) + error->all (FLERR, "Incorrect args for pair_style " + "sph/taitwater/morris coefficients"); if (!allocated) allocate(); @@ -303,7 +305,7 @@ void PairSDPDTaitwaterIsothermal::coeff (int narg, char **arg) { double PairSDPDTaitwaterIsothermal::init_one (int i, int j) { if (setflag[i][j] == 0) - error->all(FLERR,"Not all pair sph/taitwater/morris coeffs are not set"); + error->all(FLERR,"Not all pair sph/taitwater/morris coeffs are set"); cut[j][i] = cut[i][j]; diff --git a/src/USER-SPH/pair_sph_heatconduction.cpp b/src/USER-SPH/pair_sph_heatconduction.cpp index 4a8990d6fd..c93e8040b2 100644 --- a/src/USER-SPH/pair_sph_heatconduction.cpp +++ b/src/USER-SPH/pair_sph_heatconduction.cpp @@ -158,7 +158,7 @@ void PairSPHHeatConduction::allocate() { void PairSPHHeatConduction::settings(int narg, char **/*arg*/) { if (narg != 0) error->all(FLERR, - "Illegal number of setting arguments for pair_style sph/heatconduction"); + "Illegal number of arguments for pair_style sph/heatconduction"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-SPH/pair_sph_idealgas.cpp b/src/USER-SPH/pair_sph_idealgas.cpp index 32b3e61233..d12ee06736 100644 --- a/src/USER-SPH/pair_sph_idealgas.cpp +++ b/src/USER-SPH/pair_sph_idealgas.cpp @@ -200,7 +200,7 @@ void PairSPHIdealGas::allocate() { void PairSPHIdealGas::settings(int narg, char **/*arg*/) { if (narg != 0) error->all(FLERR, - "Illegal number of setting arguments for pair_style sph/idealgas"); + "Illegal number of arguments for pair_style sph/idealgas"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-SPH/pair_sph_lj.cpp b/src/USER-SPH/pair_sph_lj.cpp index c382833baf..3a30ecb5fa 100644 --- a/src/USER-SPH/pair_sph_lj.cpp +++ b/src/USER-SPH/pair_sph_lj.cpp @@ -207,7 +207,7 @@ void PairSPHLJ::allocate() { void PairSPHLJ::settings(int narg, char **/*arg*/) { if (narg != 0) error->all(FLERR, - "Illegal number of setting arguments for pair_style sph/lj"); + "Illegal number of arguments for pair_style sph/lj"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-SPH/pair_sph_rhosum.cpp b/src/USER-SPH/pair_sph_rhosum.cpp index 7a3c78efd0..896a422782 100644 --- a/src/USER-SPH/pair_sph_rhosum.cpp +++ b/src/USER-SPH/pair_sph_rhosum.cpp @@ -228,7 +228,7 @@ void PairSPHRhoSum::allocate() { void PairSPHRhoSum::settings(int narg, char **arg) { if (narg != 1) error->all(FLERR, - "Illegal number of setting arguments for pair_style sph/rhosum"); + "Illegal number of arguments for pair_style sph/rhosum"); nstep = force->inumeric(FLERR,arg[0]); } diff --git a/src/USER-SPH/pair_sph_taitwater.cpp b/src/USER-SPH/pair_sph_taitwater.cpp index a7a57825b8..9d5a417e5b 100644 --- a/src/USER-SPH/pair_sph_taitwater.cpp +++ b/src/USER-SPH/pair_sph_taitwater.cpp @@ -228,7 +228,7 @@ void PairSPHTaitwater::allocate() { void PairSPHTaitwater::settings(int narg, char **/*arg*/) { if (narg != 0) error->all(FLERR, - "Illegal number of setting arguments for pair_style sph/taitwater"); + "Illegal number of arguments for pair_style sph/taitwater"); } /* ---------------------------------------------------------------------- @@ -282,7 +282,7 @@ void PairSPHTaitwater::coeff(int narg, char **arg) { double PairSPHTaitwater::init_one(int i, int j) { if (setflag[i][j] == 0) { - error->all(FLERR,"Not all pair sph/taitwater coeffs are set"); + error->all(FLERR,"All pair sph/taitwater coeffs are set"); } cut[j][i] = cut[i][j]; diff --git a/src/USER-SPH/pair_sph_taitwater_morris.cpp b/src/USER-SPH/pair_sph_taitwater_morris.cpp index f2df992322..fb745ac7da 100644 --- a/src/USER-SPH/pair_sph_taitwater_morris.cpp +++ b/src/USER-SPH/pair_sph_taitwater_morris.cpp @@ -229,7 +229,7 @@ void PairSPHTaitwaterMorris::allocate() { void PairSPHTaitwaterMorris::settings(int narg, char **/*arg*/) { if (narg != 0) error->all(FLERR, - "Illegal number of setting arguments for pair_style sph/taitwater/morris"); + "Illegal number of arguments for pair_style sph/taitwater/morris"); } /* ---------------------------------------------------------------------- @@ -279,7 +279,7 @@ void PairSPHTaitwaterMorris::coeff(int narg, char **arg) { double PairSPHTaitwaterMorris::init_one(int i, int j) { if (setflag[i][j] == 0) { - error->all(FLERR,"Not all pair sph/taitwater/morris coeffs are not set"); + error->all(FLERR,"All pair sph/taitwater/morris coeffs are not set"); } cut[j][i] = cut[i][j]; -- GitLab From a1e8992eac98656b66877ec0ad5e2fed90783b11 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:21:19 -0500 Subject: [PATCH 070/362] replace non-ASCII characters --- doc/src/pair_sdpd_taitwater_isothermal.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/pair_sdpd_taitwater_isothermal.txt b/doc/src/pair_sdpd_taitwater_isothermal.txt index 97b68ceba7..fba97e1bc2 100644 --- a/doc/src/pair_sdpd_taitwater_isothermal.txt +++ b/doc/src/pair_sdpd_taitwater_isothermal.txt @@ -26,7 +26,7 @@ pair_coeff * * 1000.0 1430.0 2.4 :pre The sdpd/taitwater/isothermal style computes forces between mesoscopic particles according to the Smoothed Dissipative Particle Dynamics model -described in this paper by "(Español and Revenga)"_#Español_Revenga under +described in this paper by "(Espanol and Revenga)"_#Espanol_Revenga under the following assumptions: :olb @@ -49,7 +49,7 @@ where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the reference density and c_0 the reference speed of sound. The laminar viscosity and the random forces will be computed according -to formulas described in "(Español and Revenga)"_#Español_Revenga. +to formulas described in "(Espanol and Revenga)"_#Espanol_Revenga. IMPORTANT NOTE: Similar to "brownian"_pair_brownian.html and "dpd"_pair_dpd.html styles, the "newton"_newton.html setting for @@ -104,5 +104,5 @@ The default seed is 0 (before mixing). :line -:link(Español_Revenga) -[(Español and Revenga)] Español, Revenga, Physical Review E, 67, 026705 (2003). +:link(Espanol_Revenga) +[(Espanol and Revenga)] Espanol, Revenga, Physical Review E, 67, 026705 (2003). -- GitLab From bbb371134dca7ce59f0f9d3a38b308d1e4f92b7b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 6 Nov 2018 22:38:02 -0500 Subject: [PATCH 071/362] include USER-SDPD package in list of user packages in conventional make --- src/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 7d31c81c75..b6aa5e0d92 100644 --- a/src/Makefile +++ b/src/Makefile @@ -63,7 +63,7 @@ PACKUSER = user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \ 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-sph user-tally user-uef user-vtk + user-sdpd user-sph user-tally user-uef user-vtk PACKLIB = compress gpu kim kokkos latte meam message mpiio mscg poems \ python reax voronoi \ -- GitLab From f2a29880e28a56305313d86014c66b02de5f6970 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 8 Nov 2018 16:48:43 -0500 Subject: [PATCH 072/362] patch 9Nov2018 --- doc/src/Manual.txt | 4 ++-- src/version.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt index 2777735d6d..b109937034 100644 --- a/doc/src/Manual.txt +++ b/doc/src/Manual.txt @@ -1,7 +1,7 @@ LAMMPS Users Manual - + @@ -21,7 +21,7 @@ :line LAMMPS Documentation :c,h1 -24 Oct 2018 version :c,h2 +9 Nov 2018 version :c,h2 "What is a LAMMPS version?"_Manual_version.html diff --git a/src/version.h b/src/version.h index 62ba229b7e..bf3eb42707 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "24 Oct 2018" +#define LAMMPS_VERSION "9 Nov 2018" -- GitLab From adeb0c2b547df69a8ae15f08df5471858a2d26ad Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 8 Nov 2018 14:17:51 -0500 Subject: [PATCH 073/362] replace faulty preprocessor logic fixes #1196 --- src/USER-VTK/dump_vtk.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/USER-VTK/dump_vtk.cpp b/src/USER-VTK/dump_vtk.cpp index edbc647a81..88e95dd338 100644 --- a/src/USER-VTK/dump_vtk.cpp +++ b/src/USER-VTK/dump_vtk.cpp @@ -93,10 +93,10 @@ enum{VTK,VTP,VTU,PVTP,PVTU}; // file formats #define ONEFIELD 32 #define DELTA 1048576 -#if VTK_MAJOR_VERSION >= 7 -#define InsertNextTupleValue InsertNextTypedTuple -#elif VTK_MAJOR_VERSION > 8 +#if (VTK_MAJOR_VERSION < 5) || (VTK_MAJOR_VERSION > 8) #error This code has only been tested with VTK 5, 6, 7, and 8 +#elif VTK_MAJOR_VERSION > 6 +#define InsertNextTupleValue InsertNextTypedTuple #endif /* ---------------------------------------------------------------------- */ -- GitLab From 62b11596735682c3fa900ee060ace58c0b96e61c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 8 Nov 2018 17:27:39 -0500 Subject: [PATCH 074/362] update presets for USER-PLUMED package. fix typo. --- cmake/presets/all_off.cmake | 2 +- cmake/presets/all_on.cmake | 2 +- cmake/presets/manual_selection.cmake | 3 ++- cmake/presets/nolib.cmake | 2 +- cmake/presets/user.cmake | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cmake/presets/all_off.cmake b/cmake/presets/all_off.cmake index 9021dedc08..b434796d7c 100644 --- a/cmake/presets/all_off.cmake +++ b/cmake/presets/all_off.cmake @@ -13,7 +13,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM 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-SMD USER-VTK) + USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK) set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES}) diff --git a/cmake/presets/all_on.cmake b/cmake/presets/all_on.cmake index ef17e38914..3a1100f337 100644 --- a/cmake/presets/all_on.cmake +++ b/cmake/presets/all_on.cmake @@ -13,7 +13,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM 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-SMD USER-VTK) + USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK) set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES}) diff --git a/cmake/presets/manual_selection.cmake b/cmake/presets/manual_selection.cmake index 35a45a5c87..6db41b708c 100644 --- a/cmake/presets/manual_selection.cmake +++ b/cmake/presets/manual_selection.cmake @@ -56,7 +56,8 @@ set(PKG_USER-MOFFF OFF CACHE BOOL "" FORCE) set(PKG_USER-MOLFILE OFF CACHE BOOL "" FORCE) set(PKG_USER-NETCDF OFF CACHE BOOL "" FORCE) set(PKG_USER-OMP OFF CACHE BOOL "" FORCE) -set(PKG_USER-PHOFFOFF OFF CACHE BOOL "" FORCE) +set(PKG_USER-PHONON OFF CACHE BOOL "" FORCE) +set(PKG_USER-PLUMED OFF CACHE BOOL "" FORCE) set(PKG_USER-QMMM OFF CACHE BOOL "" FORCE) set(PKG_USER-QTB OFF CACHE BOOL "" FORCE) set(PKG_USER-QUIP OFF CACHE BOOL "" FORCE) diff --git a/cmake/presets/nolib.cmake b/cmake/presets/nolib.cmake index 54db12a851..4c02fb6210 100644 --- a/cmake/presets/nolib.cmake +++ b/cmake/presets/nolib.cmake @@ -13,7 +13,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM 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-SMD USER-VTK) + USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK) set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES}) diff --git a/cmake/presets/user.cmake b/cmake/presets/user.cmake index afb030d3d6..af606203e9 100644 --- a/cmake/presets/user.cmake +++ b/cmake/presets/user.cmake @@ -13,7 +13,7 @@ set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVA set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM 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-SMD USER-VTK) + USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK) set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES}) -- GitLab From fe04147ee0ce4f641ee1f378c198f11f5e9fe19b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 9 Nov 2018 01:09:22 -0500 Subject: [PATCH 075/362] fix typo --- tools/msi2lmp/src/MakeLists.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/msi2lmp/src/MakeLists.c b/tools/msi2lmp/src/MakeLists.c index 44b9bdd0af..18b261a561 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) && (i != l)) n++ + if ((l != j) && (i != l)) n++; } } } -- GitLab From ab8215a669750c1f4f7d9da3459847bb2cffe3bb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 9 Nov 2018 01:09:31 -0500 Subject: [PATCH 076/362] remove dead code --- tools/msi2lmp/src/ReadCarFile.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/msi2lmp/src/ReadCarFile.c b/tools/msi2lmp/src/ReadCarFile.c index c6db96cf92..7932f7d6e2 100644 --- a/tools/msi2lmp/src/ReadCarFile.c +++ b/tools/msi2lmp/src/ReadCarFile.c @@ -77,7 +77,6 @@ void ReadCarFile(void) double cos_gamma; double sin_gamma; double cos_beta; - double sin_beta; double A, B, C; double center[3]; double hmat[6]; @@ -265,7 +264,6 @@ void ReadCarFile(void) cos_gamma = cos(pbc[5]*PI_180); sin_gamma = sin(pbc[5]*PI_180); cos_beta = cos(pbc[4]*PI_180); - sin_beta = sin(pbc[4]*PI_180); if (pflag > 2) { printf(" pbc[3] %f pbc[4] %f pbc[5] %f\n", pbc[3] ,pbc[4] ,pbc[5]); printf(" cos_alpha %f cos_beta %f cos_gamma %f\n", cos_alpha ,cos_beta ,cos_gamma); -- GitLab From 729201ab93f7981d5743eec9d93630003210b075 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 9 Nov 2018 08:03:19 -0500 Subject: [PATCH 077/362] fix typo reported in #1199 --- doc/src/Build_basics.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt index 4b3a347bf1..b3ff0a55c5 100644 --- a/doc/src/Build_basics.txt +++ b/doc/src/Build_basics.txt @@ -137,9 +137,9 @@ simply loading the appropriate module before building LAMMPS. -D CMAKE_C_COMPILER=name # name of C compiler -D CMAKE_Fortran_COMPILER=name # name of Fortran compiler :pre --D CMAKE_CXX_FlAGS=string # flags to use with C++ compiler --D CMAKE_C_FlAGS=string # flags to use with C compiler --D CMAKE_Fortran_FlAGS=string # flags to use with Fortran compiler :pre +-D CMAKE_CXX_FLAGS=string # flags to use with C++ compiler +-D CMAKE_C_FLAGS=string # flags to use with C compiler +-D CMAKE_Fortran_FLAGS=string # flags to use with Fortran compiler :pre By default CMake will use a compiler it finds and it will add optimization flags appropriate to that compiler and any "accelerator -- GitLab From 7a4f534676d4cf5fbd5f6559fda27dc5b5f704ae Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 9 Nov 2018 08:03:41 -0500 Subject: [PATCH 078/362] replace non-ASCII character --- doc/src/compute_ptm_atom.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/compute_ptm_atom.txt b/doc/src/compute_ptm_atom.txt index 2e22e4e9fb..8f79fe502b 100644 --- a/doc/src/compute_ptm_atom.txt +++ b/doc/src/compute_ptm_atom.txt @@ -117,5 +117,5 @@ package"_Build_package.html doc page for more info. :line :link(Larsen) -[(Larsen)] Larsen, Schmidt, Schiøtz, Modelling Simul Mater Sci Eng, 24, 055007 (2016). +[(Larsen)] Larsen, Schmidt, Schiotz, Modelling Simul Mater Sci Eng, 24, 055007 (2016). -- GitLab From f68d77c7aff34c3f72693862589945afcd45f5ac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 9 Nov 2018 08:03:58 -0500 Subject: [PATCH 079/362] correct formatting --- doc/src/fix_bond_react.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt index e88bd198f3..55a5785f7f 100644 --- a/doc/src/fix_bond_react.txt +++ b/doc/src/fix_bond_react.txt @@ -41,7 +41,7 @@ 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 + timesteps = number of timesteps to apply internally created nve/limit fix :pre {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 -- GitLab From 86d1304176c4e6b501a39887e5c5aa76771341eb Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 10 Nov 2018 18:58:53 -0700 Subject: [PATCH 080/362] cmake: update doc aobut executables --- cmake/README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/cmake/README.md b/cmake/README.md index 21e728c1f0..b9020bf4a9 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -1492,6 +1492,11 @@ target API. + + BIN2C (CUDA only) + Path to bin2c executable + 1st in path (if found) + @@ -1647,9 +1652,8 @@ requires `gzip` to be in your `PATH` GZIP_EXECUTABLE - - - + path to gzip executable + 1st in path (if found) @@ -1679,9 +1683,8 @@ requires `ffmpeg` to be in your `PATH` FFMPEG_EXECUTABLE - - - + path to ffmpeg executable + 1st in path (if found) -- GitLab From fbd610b8a9573bc6ed360ec599a4196c84a109eb Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 10 Oct 2018 13:39:44 -0600 Subject: [PATCH 081/362] global/local hyperdynamics src and doc files --- doc/fix_hyper_global.txt | 146 +++ doc/fix_hyper_local.txt | 200 ++++ doc/hyper.txt | 117 +++ src/REPLICA/fix_event_hyper.cpp | 95 ++ src/REPLICA/fix_event_hyper.h | 60 ++ src/REPLICA/fix_hyper.cpp | 35 + src/REPLICA/fix_hyper.h | 43 + src/REPLICA/fix_hyper_global.cpp | 497 +++++++++ src/REPLICA/fix_hyper_global.h | 110 ++ src/REPLICA/fix_hyper_local.cpp | 1610 ++++++++++++++++++++++++++++++ src/REPLICA/fix_hyper_local.h | 175 ++++ src/REPLICA/hyper.cpp | 548 ++++++++++ src/REPLICA/hyper.h | 65 ++ 13 files changed, 3701 insertions(+) create mode 100644 doc/fix_hyper_global.txt create mode 100644 doc/fix_hyper_local.txt create mode 100644 doc/hyper.txt create mode 100644 src/REPLICA/fix_event_hyper.cpp create mode 100644 src/REPLICA/fix_event_hyper.h create mode 100644 src/REPLICA/fix_hyper.cpp create mode 100644 src/REPLICA/fix_hyper.h create mode 100644 src/REPLICA/fix_hyper_global.cpp create mode 100644 src/REPLICA/fix_hyper_global.h create mode 100644 src/REPLICA/fix_hyper_local.cpp create mode 100644 src/REPLICA/fix_hyper_local.h create mode 100644 src/REPLICA/hyper.cpp create mode 100644 src/REPLICA/hyper.h diff --git a/doc/fix_hyper_global.txt b/doc/fix_hyper_global.txt new file mode 100644 index 0000000000..c841f0b891 --- /dev/null +++ b/doc/fix_hyper_global.txt @@ -0,0 +1,146 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix hyper/global command :h3 + +[Syntax:] + +fix ID group-ID hyper/global cutbond qfactor Vmax Tequil :pre + +ID, group-ID are documented in "fix"_fix.html command +hyper/global = style name of this fix command +cutbond = max distance at which a pair of atoms is considered bonded (distance units) +qfactor = max strain at which bias potential goes to 0.0 (unitless) +Vmax = height of bias potential (energy units) +Tequil = equilibration temperature (temperature units) :ul + +[Examples:] + +fix 1 all hyper/global 1.0 0.3 0.8 300.0 :pre + +[Description:] + +This fix is meant to be used with the "hyper"_hyper.html command to +perform a bond-boost hyperdynamics simulation. The role of this fix +is a select a single pair of atoms within the system at each timestep +to add a global bias potential to, which will alter their dynamics. +This is in contrast to the "fix hyper/local"_fix_hyper_local.html +command, which can add a local bias potential to multiple pairs of +atoms at each timestep. + +For a system that undergoes rare transition events, where one or more +atoms move across an energy barrier to a new potential energy basin, +the effect of the bias potential is to induce more rapid transitions. +This can lead to a dramatic speed-up in the rate at which events +occurs, without altering their relative frequencies, thus leading to +an overall dramatic speed-up in the effective elapsed time of the +simulation. + +Cite various papers. + +The current strain of a bond IJ is defined as + +Eij = (Rij - R0ij) / R0ij :pre + +Emax = is the max of the absolute value of Eij for all IJ bonds. + +dVij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < q + = 0 otherwise :pre + +Delta Vbias = minimum of dVij for all IJ bonds :pre + +The boost factor B = exp(beta * Delta Vbias) +for a single timestep. + +Thus the accumulated hypertime is simply + +t_hyper = Sum (i = 1 to Nsteps) Bi * dt :pre + +The {cutbond} argument is the cutoff distance for defining bonds +between pairs of nearby atoms. A pair of atoms in their equilibrium, +minimum-energy config, which are a distance Rij < cutbond, are +defined as a bonded pair. + +The {qfactor} argument is the limiting strain at which +the Vbias (the bias potential) goes to 0.0. + +If {qfactor} is too big, then transitions are affected b/c +the bias energy is non-zero at the transitions. If it is +too small than not must boost is achieved for a large system +with many bonds (some bonds Eij always exceeds qfactor). + +The {Vmax} argument is the prefactor on the bias potential. + +The {Tequil} argument is part of the beta term in the +exponential factor that determines how much boost is +achieved as a function of the bias potential. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. + +The "fix_modify"_fix_modify.html {energy} option is supported by this +fix to add the energy of the bias potential to the the system's +potential energy as part of "thermodynamic output"_thermo_style.html. + +This fix computes a global scalar and global vector of length 10, +which can be accessed by various "output +commands"_Section_howto.html#howto_15. The scalar is the magnitude of +the bias potential (energy units) applied on the current timestep. +The vector stores the following quantities: + +1 = boost factor on this step (unitless) +2 = max strain of any bond on this step (unitless) +3 = ID of first atom in the max-strain bond +4 = ID of second atom in the max-strain bond +5 = average # of bonds/atom on this step :ul + +6 = fraction of step with no bias during this run +7 = max drift distance of any atom during this run (distance units) +8 = max bond length during this run (distance units) :ul + +9 = cummulative hyper time since fix created (time units) +10 = cummulative count of event timesteps since fix created +11 = cummulative count of atoms in events since fix created :ul + +The first 5 quantities are for the current timestep. The quantities +6-8 are for the current run. The quantities 9-11 are cummulative +across multiple runs (since the fix was defined in the input script). + +For value 10, events are checked for by the "hyper"_hyper.html command +once every {Nevent} timesteps. This value is the count of the number +of timesteps on which one (or more) events was detected. It is NOT +the number of distinct events, since more than one physical event may +occur in the same {Nevent} time window. + +For value 11, each time the "hyper"_hyper.html command checks for an +event, the event compute it uses will flag zero or more atoms as +participating in an event. E.g. atoms that have displaced more than +some distance from the previous quench state. This value is the count +of the number of atoms participating in any of the events that were +found. + +The scalar and vector values calculated by this fix are all +"intensive". + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. This fix is not invoked during "energy +minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the REPLICA package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"fix hyper/local"_fix_hyper_local.html + +[Default:] None diff --git a/doc/fix_hyper_local.txt b/doc/fix_hyper_local.txt new file mode 100644 index 0000000000..ef98637fa5 --- /dev/null +++ b/doc/fix_hyper_local.txt @@ -0,0 +1,200 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +fix hyper/local command :h3 + +[Syntax:] + +fix ID group-ID hyper/local cutbond qfactor Vmax Tequil Dcut alpha boost :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +hyper/local = style name of this fix command :l +cutbond = max distance at which a pair of atoms is considered bonded (distance units) :l +qfactor = max strain at which bias potential goes to 0.0 (unitless) :l +Vmax = estimated height of bias potential (energy units) :l +Tequil = equilibration temperature (temperature units) :l +Dcut = min distance between boosted bonds (distance units) :l +alpha = boostostat relaxation time (time units) :l +boost = desired time boost factor (unitless) :l +zero or more keyword/value pairs may be appended :l +keyword = {histo} or {lost} or {check/bias} or {check/coeff} + {histo} values = Nevery Nbin delta Nout + Nevery = histogram bond bias coefficients every this many timesteps + Nbin = # of histogram bins + delta = width of each histogram bin + Nout = output histogram counts every this many timesteps + {lostbond} value = error/warn/ignore + {check/bias} values = Nevery error/warn/ignore + {check/coeff} values = Nevery error/warn/ignore :pre +:ule + +[Examples:] + +fix 1 all hyper/local 1.0 0.3 0.8 300.0 :pre + +[Description:] + +This fix is meant to be used with the "hyper"_hyper.html command to +perform a bond-boost hyperdynamics simulation. The role of this fix +is a select a multiple pairs of atoms within the system at each +timestep to add a local bias potential to, which will alter their +dynamics. This is in contrast to the "fix +hyper/global"_fix_hyper_global.html command, which adds a global bias +potential to a single pair of atoms at each timestep. + +For a system that undergoes rare transition events, where one or more +atoms move across an energy barrier to a new potential energy basin, +the effect of the bias potential is to induce more rapid transitions. +This can lead to a dramatic speed-up in the rate at which events +occurs, without altering their relative frequencies, thus leading to +an overall dramatic speed-up in the effective wall-clock time of the +simulation. + +Cite various papers. + +The current strain of a bond IJ is defined as + +Eij = (Rij - R0ij) / R0ij + +Emax = is the max of the absolute value of Eij for all IJ bonds. + +dVij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < q + = 0 otherwise + +Delta Vbias = minimum of dVij for all IJ bonds + +The boost factor B = exp(beta * Delta Vbias) +for a single timestep. + +Thus the accumulated hypertime is simply + +t_hyper = Sum (i = 1 to Nsteps) Bi * dt + +NOTE: Add eqs for boostostat and boost coeff. +Explain how many bonds are boosted simultaneously +and how to choose boost factor and initial Vmax. + +The {cutbond} argument is the cutoff distance for defining bonds +between pairs of nearby atoms. A pair of atoms in their equilibrium, +minimum-energy config, which are a distance Rij < cutbond, are +defined as a bonded pair. + +The {qfactor} argument is the limiting strain at which +the Vbias (the bias potential) goes to 0.0. + +If qfactor is too big, then transitions are affected b/c +the bias energy is non-zero at the transitions. If it is +too small than not must boost is achieved for a large system +with many bonds (some bonds Eij always exceeds qfactor). + +The {Vmax} argument is the initial prefactor on the bias potential. +Should be chosen as estimate of final. Will be adjusted by +boost cooeficient + +The {Tequil} argument is part of the beta term in the +exponential factor that determines how much boost is +achieved as a function of the bias potential. + +The {Dcut} argument is the distance required between two bonds for +them to be selected as both being boosted. The distance is between +the center points of each bond. Actually between any pair of atoms in +either bond. + +The {alpha} argument is a pre-factor on the update equation +for each atom's boostostat: + +NOTE: give equation above + +Note that the units for {alpha} are in time units, similar +to other thermostat or barostat damping parameters + +The {boost} argument is the desired boost factor (e.g. 100x) +that all the atoms in the system will experience. + +NOTE: explain how to choose good value for this. If this parameter is +chosen to be too large, then the bias potential applied to pairs of +bonded atoms may become unphysically large, leading to bad dynamics. +If chosen too small, the hyperdynamics run may be inefficient in the +sense that events take a long time to occur. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. + +The "fix_modify"_fix_modify.html {energy} option is supported by this +fix to add the energy of the bias potential to the the system's +potential energy as part of "thermodynamic output"_thermo_style.html. + +This fix computes a global scalar and global vector of length 23, +which can be accessed by various "output +commands"_Section_howto.html#howto_15. The scalar is the magnitude of +the bias potential (energy units) applied on the current timestep, +summed over all biased bonds. The vector stores the following +quantities: + +1 = # of boosted bonds on this step +2 = max strain of any bond on this step (unitless) +3 = average bias potential for all bonds on this step (energy units) +4 = average bonds/atom on this step +5 = average neighbor bonds/bond on this step :ul + +6 = fraction of steps and bonds with no bias during this run +7 = max drift distance of any atom during this run (distance units) +8 = max bond length during this run (distance units) +9 = average # of boosted bonds/step during this run +10 = average bias potential for all bonds during this run (energy units) +11 = max bias potential for any bond during this run (energy units) +12 = min bias potential for any bond during this run (energy units) +13 = max distance from my box of any ghost atom with maxstrain < qfactor during th +is run (distance units) +14 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units) +15 = count of ghost neighbor atoms not found on reneighbor steps during this run +16 = count of lost bond partners during this run +17 = average bias coeff for lost bond partners during this run +18 = count of bias overlaps found during this run +19 = count of non-matching bias coefficients found during this run :ul + +20 = cummulative hyper time since fix created (time units) +21 = cummulative count of event timesteps since fix created +22 = cummulative count of atoms in events since fix created +23 = cummulative # of new bonds since fix created :ul + +The first quantities (1-5) are for the current timestep. The +quantities 6-19 are for the current hyper run. They are reset each +time a new hyper run is performed. The quantities 20-23 are +cummulative across multiple hyper runs, They are only set to initial +values once, when this fix is defined in the input script. + +For value 6, the numerator is a count of all biased bonds on every +timestep whose bias value = 0.0. The denominator is the count of all +biased bonds on all timesteps. + +For values 13 and 14, the maxstrain of a ghost atom is the maxstrain +of any bond it is part of, and it is checked for ghost atoms within +the bond neighbor cutoff. + +The scalar and vector values calculated by this fix are all +"intensive". + +No parameter of this fix can be used with the {start/stop} keywords of +the "run"_run.html command. This fix is not invoked during "energy +minimization"_minimize.html. + +[Restrictions:] + +This fix is part of the REPLICA package. It is only enabled if LAMMPS +was built with that package. See the "Making +LAMMPS"_Section_start.html#start_3 section for more info. + +[Related commands:] + +"hyper"_hyper.html, "fix hyper/global"_fix_hyper_global.html + +[Default:] None + diff --git a/doc/hyper.txt b/doc/hyper.txt new file mode 100644 index 0000000000..966d33a30f --- /dev/null +++ b/doc/hyper.txt @@ -0,0 +1,117 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +hyper command :h3 + +[Syntax:] + +hyper N Nevent fixID computeID keyword values ... :pre + +N = # of timesteps to run :ulb,l +Nevent = check for events every this many steps :l +fixID = ID of a fix that applies a global or local bias potential :l +computeID = ID of a compute that identifies when an event has occurred :l +zero or more keyword/value pairs may be appended :l +keyword = {min} or {time} :l + {min} values = etol ftol maxiter maxeval + etol = stopping tolerance for energy, used in quenching + ftol = stopping tolerance for force, used in quenching + maxiter = max iterations of minimize, used in quenching + maxeval = max number of force/energy evaluations, used in quenching + {time} value = {steps} or {clock} + {steps} = simulation runs for N timesteps (default) + {clock} = simulation runs until hyper time exceeds N timesteps :pre +:ule + +[Examples:] + +hyper 5000 100 global event :pre + +[Description:] + +Run a bond-boost hyperdynamics (HD) simulation where time is +accelerated by application of a bias potential to a one or more pairs +of atoms in the system. This command can be used to run both global +and local hyperdyamics. In global HD a single bond (nearby pair of +atoms) within the system is biased on a given timestep. In local HD +multiple bonds (separated by a sufficient distance) can be biased +simultaneously at each timestep. + +Make next paragraph more HD-specific. + +Both global and local HD are described in "this paper"_#Voter2013 by +Art Voter and collaborators. They are methods for performing +accelerated dynamics that is suitable for infrequent-event systems +that obey first-order kinetics. A good overview of accelerated +dynamics methods for such systems in given in "this review +paper"_#Voter2002prd from the same group. To quote from the paper: +"The dynamical evolution is characterized by vibrational excursions +within a potential basin, punctuated by occasional transitions between +basins." The transition probability is characterized by p(t) = +k*exp(-kt) where k is the rate constant. Running multiple replicas +gives an effective enhancement in the timescale spanned by the +multiple simulations, while waiting for an event to occur. + +How different than PRD. + +An HD run has several stages, which are repeated each time an "event" +occurs, as defined below. The logic for a HD run is as follows: + +quench +reset list of bonds :pre + +while (time remains): + run dynamics for Nevery steps + quench + check for an event + if event occurred: reset list of bonds + restore pre-quench state :pre + +Explain each of the steps above. Explain what list of bonds is and +how event is detected. + +Explain the specified fix and compute. + +Statistics about the number of events, the number of bonds that a bias +potential is applied to, the accumulated hyper time, etc are stored by +the fix and can be output with thermodynamic output. + +:line + +[Restrictions:] + +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Making LAMMPS"_Section_start.html#start_3 section +for more info on packages. + +NOTE: is this true? +This command cannot be used when any fixes are defined that keep track +of elapsed time to perform time-dependent operations. Examples +include the "ave" fixes such as "fix ave/chunk"_fix_ave_chunk.html. +Also "fix dt/reset"_fix_dt_reset.html and "fix +deposit"_fix_deposit.html. + +[Related commands:] + +"fix hyper/global"_fix_hyper_global.html, "fix +hyper/local"_fix_hyper_local.html, "compute +event/displace"_compute_event_displace.html + +[Default:] + +The option defaults are min = 0.1 0.1 40 50 and time = steps. + +:line + +:link(Voter2013) +[(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139, +144110 (2013). + +:link(Voter2002prd) +[(Voter2002)] Voter, Montalenti, Germann, Annual Review of Materials +Research 32, 321 (2002). diff --git a/src/REPLICA/fix_event_hyper.cpp b/src/REPLICA/fix_event_hyper.cpp new file mode 100644 index 0000000000..7dd306c735 --- /dev/null +++ b/src/REPLICA/fix_event_hyper.cpp @@ -0,0 +1,95 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_event_hyper.h" +#include "atom.h" +#include "update.h" +#include "domain.h" +#include "neighbor.h" +#include "comm.h" +#include "universe.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixEventHyper::FixEventHyper(LAMMPS *lmp, int narg, char **arg) : + FixEvent(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal fix event command"); + + restart_global = 1; + + event_number = 0; + event_timestep = update->ntimestep; + clock = 0; +} + +/* ---------------------------------------------------------------------- + save current atom coords as an event (via call to base class) + called when an event occurs in some replica + set event_timestep = when event occurred in a particular replica + update clock = elapsed time since last event, across all replicas +------------------------------------------------------------------------- */ + +void FixEventHyper::store_event_hyper(bigint ntimestep, int delta_clock) +{ + store_event(); + event_timestep = ntimestep; + clock += delta_clock; + event_number++; +} + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixEventHyper::write_restart(FILE *fp) +{ + int n = 0; + double list[6]; + list[n++] = event_number; + list[n++] = event_timestep; + list[n++] = clock; + list[n++] = replica_number; + list[n++] = correlated_event; + list[n++] = ncoincident; + + if (comm->me == 0) { + int size = n * sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),n,fp); + } +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixEventHyper::restart(char *buf) +{ + int n = 0; + double *list = (double *) buf; + + event_number = static_cast (list[n++]); + event_timestep = static_cast (list[n++]); + clock = static_cast (list[n++]); + replica_number = static_cast (list[n++]); + correlated_event = static_cast (list[n++]); + ncoincident = static_cast (list[n++]); +} diff --git a/src/REPLICA/fix_event_hyper.h b/src/REPLICA/fix_event_hyper.h new file mode 100644 index 0000000000..4c5d4a93ee --- /dev/null +++ b/src/REPLICA/fix_event_hyper.h @@ -0,0 +1,60 @@ +/* -*- 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 + +FixStyle(EVENT/HYPER,FixEventHyper) + +#else + +#ifndef LMP_FIX_EVENT_HYPER_H +#define LMP_FIX_EVENT_HYPER_H + +#include "fix_event.h" + +namespace LAMMPS_NS { + +class FixEventHyper : public FixEvent { + public: + int event_number; // event counter + bigint event_timestep; // timestep of last event on any replica + bigint clock; // total elapsed timesteps across all replicas + int replica_number; // replica where last event occured + int correlated_event; // 1 if last event was correlated, 0 otherwise + int ncoincident; // # of simultaneous events on different replicas + + FixEventHyper(class LAMMPS *, int, char **); + ~FixEventHyper() {} + + void write_restart(FILE *); + void restart(char *); + + // methods specific to FixEventHyper, invoked by hyper + + void store_event_hyper(bigint, int); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +*/ diff --git a/src/REPLICA/fix_hyper.cpp b/src/REPLICA/fix_hyper.cpp new file mode 100644 index 0000000000..9f01d9542c --- /dev/null +++ b/src/REPLICA/fix_hyper.cpp @@ -0,0 +1,35 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include +#include "fix_hyper.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +FixHyper::FixHyper(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) {} + +/* ---------------------------------------------------------------------- + extract hyper flag setting for all Fixes that perform hyperdynamics +------------------------------------------------------------------------- */ + +void *FixHyper::extract(const char *str, int &dim) +{ + dim = 0; + if (strcmp(str,"hyperflag") == 0) { + return &hyperflag; + } + return NULL; +} + diff --git a/src/REPLICA/fix_hyper.h b/src/REPLICA/fix_hyper.h new file mode 100644 index 0000000000..7cb6cadf8f --- /dev/null +++ b/src/REPLICA/fix_hyper.h @@ -0,0 +1,43 @@ +/* -*- 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. +------------------------------------------------------------------------- */ + +#ifndef LMP_FIX_HYPER_H +#define LMP_FIX_HYPER_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixHyper : public Fix { + public: + FixHyper(class LAMMPS *, int, char **); + virtual ~FixHyper() {} + void *extract(const char *, int &); + + // must be provided by child class + + virtual void init_hyper() = 0; + virtual void build_bond_list(int) = 0; + virtual double query(int) = 0; + + protected: + int hyperflag; +}; + +} + +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/REPLICA/fix_hyper_global.cpp b/src/REPLICA/fix_hyper_global.cpp new file mode 100644 index 0000000000..ba45e47407 --- /dev/null +++ b/src/REPLICA/fix_hyper_global.cpp @@ -0,0 +1,497 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "fix_hyper_global.h" +#include "atom.h" +#include "update.h" +#include "force.h" +#include "domain.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "neigh_list.h" +#include "modify.h" +#include "math_extra.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +#define DELTA 16384 +#define VECLEN 5 + +/* ---------------------------------------------------------------------- */ + +FixHyperGlobal::FixHyperGlobal(LAMMPS *lmp, int narg, char **arg) : + FixHyper(lmp, narg, arg) +{ + // NOTE: add NULL declarations + // NOTE: count/output # of timesteps on which bias is non-zero + // NOTE: require newton on? + + if (atom->map_style == 0) + error->all(FLERR,"Fix hyper/global command requires atom map"); + + if (narg != 7) error->all(FLERR,"Illegal fix hyper/global command"); + + hyperflag = 1; + scalar_flag = 1; + vector_flag = 1; + size_vector = 11; + global_freq = 1; + extscalar = 0; + extvector = 0; + + cutbond = force->numeric(FLERR,arg[3]); + qfactor = force->numeric(FLERR,arg[4]); + vmax = force->numeric(FLERR,arg[5]); + tequil = force->numeric(FLERR,arg[6]); + + if (cutbond < 0.0 || qfactor <= 0.0 || vmax < 0.0 || tequil <= 0.0) + error->all(FLERR,"Illegal fix hyper/global command"); + + invqfactorsq = 1.0 / (qfactor*qfactor); + cutbondsq = cutbond*cutbond; + beta = 1.0 / (force->boltz * tequil); + + maxbond = 0; + nblocal = 0; + blist = NULL; + + maxold = 0; + xold = NULL; + tagold = NULL; + + me = comm->me; + firstflag = 1; + bcastflag = 0; + for (int i = 0; i < VECLEN; i++) outvec[i] = 0.0; + + nevent = 0; + nevent_atom = 0; + t_hyper = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +FixHyperGlobal::~FixHyperGlobal() +{ + memory->sfree(blist); + memory->destroy(xold); + memory->destroy(tagold); +} + +/* ---------------------------------------------------------------------- */ + +int FixHyperGlobal::setmask() +{ + int mask = 0; + mask |= PRE_NEIGHBOR; + mask |= PRE_FORCE; + mask |= PRE_REVERSE; + mask |= THERMO_ENERGY; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::init_hyper() +{ + maxdriftsq = 0.0; + maxbondlen = 0.0; + nobias = 0; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::init() +{ + dt = update->dt; + + // need an occasional half neighbor list + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->occasional = 1; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::init_list(int id, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::setup_pre_neighbor() +{ + pre_neighbor(); +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::setup_pre_reverse(int eflag, int vflag) +{ + // no increment in nobias or hyper time when pre-run forces are calculated + + int nobias_hold = nobias; + double t_hyper_hold = t_hyper; + + pre_reverse(eflag,vflag); + + nobias = nobias_hold; + t_hyper = t_hyper_hold; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::pre_neighbor() +{ + int i,m,jnum,iold,jold,ilocal,jlocal; + double distsq; + + // reset local IDs for owned bond atoms, since atoms have migrated + // uses xold and tagold from when bonds were created + // must be done after ghost atoms are setup via comm->borders() + + double **x = atom->x; + + int flag = 0; + + for (m = 0; m < nblocal; m++) { + iold = blist[m].iold; + jold = blist[m].jold; + ilocal = atom->map(tagold[iold]); + jlocal = atom->map(tagold[jold]); + ilocal = domain->closest_image(xold[iold],ilocal); + jlocal = domain->closest_image(xold[iold],jlocal); + blist[m].i = ilocal; + blist[m].j = jlocal; + + if (ilocal < 0 || jlocal < 0) flag++; + else { + distsq = MathExtra::distsq3(x[ilocal],xold[iold]); + maxdriftsq = MAX(distsq,maxdriftsq); + } + } + + if (flag) error->one(FLERR,"Fix hyper/global bond atom not found"); +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::pre_reverse(int eflag, int vflag) +{ + int i,j,m,imax,jmax; + double xtmp,ytmp,ztmp,delx,dely,delz; + double r,r0,estrain,rmax,r0max,emax,dt_boost; + double vbias,fbias,fbiasr; + + // compute current strain of each owned bond + // emax = maximum strain of any bond I own + // imax,jmax = local indices of my 2 atoms in that bond + + double **x = atom->x; + emax = 0.0; + + for (m = 0; m < nblocal; m++) { + i = blist[m].i; + j = blist[m].j; + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + r = sqrt(delx*delx + dely*dely + delz*delz); + maxbondlen = MAX(r,maxbondlen); + r0 = blist[m].r0; + estrain = fabs(r-r0) / r0; + + if (estrain > emax) { + emax = estrain; + rmax = r; + r0max = r0; + imax = i; + jmax = j; + } + } + + // perform Allreduce() on pairme = double/int pair + // finds max strain and what proc owns it + // owner = proc that owns that bond + + pairme.value = emax; + pairme.proc = me; + MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MAXLOC,world); + owner = pairall.proc; + + bcastflag = 1; + + // all procs acquire t_hyper from owner proc + // MPI_Bcast call by owner proc is below + + for (int i = 0; i < VECLEN; i++) outvec[i] = 0.0; + + if (owner != me) { + MPI_Bcast(&t_hyper,1,MPI_DOUBLE,owner,world); + return; + } + + // I own the bond with max strain + // compute Vbias and apply force to atoms imax,jmax + // NOTE: logic would need to be different for newton off + + double **f = atom->f; + + vbias = fbias = 0.0; + dt_boost = 1.0; + + if (emax < qfactor) { + vbias = vmax * (1.0 - emax*emax*invqfactorsq); + fbias = 2.0 * vmax * emax / (qfactor*qfactor * r0max); + dt_boost = exp(beta*vbias); + + delx = x[imax][0] - x[jmax][0]; + dely = x[imax][1] - x[jmax][1]; + delz = x[imax][2] - x[jmax][2]; + + fbiasr = fbias / rmax; + f[imax][0] += delx*fbiasr; + f[imax][1] += dely*fbiasr; + f[imax][2] += delz*fbiasr; + + f[jmax][0] -= delx*fbiasr; + f[jmax][1] -= dely*fbiasr; + f[jmax][2] -= delz*fbiasr; + } else nobias++; + + // NOTE: should there be a virial contribution from boosted bond? + + // output quantities + + outvec[0] = vbias; + outvec[1] = dt_boost; + outvec[2] = emax; + outvec[3] = atom->tag[imax]; + outvec[4] = atom->tag[jmax]; + + t_hyper += dt_boost*dt; + MPI_Bcast(&t_hyper,1,MPI_DOUBLE,owner,world); +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperGlobal::build_bond_list(int natom) +{ + int i,j,n,ii,jj,inum,jnum; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int *ilist,*jlist,*numneigh,**firstneigh; + tagint *bptr; + double *rptr; + + if (natom) { + nevent++; + nevent_atom += natom; + } + + // trigger neighbor list build + + neighbor->build_one(list); + + // identify bonds assigned to each owned atom + // do not create a bond between two non-group atoms + + double **x = atom->x; + int *mask = atom->mask; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + nblocal = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + // skip if neither atom I or J are in fix group + + if (!(mask[i] & groupbit) && !(mask[j] & groupbit)) continue; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq < cutbondsq) { + if (nblocal == maxbond) grow_bond(); + blist[nblocal].i = i; + blist[nblocal].j = j; + blist[nblocal].iold = i; + blist[nblocal].jold = j; + blist[nblocal].r0 = sqrt(rsq); + nblocal++; + } + } + } + + // store IDs and coords for owned+ghost atoms at time of bond creation + // realloc xold and tagold as needed + + if (atom->nmax > maxold) { + memory->destroy(xold); + memory->destroy(tagold); + maxold = atom->nmax; + memory->create(xold,maxold,3,"hyper/global:xold"); + memory->create(tagold,maxold,"hyper/global:tagold"); + } + + tagint *tag = atom->tag; + int nall = atom->nlocal + atom->nghost; + + for (i = 0; i < nall; i++) { + xold[i][0] = x[i][0]; + xold[i][1] = x[i][1]; + xold[i][2] = x[i][2]; + tagold[i] = tag[i]; + } +} + +/* ---------------------------------------------------------------------- + grow bond list by a chunk +------------------------------------------------------------------------- */ + +void FixHyperGlobal::grow_bond() +{ + // NOTE: could add int arg to do initial large alloc: + // maxbond = maxbond/DELTA * DELTA; maxbond += DELTA; + + maxbond += DELTA; + if (maxbond < 0 || maxbond > MAXSMALLINT) + error->one(FLERR,"Fix hyper/local per-processor bond count is too big"); + blist = (OneBond *) + memory->srealloc(blist,maxbond*sizeof(OneBond),"hyper/local:blist"); +} + +/* ---------------------------------------------------------------------- */ + +double FixHyperGlobal::compute_scalar() +{ + if (bcastflag) { + MPI_Bcast(outvec,VECLEN,MPI_DOUBLE,owner,world); + bcastflag = 0; + } + return outvec[0]; +} + +/* ---------------------------------------------------------------------- */ + +double FixHyperGlobal::compute_vector(int i) +{ + if (bcastflag) { + MPI_Bcast(outvec,VECLEN,MPI_DOUBLE,owner,world); + bcastflag = 0; + } + + // 11 vector outputs returned for i = 0-10 + + // i = 0 = boost factor on this step + // i = 1 = max strain of any bond on this step + // i = 2 = ID of atom I in max-strain bond on this step + // i = 3 = ID of atom J in max-strain bond on this step + // i = 4 = ave bonds/atom on this step + + // i = 5 = fraction of steps with no bias during this run + // i = 6 = max drift of any atom during this run + // i = 7 = max bond length during this run + + // i = 8 = cummulative hyper time since fix created + // i = 9 = cummulative # of event timesteps since fix created + // i = 10 = cummulative # of atoms in events since fix created + + if (i == 0) return outvec[1]; + if (i == 1) return outvec[2]; + if (i == 2) return outvec[3]; + if (i == 3) return outvec[4]; + + if (i == 4) { + int allbonds; // NOTE: bigint? + MPI_Allreduce(&nblocal,&allbonds,1,MPI_INT,MPI_SUM,world); + return 2.0*allbonds/atom->natoms; + } + + if (i == 5) { + if (update->ntimestep == update->firststep) return 0.0; + int allnobias; + MPI_Allreduce(&nobias,&allnobias,1,MPI_INT,MPI_SUM,world); + return 1.0*allnobias / (update->ntimestep - update->firststep); + } + + if (i == 6) { + double alldriftsq; + MPI_Allreduce(&maxdriftsq,&alldriftsq,1,MPI_DOUBLE,MPI_MAX,world); + return sqrt(alldriftsq); + } + + if (i == 7) { + double allbondlen; + MPI_Allreduce(&maxbondlen,&allbondlen,1,MPI_DOUBLE,MPI_MAX,world); + return allbondlen; + } + + if (i == 8) return t_hyper; + if (i == 9) return (double) nevent; + if (i == 10) return (double) nevent_atom; +} + +/* ---------------------------------------------------------------------- + wrapper on compute_vector() + used by hyper.cpp to call FixHyper +------------------------------------------------------------------------- */ + +double FixHyperGlobal::query(int i) +{ + if (i == 1) return compute_vector(8); // cummulative hyper time + if (i == 2) return compute_vector(9); // nevent + if (i == 3) return compute_vector(10); // nevent_atom + if (i == 4) return compute_vector(4); // ave bonds/atom + if (i == 5) return compute_vector(6); // maxdrift + if (i == 6) return compute_vector(7); // maxbondlen + if (i == 7) return compute_vector(5); // fraction with zero bias + + error->all(FLERR,"Invalid query to fix hyper/global"); +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixHyperGlobal::memory_usage() +{ + double bytes = maxbond * sizeof(OneBond); // blist + return bytes; +} diff --git a/src/REPLICA/fix_hyper_global.h b/src/REPLICA/fix_hyper_global.h new file mode 100644 index 0000000000..d8b1cef425 --- /dev/null +++ b/src/REPLICA/fix_hyper_global.h @@ -0,0 +1,110 @@ +/* -*- 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 + +FixStyle(hyper/global,FixHyperGlobal) + +#else + +#ifndef LMP_FIX_HYPER_GLOBAL_H +#define LMP_FIX_HYPER_GLOBAL_H + +#include "fix_hyper.h" + +namespace LAMMPS_NS { + +class FixHyperGlobal : public FixHyper { + public: + FixHyperGlobal(class LAMMPS *, int, char **); + ~FixHyperGlobal(); + int setmask(); + void init(); + void init_list(int, class NeighList *); + void setup_pre_neighbor(); + void setup_pre_reverse(int, int); + void pre_neighbor(); + void pre_reverse(int, int); + double compute_scalar(); + double compute_vector(int); + double query(int); + + double memory_usage(); + + // extra methods visible to callers + + void init_hyper(); + void build_bond_list(int); + + private: + int me; + double cutbond,qfactor,vmax,tequil; + + int firstflag,bcastflag,owner,nevent,nevent_atom; + double cutbondsq,beta,dt,t_hyper,invqfactorsq; + double outvec[5]; // same as VECLEN in *.cpp + double maxbondlen; // max length of any bond + double maxdriftsq; // max distance any atom drifts from original pos + int nobias; // # of steps when bias = 0, b/c bond too long + + class NeighList *list; + + // list of my owned bonds + // persists on a proc from one event until the next + + int maxbond; // allocated size of blist + + struct OneBond { // single IJ bond, atom I is owner + int i,j; // current local indices of 2 bond atoms + int iold,jold; // local indices when bonds were formed + double r0; // relaxed bond length + }; + + struct OneBond *blist; // list of owned bonds + int nblocal; // # of owned bonds + + // coords and IDs of owned+ghost atoms when bonds were formed + // persists on a proc from one event until the next + + int maxold; // allocated size of old atoms + + double **xold; // coords of atoms when bonds were formed + tagint *tagold; // IDs of atoms when bonds were formed + + // MPI data struct for finding bond with max strain via Allreduce + + struct Two { + double value; + int proc; + }; + Two pairme,pairall; + + // internal methods + + void grow_bond(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +*/ diff --git a/src/REPLICA/fix_hyper_local.cpp b/src/REPLICA/fix_hyper_local.cpp new file mode 100644 index 0000000000..b60ba7339f --- /dev/null +++ b/src/REPLICA/fix_hyper_local.cpp @@ -0,0 +1,1610 @@ +/* ---------------------------------------------------------------------- + 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 Gene +#include +#include +#include +#include "fix_hyper_local.h" +#include "atom.h" +#include "update.h" +#include "force.h" +#include "pair.h" +#include "domain.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "neigh_list.h" +#include "modify.h" +#include "math_extra.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +#define DELTABOOST 16 +#define BOOSTINIT 1.0 +#define COEFFMAX 1.2 +#define BIG 1.0e20 + +enum{STRAIN,STRAINREGION,BIASFLAG}; +enum{IGNORE,WARN,ERROR}; + +/* ---------------------------------------------------------------------- */ + +FixHyperLocal::FixHyperLocal(LAMMPS *lmp, int narg, char **arg) : + FixHyper(lmp, narg, arg) +{ + // NOTE: add NULL declarations + + // error checks + // solution for tagint != int is to worry about storing + // local index vs global ID in same variable + // maybe need to declare them all tagint, not int + + if (atom->map_style == 0) + error->all(FLERR,"Fix hyper/local command requires atom map"); + + if (sizeof(tagint) != sizeof(int)) + error->all(FLERR,"Fix hyper/local requires tagint = int"); + + // parse args + + if (narg < 10) error->all(FLERR,"Illegal fix hyper/local command"); + + hyperflag = 2; + scalar_flag = 1; + vector_flag = 1; + size_vector = 23; + + global_freq = 1; + extscalar = 0; + extvector = 0; + + cutbond = force->numeric(FLERR,arg[3]); + qfactor = force->numeric(FLERR,arg[4]); + vmax = force->numeric(FLERR,arg[5]); + tequil = force->numeric(FLERR,arg[6]); + dcut = force->numeric(FLERR,arg[7]); + alpha_user = force->numeric(FLERR,arg[8]); + boosttarget = force->numeric(FLERR,arg[9]); + + if (cutbond < 0.0 || qfactor < 0.0 || vmax < 0.0 || + tequil <= 0.0 || dcut <= 0.0 || alpha_user <= 0.0 || boosttarget < 1.0) + error->all(FLERR,"Illegal fix hyper/local command"); + + invqfactorsq = 1.0 / (qfactor*qfactor); + cutbondsq = cutbond*cutbond; + dcutsq = dcut*dcut; + beta = 1.0 / (force->boltz * tequil); + + // optional args + + histoflag = 0; + lostbond = IGNORE; + checkbias = 0; + checkcoeff = 0; + + int iarg = 10; + while (iarg < narg) { + if (strcmp(arg[iarg],"histo") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal fix hyper/local command"); + histoflag = 1; + histo_every = force->inumeric(FLERR,arg[iarg+1]); + histo_count = force->inumeric(FLERR,arg[iarg+2]); + histo_delta = force->numeric(FLERR,arg[iarg+3]); + histo_print = force->inumeric(FLERR,arg[iarg+4]); + if (histo_every <= 0 || histo_count % 2 || + histo_delta <= 0.0 || histo_print <= 0) + error->all(FLERR,"Illegal fix hyper/local command"); + iarg += 5; + + } else if (strcmp(arg[iarg],"lostbond") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix hyper/local command"); + if (strcmp(arg[iarg+1],"error") == 0) lostbond = ERROR; + else if (strcmp(arg[iarg+1],"warn") == 0) lostbond = WARN; + else if (strcmp(arg[iarg+1],"ignore") == 0) lostbond = IGNORE; + else error->all(FLERR,"Illegal fix hyper/local command"); + iarg += 2; + + } else if (strcmp(arg[iarg],"check/bias") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal fix hyper/local command"); + checkbias = 1; + checkbias_every = force->inumeric(FLERR,arg[iarg+1]); + if (strcmp(arg[iarg+2],"error") == 0) checkbias_flag = ERROR; + else if (strcmp(arg[iarg+2],"warn") == 0) checkbias_flag = WARN; + else if (strcmp(arg[iarg+2],"ignore") == 0) checkbias_flag = IGNORE; + else error->all(FLERR,"Illegal fix hyper/local command"); + iarg += 3; + + } else if (strcmp(arg[iarg],"check/coeff") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal fix hyper/local command"); + checkcoeff = 1; + checkcoeff_every = force->inumeric(FLERR,arg[iarg+1]); + if (strcmp(arg[iarg+2],"error") == 0) checkcoeff_flag = ERROR; + else if (strcmp(arg[iarg+2],"warn") == 0) checkcoeff_flag = WARN; + else if (strcmp(arg[iarg+2],"ignore") == 0) checkcoeff_flag = IGNORE; + else error->all(FLERR,"Illegal fix hyper/local command"); + iarg += 3; + + } else error->all(FLERR,"Illegal fix hyper/local command"); + } + + // per-atom data structs + + maxbond = 0; + bonds = NULL; + numbond = NULL; + maxstrain = NULL; + maxstrain_region = NULL; + maxstrain_bondindex = NULL; + biasflag = NULL; + + maxold = old_nall = 0; + old2now = NULL; + xold = NULL; // NOTE: don't really need except to monitor drift + tagold = NULL; + + nboost = maxboost = 0; + boost = NULL; + + // maxbondperatom = max # of bonds any atom is part of + // will be reset in bond_build() + // set comm size needed by this fix + + maxbondperatom = 1; + comm_forward = 1; + comm_reverse = 1; + + // perform initial allocation of atom-based arrays + // register with Atom class + + grow_arrays(atom->nmax); + atom->add_callback(0); + + me = comm->me; + firstflag = 1; + + allbonds = 0; + allboost = 0.0; + + starttime = update->ntimestep; + nostrainyet = 1; + nnewbond = 0; + nevent = 0; + nevent_atom = 0; + mybias = 0.0; + + histo = allhisto = NULL; + if (histoflag) { + invhisto_delta = 1.0 / histo_delta; + histo_lo = 1.0 - (histo_count/2 * histo_delta); + histo = new bigint[histo_count+2]; + allhisto = new bigint[histo_count+2]; + } +} + +/* ---------------------------------------------------------------------- */ + +FixHyperLocal::~FixHyperLocal() +{ + memory->destroy(bonds); + memory->destroy(numbond); + + memory->destroy(maxstrain); + memory->destroy(maxstrain_region); + memory->destroy(maxstrain_bondindex); + memory->destroy(biasflag); + + memory->destroy(old2now); + memory->destroy(xold); + memory->destroy(tagold); + memory->destroy(boost); + delete [] histo; + delete [] allhisto; +} + +/* ---------------------------------------------------------------------- */ + +int FixHyperLocal::setmask() +{ + int mask = 0; + mask |= PRE_NEIGHBOR; + mask |= PRE_REVERSE; + mask |= MIN_PRE_NEIGHBOR; + mask |= THERMO_ENERGY; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::init_hyper() +{ + ghost_toofar = 0; + lostbond_partner = 0; + lostbond_coeff = 0.0; + checkbias_count = 0; + checkcoeff_count = 0; + maxdriftsq = 0.0; + maxbondlen = 0.0; + maxboostcoeff = 0.0; + minboostcoeff = BIG; + sumboostcoeff = 0.0; + nboost_running = 0; + nobias_running = 0; + rmaxever = 0.0; + rmaxeverbig = 0.0; + + nbondbuild = 0; + time_bondbuild = 0.0; + + if (histoflag) histo_steps = 0; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::init() +{ + alpha = update->dt / alpha_user; + + // cutghost = communication cutoff as calculated by Neighbor and Comm + // error if cutghost is smaller than Dcut + // warn if no drift distance added to cutghost + + if (firstflag) { + double cutghost; + if (force->pair) + cutghost = MAX(force->pair->cutforce+neighbor->skin,comm->cutghostuser); + else + cutghost = comm->cutghostuser; + + if (cutghost < dcut) + error->all(FLERR,"Fix hyper/local bond cutoff exceeds ghost atom range - " + "use comm_modify cutoff command"); + if (cutghost < dcut+cutbond && me == 0) + error->warning(FLERR,"Fix hyper/local ghost atom range " + "may not allow for atom drift between events"); + } + + // NOTE: error if not newton, + // since bond force bias will not be applied correctly to straddle bonds? + + // NOTE: if exclusions are enabled, some near-neighbors won't appear + // will be missed in bonds - WARN if molecular system? + + // need an occasional full neighbor list with cutoff = Dcut + // do not need to include neigh skin in cutoff, + // b/c this list will be built every time bond_build() is called + // NOTE: what if pair style list cutoff > Dcut + // or what if neigh skin is huge? + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->cut = 1; + neighbor->requests[irequest]->cutoff = dcut; + neighbor->requests[irequest]->occasional = 1; + + // DEBUG timing output + + timefirst = timesecond = timethird = timefourth = timefifth = + timesixth = timeseventh = timetotal = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::init_list(int id, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::setup_pre_neighbor() +{ + // called for dynamics and minimization NOTE: check if min is needed? + + pre_neighbor(); +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::setup_pre_reverse(int eflag, int vflag) +{ + // only called for dynamics, not minimization + // setupflag prevents boostostat update of boost coeffs in setup + // also prevents increments of nboost_running, nbias_running, sumboostcoeff + + setupflag = 1; + pre_reverse(eflag,vflag); + setupflag = 0; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::pre_neighbor() +{ + int i,m,n,ilocal,jlocal; + + // convert global ID bond partners back to local indices + // need to use closest_image() so can calculate bond lengths + // error flag should not happen for a well-behaved system + // b/c are only looking up bond partners inside or near my sub-domain + + double **x = atom->x; + int nlocal = atom->nlocal; + + int missing = 0; + double missing_coeff = 0.0; + + for (i = 0; i < nlocal; i++) { + n = numbond[i]; + for (m = 0; m < n; m++) { + jlocal = atom->map(bonds[i][m].jtag); + if (jlocal >= 0) bonds[i][m].j = domain->closest_image(i,jlocal); + else { + bonds[i][m].j = -1; + missing++; + missing_coeff += bonds[i][m].boostcoeff; + if (lostbond != IGNORE) { + char str[128]; + sprintf(str,"Fix hyper/local bond info missing for bond " + TAGINT_FORMAT "," TAGINT_FORMAT + " with coeff %g at step " BIGINT_FORMAT, + atom->tag[i],bonds[i][m].jtag,bonds[i][m].boostcoeff, + update->ntimestep); + if (lostbond == ERROR) error->one(FLERR,str); + if (lostbond == WARN) error->warning(FLERR,str); + } + } + } + } + + lostbond_partner += missing; + lostbond_coeff += missing_coeff; + + // set old2now to point to current local atom indices + // only necessary for tagold entries > 0 + // because if tagold = 0, atom is not active in Dcut neighbor list + // must be done after atoms migrate and ghost atoms setup via comm->borders() + // does not matter if there are multiple ghost copies of a global ID + // since only need the ghost atom strain, not its coordinates + // NOTE: maybe need not use closest image, b/c old2now only used to access + // maxstrain values, which will be same for any copy of ghost atom ?? + // also need it to compute maxdriftsq correctly when a proc spans a PBC + + double distsq; + + for (i = 0; i < old_nall; i++) { + if (tagold[i] == 0) continue; + ilocal = atom->map(tagold[i]); + ilocal = domain->closest_image(xold[i],ilocal); + old2now[i] = ilocal; + + if (ilocal >= 0) { + distsq = MathExtra::distsq3(x[ilocal],xold[i]); + maxdriftsq = MAX(distsq,maxdriftsq); + } else ghost_toofar++; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::pre_reverse(int eflag, int vflag) +{ + int i,j,m,ii,jj,inum,jnum,iold,jold,nbond,bondindex; + tagint itag,jtag; + double xtmp,ytmp,ztmp,delx,dely,delz; + double r,r0,estrain,emax,vbias,fbias,fbiasr,boostcoeff; + int *ilist,*jlist,*numneigh,**firstneigh; + + //double time1,time2,time3,time4,time5,time6,time7,time8; + //time1 = MPI_Wtime(); + + // compute current maxstrain and maxstrain_bond for each owned atom + // use per-atom full bond list + // this is double-calculating for IJ and JI bonds + // could compute once, but would have to find/store index of JI bond + // order two I,J atoms consistently for IJ and JI calcs + // to insure no round-off issue when comparing maxstrain values of I,J + + double **x = atom->x; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + int mybonds = 0; + nostrainyet = 0; + + for (i = 0; i < nlocal; i++) { + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itag = tag[i]; + emax = 0.0; + bondindex = -1; + jtag = 0; + + nbond = numbond[i]; + mybonds += nbond; + for (m = 0; m < nbond; m++) { + j = bonds[i][m].j; + if (j < 0) continue; + jtag = bonds[i][m].jtag; + r0 = bonds[i][m].r0; + if (itag < jtag) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + } else { + delx = x[j][0] - xtmp; + dely = x[j][1] - ytmp; + delz = x[j][2] - ztmp;; + } + r = sqrt(delx*delx + dely*dely + delz*delz); + maxbondlen = MAX(r,maxbondlen); + estrain = fabs(r-r0) / r0; + if (estrain > emax) { + emax = estrain; + bondindex = m; + } + } + maxstrain[i] = emax; + maxstrain_bondindex[i] = bondindex; + } + + //time2 = MPI_Wtime(); + + // forward comm to acquire maxstrain of all ghost atoms + + commflag = STRAIN; + comm->forward_comm_fix(this); + + //time3 = MPI_Wtime(); + + // use original Dcut neighbor list to check maxstrain of all neighbor atoms + // set maxstrain_region of I atoms = maxstrain of I and all J neighs + // neighbor list has old indices for IJ b/c reneighboring may have occurred + // use old2now[] to convert to current indices + // if neighbor is not currently known (too far away), + // then assume it was part of an event and its strain = qfactor + // this double loop sets maxstrain_region of mostly owned atoms + // but possibly some ghost atoms as well + + int nall = nlocal + atom->nghost; + for (i = 0; i < nall; i++) maxstrain_region[i] = 0.0; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // find largest distance from subbox that a ghost atom is with strain < qfactor + + double rmax = rmaxever; + double rmaxbig = rmaxeverbig; + double *sublo = domain->sublo; + double *subhi = domain->subhi; + + for (ii = 0; ii < inum; ii++) { + iold = ilist[ii]; + jlist = firstneigh[iold]; + jnum = numneigh[iold]; + + // I and J may be ghost atoms + // will always know I b/c atoms do not drift that far + // but may no longer know J if hops outside cutghost + // in that case, assume it performed an event, its strain = qfactor + + i = old2now[iold]; + emax = maxstrain[i]; + + for (jj = 0; jj < jnum; jj++) { + jold = jlist[jj]; + j = old2now[jold]; + if (j >= 0) emax = MAX(emax,maxstrain[j]); + else { + emax = MAX(emax,qfactor); + continue; + } + + // DEBUG - only good for 2 dims x,y + + if (j >= nlocal) { + if (x[j][0] < sublo[0]) rmaxbig = MAX(rmaxbig,sublo[0]-x[j][0]); + if (x[j][1] < sublo[1]) rmaxbig = MAX(rmaxbig,sublo[1]-x[j][1]); + if (x[j][0] > subhi[0]) rmaxbig = MAX(rmaxbig,x[j][0]-subhi[0]); + if (x[j][1] > subhi[1]) rmaxbig = MAX(rmaxbig,x[j][1]-subhi[1]); + if (maxstrain[j] < qfactor) { + if (x[j][0] < sublo[0]) rmax = MAX(rmax,sublo[0]-x[j][0]); + if (x[j][1] < sublo[1]) rmax = MAX(rmax,sublo[1]-x[j][1]); + if (x[j][0] > subhi[0]) rmax = MAX(rmax,x[j][0]-subhi[0]); + if (x[j][1] > subhi[1]) rmax = MAX(rmax,x[j][1]-subhi[1]); + } + } + } + + maxstrain_region[i] = emax; + } + + double rmax2[2],rmax2all[2]; + rmax2[0] = rmax; + rmax2[1] = rmaxbig; + MPI_Allreduce(&rmax2,&rmax2all,2,MPI_DOUBLE,MPI_MAX,world); + rmaxever = rmax2all[0]; + rmaxeverbig = rmax2all[1]; + + MPI_Allreduce(&mybonds,&allbonds,1,MPI_INT,MPI_SUM,world); + + //time4 = MPI_Wtime(); + + // reverse comm to acquire maxstrain_region from ghost atoms + // needed b/c neighbor list referred to old owned atoms, + // so above loop may set maxstrain_region of ghost atoms + // forward comm to acquire maxstrain_region of all ghost atoms + + commflag = STRAINREGION; + comm->reverse_comm_fix(this); + comm->forward_comm_fix(this); + + //time5 = MPI_Wtime(); + + // identify biased bonds and add to boost list + // for each max-strain bond IJ of atom I: + // bias this bond only if all these conditions hold: + // itag < jtag, so bond is only biased once + // maxstrain[i] = maxstrain_region[i] + // maxstrain[j] = maxstrain_region[j] + // NOTE: also need to check that maxstrain[i] = maxstrain[j] ?? + // don't think so, b/c maxstrain_region[i] includes maxstrain[i] + + nboost = 0; + + for (i = 0; i < nlocal; i++) { + if (numbond[i] == 0) continue; + itag = tag[i]; + j = bonds[i][maxstrain_bondindex[i]].j; + jtag = tag[j]; + if (itag > jtag) continue; + + if (maxstrain[i] != maxstrain_region[i]) continue; + if (maxstrain[j] != maxstrain_region[j]) continue; + + if (nboost == maxboost) { + maxboost += DELTABOOST; + memory->grow(boost,maxboost,"hyper/local:boost"); + } + boost[nboost++] = i; + } + + //time6 = MPI_Wtime(); + + // apply boost force to bonds with locally max strain + + double **f = atom->f; + + int nobias = 0; + mybias = 0.0; + + for (int iboost = 0; iboost < nboost; iboost++) { + i = boost[iboost]; + emax = maxstrain[i]; + if (emax >= qfactor) { + nobias++; + continue; + } + + m = maxstrain_bondindex[i]; + j = bonds[i][m].j; + r0 = bonds[i][m].r0; + boostcoeff = bonds[i][m].boostcoeff; + + vbias = boostcoeff * vmax * (1.0 - emax*emax*invqfactorsq); + fbias = boostcoeff * 2.0 * vmax * emax / (qfactor*qfactor * r0); + + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + r = sqrt(delx*delx + dely*dely + delz*delz); + fbiasr = fbias / r; + + f[i][0] += delx*fbiasr; + f[i][1] += dely*fbiasr; + f[i][2] += delz*fbiasr; + + f[j][0] -= delx*fbiasr; + f[j][1] -= dely*fbiasr; + f[j][2] -= delz*fbiasr; + + mybias += vbias; + } + + //time7 = MPI_Wtime(); + + // no boostostat update of boost coeffs when pre_reverse called from setup() + // nboost_running, nobias_running, sumboostcoeff only incremented on run steps + // NOTE: maybe should also not bias any bonds on firststep of this fix + + if (setupflag) return; + nboost_running += nboost; + nobias_running += nobias; + + // apply boostostat to boost coefficients of all bonds of all owned atoms + // use per-atom full bond list + // this is double-calculating for IJ and JI bonds + // should be identical for both, b/c emax is the same + // could compute once, but would have to find/store index of JI bond + // delta in boost coeff is function of maxboost_region vs target boost + // maxboost_region is function of two maxstrain_regions for I,J + // NOTE: if J is lost to I but not vice versa, then biascoeff IJ != JI + + + + + // DEBUG info for Max and Min bias coeffs every step + + // if (update->ntimestep >= 300000) { + if (update->ntimestep >= 0) { + + double emaxi,emaxj,maxboost_region; + double mincoeff = 1.0e20; + double maxcoeff = -1.0e20; + double delta; + double maxcoeffprev,deltamax,eimax,ejmax,emaximax,emaxjmax,mbrmax; + double mincoeffprev,deltamin,eimin,ejmin,emaximin,emaxjmin,mbrmin; + int itagmax,jtagmax,jtagmax2; + int itagmin,jtagmin,jtagmin2; + + for (i = 0; i < nlocal; i++) { + emaxi = maxstrain_region[i]; + nbond = numbond[i]; + for (m = 0; m < nbond; m++) { + j = bonds[i][m].j; + if (j < 0) continue; + emaxj = maxstrain_region[j]; + emax = MAX(emaxi,emaxj); + if (emax < qfactor) vbias = vmax * (1.0 - emax*emax*invqfactorsq); + else vbias = 0.0; + boostcoeff = bonds[i][m].boostcoeff; + maxboost_region = exp(beta * boostcoeff*vbias); + delta = -alpha * (maxboost_region-boosttarget) / boosttarget; + boostcoeff += delta; + + if (boostcoeff > maxcoeff) { + maxcoeffprev = boostcoeff - delta; + maxcoeff = boostcoeff; + itagmax = tag[i]; + jtagmax = tag[j]; + jtagmax2 = bonds[i][m].jtag; + deltamax = delta; + eimax = maxstrain[i]; + ejmax = maxstrain[j]; + emaximax = emaxi; + emaxjmax = emaxj; + mbrmax = maxboost_region; + } + + if (boostcoeff < mincoeff) { + mincoeffprev = boostcoeff - delta; + mincoeff = boostcoeff; + itagmin = tag[i]; + jtagmin = tag[j]; + jtagmin2 = bonds[i][m].jtag; + deltamin = delta; + eimin = maxstrain[i]; + ejmin = maxstrain[j]; + emaximin = emaxi; + emaxjmin = emaxj; + mbrmin = maxboost_region; + } + } + } + + // min/max owner = procs that own the Min and Max bias coeffs + + pairme.value = mincoeff; + pairme.proc = me; + MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MINLOC,world); + int minowner = pairall.proc; + + pairme.value = maxcoeff; + pairme.proc = me; + MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MAXLOC,world); + int maxowner = pairall.proc; + + // get info about which atom and bond influenced Max coeff + // querystrain = strain of bond that is influencing the max Cij + // inbondi,inbondj = ID of I,J atoms in the influence bond + // incoeff = bias coeff of influence bond + // inbias = 1/0 if inflence bond is biased or not on this step + // instraddle = 1/0 if influence bond straddles proc boundary or not + + double querystrain; + if (maxowner == me) querystrain = MAX(emaximax,emaxjmax); + MPI_Bcast(&querystrain,1,MPI_DOUBLE,maxowner,world); + + int count = 0; + for (i = 0; i < nlocal; i++) { + m = maxstrain_bondindex[i]; + if (tag[i] > bonds[i][m].jtag) continue; + if (querystrain == maxstrain[i]) count++; + } + + int countall; + MPI_Allreduce(&count,&countall,1,MPI_INT,MPI_SUM,world); + + int inbias = 0; + int instraddle = countall; // output in rare case countall != 1 + tagint inbondi = 0; + tagint inbondj = 0; + double incoeff = 0.0; + + if (countall == 1) { + int procowner; + int proc = 0; + for (i = 0; i < nlocal; i++) { + m = maxstrain_bondindex[i]; + if (tag[i] > bonds[i][m].jtag) continue; + if (querystrain == maxstrain[i]) { + proc = me; + inbondi = tag[i]; + inbondj = bonds[i][m].jtag; + incoeff = bonds[i][m].boostcoeff; + instraddle = 0; + if (bonds[i][m].j >= nlocal) instraddle = 1; + inbias = 0; + for (int iboost = 0; iboost < nboost; iboost++) + if (boost[iboost] == i) inbias = 1; + } + } + + MPI_Allreduce(&proc,&procowner,1,MPI_INT,MPI_MAX,world); + MPI_Bcast(&inbondi,1,MPI_LMP_TAGINT,procowner,world); + MPI_Bcast(&inbondj,1,MPI_LMP_TAGINT,procowner,world); + MPI_Bcast(&incoeff,1,MPI_DOUBLE,procowner,world); + MPI_Bcast(&instraddle,1,MPI_INT,procowner,world); + MPI_Bcast(&inbias,1,MPI_INT,procowner,world); + } + + // output by procs that own the Min and Max bias coeffs + + if (minowner == me) { + printf("MinCoeff %ld %d : %d %d %d : prev/delta/new %g %g %g : " + "Eij %g %g %g %g : BR %g\n", + update->ntimestep,comm->me,itagmin,jtagmin,jtagmin2, + mincoeffprev,deltamin,mincoeff,eimin,ejmin,emaximin,emaxjmin,mbrmin); + } + if (maxowner == me) { + printf("MaxCoeff %ld %d : %d %d %d : prev/delta/new %g %g %g : " + "Eij %g %g %g %g : Bond %d %d %g %d %d : BR %g\n", + update->ntimestep,comm->me,itagmax,jtagmax,jtagmax2, + maxcoeffprev,deltamax,maxcoeff, + eimax,ejmax,emaximax,emaxjmax, + inbondi,inbondj,incoeff,inbias,instraddle,mbrmax); + } + } + + // end of DEBUG + + + + + + double myboost = 0.0; + double emaxi,emaxj,maxboost_region; + + for (i = 0; i < nlocal; i++) { + emaxi = maxstrain_region[i]; + nbond = numbond[i]; + for (m = 0; m < nbond; m++) { + j = bonds[i][m].j; + if (j < 0) continue; + emaxj = maxstrain_region[j]; + emax = MAX(emaxi,emaxj); + if (emax < qfactor) vbias = vmax * (1.0 - emax*emax*invqfactorsq); + else vbias = 0.0; + boostcoeff = bonds[i][m].boostcoeff; + maxboost_region = exp(beta * boostcoeff*vbias); + boostcoeff -= alpha * (maxboost_region-boosttarget) / boosttarget; + // COMMENT OUT for now + //boostcoeff = MIN(boostcoeff,COEFFMAX); + myboost += boostcoeff; + maxboostcoeff = MAX(maxboostcoeff,boostcoeff); + minboostcoeff = MIN(minboostcoeff,boostcoeff); + bonds[i][m].boostcoeff = boostcoeff; + } + } + + // running stats + + MPI_Allreduce(&myboost,&allboost,1,MPI_DOUBLE,MPI_SUM,world); + if (allbonds) sumboostcoeff += allboost/allbonds; + + // histogram the bond coeffs and output as requested + // do not double count each bond + + if (histoflag && update->ntimestep % histo_every == 0) { + if (histo_steps == 0) + for (i = 0; i < histo_count+2; i++) histo[i] = 0; + histo_steps++; + + int ihisto; + for (i = 0; i < nlocal; i++) { + nbond = numbond[i]; + for (m = 0; m < nbond; m++) { + if (tag[i] > bonds[i][m].jtag) continue; + boostcoeff = bonds[i][m].boostcoeff; + if (boostcoeff < histo_lo) ihisto = -1; + else ihisto = static_cast ((boostcoeff-histo_lo) * invhisto_delta); + if (ihisto >= histo_count) ihisto = histo_count; + histo[ihisto+1]++; + } + } + + if (update->ntimestep % histo_print == 0) { + MPI_Allreduce(histo,allhisto,histo_count+2,MPI_LMP_BIGINT,MPI_SUM,world); + + bigint total; + for (i = 0; i < histo_count+2; i++) total += allhisto[i]; + + if (me == 0) { + if (screen) { + fprintf(screen,"Histogram of bias coeffs:\n"); + for (i = 0; i < histo_count+2; i++) + fprintf(screen," %g",1.0*allhisto[i]/total); + fprintf(screen,"\n"); + } + if (logfile) { + fprintf(logfile,"Histogram of bias coeffs:\n"); + for (i = 0; i < histo_count+2; i++) + fprintf(logfile," %g",1.0*allhisto[i]/total); + fprintf(logfile,"\n"); + } + } + } + } + + // check for any biased bonds that are too close to each other + // keep a running count for output + + if (checkbias && update->ntimestep % checkbias_every == 0) { + + // mark each atom in a biased bond with ID of partner + // nboost loop will mark some ghost atoms + + for (i = 0; i < nall; i++) biasflag[i] = 0; + + for (int iboost = 0; iboost < nboost; iboost++) { + i = boost[iboost]; + m = maxstrain_bondindex[i]; + j = bonds[i][m].j; + biasflag[i] = tag[j]; + biasflag[j] = tag[i]; + } + + // reverse comm to acquire biasflag from ghost atoms + // needed b/c above loop may set biasflag of ghost atoms + // forward comm to acquire biasflag of all ghost atoms + + commflag = BIASFLAG; + comm->reverse_comm_fix(this); + comm->forward_comm_fix(this); + + // I and J may be ghost atoms + // only continue if I is a biased atom + // if J is unknonw (drifted ghost) just ignore + // if J is biased and is not bonded to I, then flag as too close + + for (ii = 0; ii < inum; ii++) { + iold = ilist[ii]; + i = old2now[iold]; + if (biasflag[i] == 0) continue; + + jlist = firstneigh[iold]; + jnum = numneigh[iold]; + + for (jj = 0; jj < jnum; jj++) { + jold = jlist[jj]; + j = old2now[jold]; + if (j < 0) continue; + if (biasflag[j] && biasflag[j] != tag[i]) checkbias_count++; + } + } + } + + // check for any bond bias coeffcients that do not match + // cannot check unless both atoms IJ are owned by this proc + // keep a running count for output + + if (checkcoeff && update->ntimestep % checkcoeff_every == 0) { + int jb,jbonds; + double ibias,jbias; + + for (i = 0; i < nlocal; i++) { + nbond = numbond[i]; + for (m = 0; m < nbond; m++) { + if (tag[i] > bonds[i][m].jtag) continue; + j = bonds[i][m].j; + if (j < 0) continue; + if (j >= nlocal) continue; + itag = tag[i]; + jbonds = numbond[j]; + for (jb = 0; jb < jbonds; jb++) + if (bonds[j][jb].jtag == itag) break; + if (jb == jbonds) + error->one(FLERR,"Fix hyper/local could not find duplicate bond"); + if (bonds[i][m].boostcoeff != bonds[j][jb].boostcoeff) + checkcoeff_count++; + } + } + } + + // DEBUG timing output + // examine these timings for new hyper/local before delete this code + // verify that boost cooefs stay in sync for 2 copies of each bond + // before delete this code + + /* + time8 = MPI_Wtime(); + + timefirst += time2-time1; + timesecond += time3-time2; + timethird += time4-time3; + timefourth += time5-time4; + timefifth += time6-time5; + timesixth += time7-time6; + timeseventh += time8-time7; + timetotal += time8-time1; + + double bpera = compute_vector(6); + double nbperb = compute_vector(7); + + if (update->ntimestep == 10000 && me == 0) { + printf("TIME First %g\n",timefirst); + printf("TIME Second %g\n",timesecond); + printf("TIME Third %g\n",timethird); + printf("TIME Fourth %g\n",timefourth); + printf("TIME Fifth %g\n",timefifth); + printf("TIME Sixth %g\n",timesixth); + printf("TIME Seventh %g\n",timeseventh); + printf("TIME Total %g\n",timetotal); + printf("Bonds/atom, neigh-bonds/bond %g %g\n",bpera,nbperb); + also print nbondbuild and tbondbuild + } + */ +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::min_pre_neighbor() +{ + pre_neighbor(); +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::build_bond_list(int natom) +{ + int i,j,ii,jj,m,n,inum,jnum,nbond; + tagint itag,jtag; + double xtmp,ytmp,ztmp,delx,dely,delz,rsq,oldcoeff; + int *ilist,*jlist,*numneigh,**firstneigh; + + double time1,time2; + time1 = MPI_Wtime(); + + if (natom) { + nevent++; + nevent_atom += natom; + } + + // trigger Dcut neighbor list build + // NOTE: turn off special bonds in this Dcut neigh list? + + neighbor->build_one(list); + + // make copy of old bonds to preserve boostcoeffs for bonds that persist + // allocate new numbond + + OneBond **old_bonds = bonds; + int *old_numbond = numbond; + + int nmax = atom->nmax; + memory->create(numbond,nmax,"hyper/local:numbond"); + + // old_nall = value of nall at time bonds are built + // reallocate new xold and tagold if necessary + // initialize xold to current coords + // initialize tagold to zero, so atoms not in neighbor list will remain zero + + old_nall = atom->nlocal + atom->nghost; + + if (old_nall > maxold) { + memory->destroy(xold); + memory->destroy(tagold); + memory->destroy(old2now); + maxold = atom->nmax; + memory->create(xold,maxold,3,"hyper/local:xold"); + memory->create(tagold,maxold,"hyper/local:tagold"); + memory->create(old2now,maxold,"hyper/local:old2now"); + } + + double **x = atom->x; + + memcpy(&xold[0][0],&x[0][0],3*old_nall*sizeof(double)); + for (i = 0; i < old_nall; i++) tagold[i] = 0; + + // create and populate new bonds data struct + // while loop allows maxbondperatom to increase once if necessary + // don't know new maxbondperatom value until end of loop + // in practice maxbondperatom will hardly ever increase + // since there is a physical max value + + tagint *tag = atom->tag; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + while (1) { + bonds = (OneBond **) memory->create(bonds,nmax,maxbondperatom, + "hyper/local:bonds"); + if (bonds) memset(bonds[0],0,nmax*sizeof(OneBond)); + for (i = 0; i < nlocal; i++) numbond[i] = 0; + + // identify bonds assigned to each owned atom + // do not create a bond between two non-group atoms + // set tagold = global ID for all I,J atoms used in neighbor list + // tagold remains 0 for unused atoms, skipped in pre_neighbor + + int nbondmax = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itag = tag[i]; + tagold[i] = tag[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + nbond = 0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtag = tag[j]; + tagold[j] = jtag; + + // skip if neither atom I or J are in fix group + // order IJ to insure IJ and JI bonds are stored consistently + + if (!(mask[i] & groupbit) && !(mask[j] & groupbit)) continue; + + if (itag < jtag) { + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + } else { + delx = x[j][0] - xtmp; + dely = x[j][1] - ytmp; + delz = x[j][2] - ztmp; + } + + rsq = delx*delx + dely*dely + delz*delz; + + // NOTE: could create two bonds for IJ both owned from one calc? + // have to skip one of 2 bonds in that case + + if (rsq < cutbondsq) { + if (nbond >= maxbondperatom) { + nbond++; + continue; + } + + bonds[i][nbond].r0 = sqrt(rsq); + bonds[i][nbond].jtag = tag[j]; + bonds[i][nbond].j = j; + + if (firstflag) oldcoeff = 0.0; + else { + oldcoeff = 0.0; + jtag = tag[j]; + n = old_numbond[i]; + for (m = 0; m < n; m++) { + if (old_bonds[i][m].jtag == jtag) { + oldcoeff = old_bonds[i][m].boostcoeff; + break; + } + } + } + + if (oldcoeff > 0.0) bonds[i][nbond].boostcoeff = oldcoeff; + else { + bonds[i][nbond].boostcoeff = BOOSTINIT; + nnewbond++; + } + nbond++; + } + } + numbond[i] = nbond; + nbondmax = MAX(nbondmax,nbond); + } + + // maxbondperatom must increase uniformly on all procs + // since bonds are comunicated when atoms migrate + + int allnbondmax; + MPI_Allreduce(&nbondmax,&allnbondmax,1,MPI_INT,MPI_MAX,world); + if (allnbondmax <= maxbondperatom) break; + + maxbondperatom = allnbondmax; + memory->destroy(bonds); + } + + // deallocate old_bonds and old_numbond + + memory->destroy(old_bonds); + memory->destroy(old_numbond); + + time2 = MPI_Wtime(); + if (firstflag) nnewbond = 0; + else { + time_bondbuild += time2-time1; + nbondbuild++; + } + firstflag = 0; +} + +/* ---------------------------------------------------------------------- */ + +int FixHyperLocal::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,m,ibond,nbond,start; + + m = 0; + + // STRAIN + // pack maxstrain vector + + if (commflag == STRAIN) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = maxstrain[j]; + } + + // STRAINREGION + // pack maxstrain_region vector + + } else if (commflag == STRAINREGION) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = maxstrain_region[j]; + } + + // BIASFLAG + // pack biasflag vector + + } else if (commflag == BIASFLAG) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(biasflag[j]).d; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::unpack_forward_comm(int n, int first, double *buf) +{ + int i,j,k,m,last,ibond,nbond,jlocal,flag; + + m = 0; + last = first + n; + + // STRAIN + // unpack maxstrain vector + + if (commflag == STRAIN) { + for (i = first; i < last; i++) { + maxstrain[i] = buf[m++]; + } + + // STRAINREGION + // unpack maxstrain_region vector + + } else if (commflag == STRAINREGION) { + for (i = first; i < last; i++) { + maxstrain_region[i] = buf[m++]; + } + + // BIASFLAG + // unpack biasflag vector + + } else if (commflag == BIASFLAG) { + for (i = first; i < last; i++) { + biasflag[i] = (tagint) ubuf(buf[m++]).i; + } + } +} + +/* ---------------------------------------------------------------------- */ + +int FixHyperLocal::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + + // STRAINREGION + // pack maxstrain_region vector + + if (commflag == STRAINREGION) { + for (i = first; i < last; i++) { + buf[m++] = maxstrain_region[i]; + } + + // BIASFLAG + // pack biasflag vector + + } else if (commflag == BIASFLAG) { + for (i = first; i < last; i++) { + buf[m++] = ubuf(biasflag[i]).d; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixHyperLocal::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + + // STRAINREGION + // unpack maxstrain_region vector + + if (commflag == STRAINREGION) { + for (i = 0; i < n; i++) { + j = list[i]; + maxstrain_region[j] += buf[m++]; + } + + // BIASFLAG + // unpack biasflag vector + + } else if (commflag == BIASFLAG) { + for (i = 0; i < n; i++) { + j = list[i]; + biasflag[j] = (tagint) ubuf(buf[m++]).i; + } + } +} + +/* ---------------------------------------------------------------------- + allocate atom-based arrays +------------------------------------------------------------------------- */ + +void FixHyperLocal::grow_arrays(int nmax) +{ + // NOTE: not all of these need to be Nmax in length, could allocate elsewhere + + memory->grow(maxstrain,nmax,"hyper/local:maxstrain"); + memory->grow(maxstrain_bondindex,nmax,"hyper/local:maxstrain_bondindex"); + memory->grow(maxstrain_region,nmax,"hyper/local:maxstrain_region"); + if (checkbias) memory->grow(biasflag,nmax,"hyper/local:biasflag"); + + memory->grow(numbond,nmax,"hyper/local:numbond"); + memory->grow(bonds,nmax,maxbondperatom,"hyper/local:bonds"); + + // zero so valgrind does not complain about memcpy() in copy() + // also so loops in pre_neighbor() are OK before + // bonds are setup for the first time + + if (bonds) { + memset(bonds[maxbond],0,(nmax-maxbond)*maxbondperatom*sizeof(OneBond)); + memset(&numbond[maxbond],0,(nmax-maxbond)*sizeof(int)); + maxbond = nmax; + } +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based arrays +------------------------------------------------------------------------- */ + +void FixHyperLocal::copy_arrays(int i, int j, int delflag) +{ + // avoid valgrind copy-to-self warning + + if (i != j) memcpy(bonds[j],bonds[i],numbond[i]*sizeof(OneBond)); + numbond[j] = numbond[i]; +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based array for exchange with another proc +------------------------------------------------------------------------- */ + +int FixHyperLocal::pack_exchange(int i, double *buf) +{ + int m = 1; + int n = numbond[i]; + buf[m++] = ubuf(n).d; + for (int j = 0; j < n; j++) { + buf[m++] = bonds[i][j].r0; + buf[m++] = bonds[i][j].boostcoeff; + buf[m++] = ubuf(bonds[i][j].jtag).d; + buf[m++] = ubuf(bonds[i][j].j).d; + } + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based array from exchange with another proc +------------------------------------------------------------------------- */ + +int FixHyperLocal::unpack_exchange(int nlocal, double *buf) +{ + int m = 1; + int n = numbond[nlocal] = (int) ubuf(buf[m++]).i; + for (int j = 0; j < n; j++) { + bonds[nlocal][j].r0 = buf[m++]; + bonds[nlocal][j].boostcoeff = buf[m++]; + bonds[nlocal][j].jtag = (tagint) ubuf(buf[m++]).i; + bonds[nlocal][j].j = (int) ubuf(buf[m++]).i; + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +double FixHyperLocal::compute_scalar() +{ + double allbias; + MPI_Allreduce(&mybias,&allbias,1,MPI_DOUBLE,MPI_SUM,world); + return allbias; +} + +/* ---------------------------------------------------------------------- */ + +double FixHyperLocal::compute_vector(int i) +{ + // 23 vector outputs returned for i = 0-22 + + // i = 0 = # of boosted bonds on this step + // i = 1 = max strain of any bond on this step + // i = 2 = average bias potential for all bonds on this step + // i = 3 = ave bonds/atom on this step + // i = 4 = ave neighbor bonds/bond on this step + + // i = 5 = fraction of steps and bonds with no bias during this run + // i = 6 = max drift distance of any atom during this run + // i = 7 = max bond length during this run + // i = 8 = average # of boosted bonds/step during this run + // i = 9 = average bias potential for all bonds during this run + // i = 10 = max bias potential for any bond during this run + // i = 11 = min bias potential for any bond during this run + // i = 12 = max dist from my box of any ghost atom with + // maxstain < qfactor during this run + // i = 13 = max dist from my box of any ghost atom with + // any maxstrain during this run + // i = 14 = count of ghost atoms that could not be found + // by any proc at any reneighbor step during this run + // i = 15 = count of lost bond partners during this run + // i = 16 = average bias coeff for lost bond partners during this run + // i = 17 = count of bias overlaps found during this run + // i = 18 = count of non-matching bias coefficients found during this run + + // i = 19 = cummulative hyper time + // i = 20 = cummulative # of event timesteps since fix created + // i = 21 = cummulative # of atoms in events since fix created + // i = 22 = cummulative # of new bonds formed since fix created + + if (i == 0) { + int nboostall; + MPI_Allreduce(&nboost,&nboostall,1,MPI_INT,MPI_SUM,world); + return (double) nboostall; + } + + if (i == 1) { + if (nostrainyet) return 0.0; + int nlocal = atom->nlocal; + double emax = 0.0; + for (int j = 0; j < nlocal; j++) + emax = MAX(emax,maxstrain[j]); + double eall; + MPI_Allreduce(&emax,&eall,1,MPI_DOUBLE,MPI_MAX,world); + return eall; + } + + if (i == 2) { + if (allboost && allbonds) return allboost/allbonds * vmax; + return 1.0; + } + + if (i == 3) return 1.0*allbonds/atom->natoms; + + if (i == 4) { + int nlocal = atom->nlocal; + int nbonds = 0; // BIGINT? + for (int j = 0; j < nlocal; j++) + nbonds += numbond[j]; + int allbonds; + MPI_Allreduce(&nbonds,&allbonds,1,MPI_INT,MPI_SUM,world); + int allneigh; // BIGINT? + MPI_Allreduce(&list->ipage->ndatum,&allneigh,1,MPI_INT,MPI_SUM,world); + double neighsperatom = allneigh/atom->natoms; + double bondsperatom = 0.5*allbonds/atom->natoms; + return neighsperatom * bondsperatom; + } + + if (i == 5) { + int allboost_running,allnobias_running; + MPI_Allreduce(&nboost_running,&allboost_running,1,MPI_INT,MPI_SUM,world); + MPI_Allreduce(&nobias_running,&allnobias_running,1,MPI_INT,MPI_SUM,world); + if (allboost_running) return 1.0*allnobias_running / allboost_running; + return 0.0; + } + + if (i == 6) { + double alldriftsq; + MPI_Allreduce(&maxdriftsq,&alldriftsq,1,MPI_DOUBLE,MPI_MAX,world); + return (double) sqrt(alldriftsq); + } + + if (i == 7) { + double allbondlen; + MPI_Allreduce(&maxbondlen,&allbondlen,1,MPI_DOUBLE,MPI_MAX,world); + return allbondlen; + } + + if (i == 8) { + if (update->ntimestep == update->firststep) return 0.0; + int allboost_running; + MPI_Allreduce(&nboost_running,&allboost_running,1,MPI_INT,MPI_SUM,world); + return 1.0*allboost_running / (update->ntimestep - update->firststep); + } + + if (i == 9) { + if (update->ntimestep == update->firststep) return 0.0; + return sumboostcoeff * vmax / (update->ntimestep - update->firststep); + } + + if (i == 10) { + double allboostcoeff; + MPI_Allreduce(&maxboostcoeff,&allboostcoeff,1,MPI_DOUBLE,MPI_MAX,world); + return allboostcoeff * vmax; + } + + if (i == 11) { + double allboostcoeff; + MPI_Allreduce(&minboostcoeff,&allboostcoeff,1,MPI_DOUBLE,MPI_MAX,world); + return allboostcoeff * vmax; + } + + if (i == 12) return rmaxever; + if (i == 13) return rmaxeverbig; + + if (i == 14) { + int allghost_toofar; + MPI_Allreduce(&ghost_toofar,&allghost_toofar,1,MPI_INT,MPI_SUM,world); + return 1.0*allghost_toofar; + } + + if (i == 15) { + int alllost; + MPI_Allreduce(&lostbond_partner,&alllost,1,MPI_INT,MPI_SUM,world); + return 1.0*alllost; + } + + if (i == 16) { + int alllost; + MPI_Allreduce(&lostbond_partner,&alllost,1,MPI_INT,MPI_SUM,world); + double allcoeff; + MPI_Allreduce(&lostbond_coeff,&allcoeff,1,MPI_DOUBLE,MPI_SUM,world); + if (alllost == 0) return 0; + return allcoeff/alllost; + } + + if (i == 17) { + int allclose; + MPI_Allreduce(&checkbias_count,&allclose,1,MPI_INT,MPI_SUM,world); + return 1.0*allclose; + } + + if (i == 18) { + int allcoeff; + MPI_Allreduce(&checkcoeff_count,&allcoeff,1,MPI_INT,MPI_SUM,world); + return 1.0*allcoeff; + } + + if (i == 19) { + return boosttarget * update->dt * (update->ntimestep - starttime); + } + + if (i == 20) return (double) nevent; + if (i == 21) return (double) nevent_atom; + + if (i == 22) { + int allnew; + MPI_Allreduce(&nnewbond,&allnew,1,MPI_INT,MPI_SUM,world); + return (double) 0.5*allnew; + } +} + +/* ---------------------------------------------------------------------- + wrapper on compute_vector() + used by hyper.cpp to call FixHyper +------------------------------------------------------------------------- */ + +double FixHyperLocal::query(int i) +{ + if (i == 1) return compute_vector(19); // cummulative hyper time + if (i == 2) return compute_vector(20); // nevent + if (i == 3) return compute_vector(21); // nevent_atom + if (i == 4) return compute_vector(3); // ave bonds/atom + if (i == 5) return compute_vector(6); // maxdrift + if (i == 6) return compute_vector(7); // maxbondlen + if (i == 7) return compute_vector(5); // fraction with zero bias + + // unique to local hyper + + if (i == 8) return compute_vector(22); // number of new bonds + if (i == 9) return 1.0*maxbondperatom; // max bonds/atom + if (i == 10) return compute_vector(8); // ave # of boosted bonds/step + if (i == 11) return compute_vector(9); // ave boost coeff over all bonds + if (i == 12) return compute_vector(10); // max boost cooef for any bond + if (i == 13) return compute_vector(11); // max boost cooef for any bond + if (i == 14) return compute_vector(4); // neighbor bonds/bond + if (i == 15) return compute_vector(2); // ave boost cooef now + if (i == 16) return time_bondbuild; // CPU time for bond_build calls + if (i == 17) return rmaxever; // ghost atom distance for < maxstrain + if (i == 18) return rmaxeverbig; // ghost atom distance for any strain + if (i == 19) return compute_vector(14); // count of ghost atoms not found + if (i == 20) return compute_vector(15); // count of lost bond partners + if (i == 21) return compute_vector(16); // ave bias coeff of long bonds + if (i == 22) return compute_vector(17); // count of bias overlaps + if (i == 23) return compute_vector(18); // count of non-matching bias coeffs + + error->all(FLERR,"Invalid query to fix hyper/local"); +} + +/* ---------------------------------------------------------------------- + memory usage of per-atom and per-bond arrays +------------------------------------------------------------------------- */ + +double FixHyperLocal::memory_usage() +{ + int nmax = atom->nmax; + double bytes = 2*nmax * sizeof(int); // numbond, maxstrain_bondindex + bytes = 2*nmax * sizeof(double); // maxstrain, maxstrain_region + bytes += maxbondperatom*nmax * sizeof(OneBond); // bonds + bytes += 3*maxold * sizeof(double); // xold + bytes += maxold * sizeof(tagint); // tagold + bytes += maxold * sizeof(int); // old2now + return bytes; +} diff --git a/src/REPLICA/fix_hyper_local.h b/src/REPLICA/fix_hyper_local.h new file mode 100644 index 0000000000..5150386929 --- /dev/null +++ b/src/REPLICA/fix_hyper_local.h @@ -0,0 +1,175 @@ +/* -*- 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 + +FixStyle(hyper/local,FixHyperLocal) + +#else + +#ifndef LMP_FIX_HYPER_LOCAL_H +#define LMP_FIX_HYPER_LOCAL_H + +#include "fix_hyper.h" + +namespace LAMMPS_NS { + +class FixHyperLocal : public FixHyper { + public: + FixHyperLocal(class LAMMPS *, int, char **); + ~FixHyperLocal(); + int setmask(); + void init(); + void init_list(int, class NeighList *); + void setup_pre_neighbor(); + void setup_pre_reverse(int, int); + void pre_neighbor(); + void pre_reverse(int, int); + void min_pre_neighbor(); + double compute_scalar(); + double compute_vector(int); + double query(int); + + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + + void grow_arrays(int); + void copy_arrays(int, int, int); + int pack_exchange(int, double *); + int unpack_exchange(int, double *); + + double memory_usage(); + + // extra methods visible to callers + + void init_hyper(); + void build_bond_list(int); + + private: + int me; + double cutbond,qfactor,vmax,tequil,dcut; + double alpha_user; // timescale to apply boostostat (time units) + double alpha; // unitless dt/alpha_user + double boosttarget; // target value of boost + int histoflag; + int lostbond,lostbond_partner; + double lostbond_coeff; + int checkbias,checkbias_every,checkbias_flag,checkbias_count; + int checkcoeff,checkcoeff_every,checkcoeff_flag,checkcoeff_count; + + int setupflag; // 1 during setup, 0 during run + int firstflag; // set for first time bond_build takes place + int nostrainyet; // 1 until maxstrain is first computed + + int nboost_running,nobias_running; + int nbondbuild; + double time_bondbuild; + bigint starttime; + double sumboostcoeff; // sum of aveboost at every timestep + int allbonds; // sum of bond count on this step + double allboost; // sum of boostcoeff on all bonds on this step + + int nnewbond; // running tally of number of new bonds created + int maxbondperatom; // max # of bonds any atom ever has + int commflag; // flag for communication mode + int nevent; // # of events that trigger bond rebuild + int nevent_atom; // # of atoms that experienced an event + double cutbondsq,dcutsq; + double beta,t_hyper,invqfactorsq; + double mybias; + double maxbondlen; // cummulative max length of any bond + double maxdriftsq; // max distance any atom drifts from original pos + double maxboostcoeff; // cummulative max boost coeff for any bond + double minboostcoeff; // cummulative min boost coeff for any bond + double rmaxever,rmaxeverbig; + int ghost_toofar; + + double timefirst,timesecond,timethird,timefourth; + double timefifth,timesixth,timeseventh,timetotal; + + // data structs for per-atom and per-bond info + // all of these are for current owned and ghost atoms + // except list and old2now are for atom indices at time of last bond build + + class NeighList *list; // full neigh list up to Dcut distance + // created only when bonds are rebuilt + + int *old2now; // o2n[i] = current local index of old atom i + // stored for old owned and ghost atoms + // I = old index when bonds were last created + // old indices are stored in old neighbor list + + double **xold; // coords of owned+ghost atoms when bonds created + tagint *tagold; // global IDs of owned+ghost atoms when b created + + int maxold; // allocated size of old2now + int maxbond; // allocated size of bonds + int old_nall; // nlocal+nghost when old2now was last setup + + struct OneBond { // single IJ bond, atom I is owner + double r0; // original relaxed bond length + double boostcoeff; // boost coefficient + tagint jtag; // global index of J atom in bond IJ + int j; // local index of J atom in bond IJ + }; + + struct OneBond **bonds; // 2d array of bonds for owned atoms + int *numbond; // number of bonds for each owned atom + + double *maxstrain; // max-strain of any bond atom I is part of + // for owned and ghost atoms + double *maxstrain_region; // max-strain of any neighbor atom J of atom I + // for owned and ghost atoms + int *maxstrain_bondindex; // index of max-strain bond of each atom I + // just for owned atoms + tagint *biasflag; // atoms in biased bonds marked with bond partner + // for owned and ghost atoms + + // list of boosted bonds that this proc will bias + + int maxboost; // allocated size of boost list + int nboost; // # of boosted bonds I own + int *boost; // index of atom I in each boosted bond + + // histogramming of bond boost cooeficients + + int histo_flag,histo_every,histo_count,histo_print,histo_steps; + double histo_delta,invhisto_delta,histo_lo; + bigint *histo,*allhisto; + + // DEBUG: MPI data struct for finding min/max bias coeffs via Allreduce + + struct Two { + double value; + int proc; + }; + Two pairme,pairall; + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +*/ diff --git a/src/REPLICA/hyper.cpp b/src/REPLICA/hyper.cpp new file mode 100644 index 0000000000..0449943215 --- /dev/null +++ b/src/REPLICA/hyper.cpp @@ -0,0 +1,548 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "hyper.h" +#include "update.h" +#include "atom.h" +#include "domain.h" +#include "region.h" +#include "integrate.h" +#include "min.h" +#include "force.h" +#include "neighbor.h" +#include "modify.h" +#include "compute_event_displace.h" +#include "fix_hyper.h" +#include "fix_event_hyper.h" +#include "output.h" +#include "dump.h" +#include "finish.h" +#include "timer.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +enum{NOHYPER,GLOBAL,LOCAL}; + +/* ---------------------------------------------------------------------- */ + +Hyper::Hyper(LAMMPS *lmp) : Pointers(lmp) {} + +/* ---------------------------------------------------------------------- + perform hyperdynamics simulation +------------------------------------------------------------------------- */ + +void Hyper::command(int narg, char **arg) +{ + MPI_Comm_rank(world,&me); + MPI_Comm_size(world,&nprocs); + + // error checks + + if (domain->box_exist == 0) + error->all(FLERR,"Hyper command before simulation box is defined"); + + if (narg < 4) error->all(FLERR,"Illegal hyper command"); + + int nsteps = force->inumeric(FLERR,arg[0]); + t_event = force->inumeric(FLERR,arg[1]); + + char *id_fix = new char[strlen(arg[2])+1]; + strcpy(id_fix,arg[2]); + + char *id_compute = new char[strlen(arg[3])+1]; + strcpy(id_compute,arg[3]); + + options(narg-4,&arg[4]); + + // total # of timesteps must be multiple of t_event + + if (t_event <= 0) + error->all(FLERR,"Invalid t_event in hyper command"); + if (nsteps % t_event) + error->all(FLERR,"Hyper nsteps must be multiple of t_event"); + if (rebond < 0) + error->all(FLERR,"Invalid rebond in hyper command"); + if (rebond && rebond % t_event) + error->all(FLERR,"Hyper rebond must be multiple of t_event"); + + // FixHyper class performs global or local hyperdynamics + + int hyperenable,hyperstyle; + + if (strcmp(id_fix,"NULL") == 0) { + hyperenable = 0; + hyperstyle = NOHYPER; + } else { + int ifix = modify->find_fix(id_fix); + if (ifix < 0) error->all(FLERR,"Could not find fix ID for hyper"); + fix_hyper = (FixHyper *) modify->fix[ifix]; + int dim; + int *hyperflag = (int *) fix_hyper->extract("hyperflag",dim); + if (hyperflag == NULL || *hyperflag == 0) + error->all(FLERR,"Hyper fix is not a valid hyperdynamics fix"); + if (*hyperflag == 1) hyperstyle = GLOBAL; + if (*hyperflag == 2) hyperstyle = LOCAL; + hyperenable = 1; + } + + // create FixEventHyper class to store event and pre-quench states + + char **args = new char*[3]; + args[0] = (char *) "hyper_event"; + args[1] = (char *) "all"; + args[2] = (char *) "EVENT/HYPER"; + modify->add_fix(3,args); + fix_event = (FixEventHyper *) modify->fix[modify->nfix-1]; + delete [] args; + + // create Finish for timing output + + finish = new Finish(lmp); + + // assign FixEventHyper to event-detection compute + // necessary so it will know atom coords at last event + + int icompute = modify->find_compute(id_compute); + if (icompute < 0) error->all(FLERR,"Could not find compute ID for hyper"); + compute_event = (ComputeEventDisplace *) modify->compute[icompute]; + compute_event->reset_extra_compute_fix("hyper_event"); + + // reset reneighboring criteria since will perform minimizations + + neigh_every = neighbor->every; + neigh_delay = neighbor->delay; + neigh_dist_check = neighbor->dist_check; + + if (neigh_every != 1 || neigh_delay != 0 || neigh_dist_check != 1) { + if (me == 0) + error->warning(FLERR,"Resetting reneighboring criteria during hyper"); + } + + neighbor->every = 1; + neighbor->delay = 0; + neighbor->dist_check = 1; + + // initialize hyper as if one long dynamics run + + update->whichflag = 1; + update->nsteps = nsteps; + update->beginstep = update->firststep = update->ntimestep; + update->endstep = update->laststep = update->firststep + nsteps; + if (update->laststep < 0) + error->all(FLERR,"Too many timesteps"); + + lmp->init(); + + // init minimizer settings and minimizer itself + + update->etol = etol; + update->ftol = ftol; + update->max_eval = maxeval; + + // cannot use hyper with a changing box + // removing this restriction would require saving/restoring box params + + if (domain->box_change) + error->all(FLERR,"Cannot use hyper with a changing box"); + + // cannot use hyper with time-dependent fixes or regions + + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->time_depend) + error->all(FLERR,"Cannot use hyper with a time-dependent fix defined"); + + for (int i = 0; i < domain->nregion; i++) + if (domain->regions[i]->dynamic_check()) + error->all(FLERR,"Cannot use hyper with a time-dependent region defined"); + + // perform hyperdynamics simulation + + timer->init(); + timer->barrier_start(); + time_start = timer->get_wall(Timer::TOTAL); + + nbuild = ndanger = 0; + time_dynamics = time_quench = 0.0; + double clock = 0.0; + + if (hyperenable) fix_hyper->init_hyper(); + + timer->barrier_start(); + time_start = timer->get_wall(Timer::TOTAL); + + // perform initial minimization and bond list creation + + int nevent = 0; + int nevent_atoms = 0; + + fix_event->store_state_quench(); + quench(1); + if (dumpflag) + for (int idump = 0; idump < ndump; idump++) + output->dump[dumplist[idump]]->write(); + fix_event->store_event(); + if (hyperenable) fix_hyper->build_bond_list(0); + fix_event->restore_state_quench(); + + // main loop: dynamics, store state, quench, check event, restore state + + int ecount; + int istep = 0; + + while (istep < nsteps) { + dynamics(t_event,time_dynamics); + fix_event->store_state_quench(); + quench(0); + + ecount = compute_event->all_events(); + + if (ecount) { + nevent++; + nevent_atoms += ecount; + + if (dumpflag) + for (int idump = 0; idump < ndump; idump++) + output->dump[dumplist[idump]]->write(); + fix_event->store_event(); + if (hyperenable) fix_hyper->build_bond_list(ecount); + + } else if (rebond && update->ntimestep % rebond == 0) { + fix_event->store_event(); + if (hyperenable) fix_hyper->build_bond_list(ecount); + } + + fix_event->restore_state_quench(); + + // NOTE: replace clock with hypertime + //clock = clock + t_event*universe->nworlds; + if (stepmode == 0) istep = update->ntimestep - update->beginstep; + else istep = clock; + } + + if (stepmode) nsteps = update->ntimestep - update->beginstep; + + // set total timers and counters so Finish() will process them + + timer->set_wall(Timer::TOTAL,time_start); + timer->barrier_stop(); + + timer->set_wall(Timer::DYNAMICS,time_dynamics); + timer->set_wall(Timer::QUENCH,time_quench); + + neighbor->ncalls = nbuild; + neighbor->ndanger = ndanger; + + update->nsteps = nsteps; + + if (me == 0) { + if (screen) fprintf(screen,"Final hyper stats ...\n\n"); + if (logfile) fprintf(logfile,"Final hyper stats ...\n\n"); + } + + // subset of quantities also available in fix hyper output + + int nevent_running = 0; + int nevent_atoms_running = 0; + double t_hyper = 0.0; + double avebonds = 0.0; + double maxdrift = 0.0; + double maxbondlen = 0.0; + double fraczero = 1.0; + + double nnewbond,avenboost,aveboostcoeff,maxboostcoeff,minboostcoeff; + double maxbondperatom,neighbondperbond,aveboostnow; + double tbondbuild,rmaxever,rmaxeverbig,allghost_toofar; + double lostbond,lostbondcoeff,biasoverlap,nonmatchbiascoeff; + + if (hyperenable) { + t_hyper = fix_hyper->query(1); + nevent_running = fix_hyper->query(2); + nevent_atoms_running = fix_hyper->query(3); + avebonds = fix_hyper->query(4); + maxdrift = fix_hyper->query(5); + maxbondlen = fix_hyper->query(6); + fraczero = fix_hyper->query(7); + + if (hyperstyle == LOCAL) { + nnewbond = fix_hyper->query(8); + maxbondperatom = fix_hyper->query(9); + avenboost = fix_hyper->query(10); + aveboostcoeff = fix_hyper->query(11); + maxboostcoeff = fix_hyper->query(12); + minboostcoeff = fix_hyper->query(13); + neighbondperbond = fix_hyper->query(14); + aveboostnow = fix_hyper->query(15); + tbondbuild = fix_hyper->query(16); + rmaxever = fix_hyper->query(17); + rmaxeverbig = fix_hyper->query(18); + allghost_toofar = fix_hyper->query(19); + lostbond = fix_hyper->query(20); + lostbondcoeff = fix_hyper->query(21); + biasoverlap = fix_hyper->query(22); + nonmatchbiascoeff = fix_hyper->query(23); + } + } + + if (me == 0) { + if (screen) { + fprintf(screen,"Cummulative quantities for fix hyper:\n"); + fprintf(screen," hyper time = %g\n",t_hyper); + fprintf(screen," event timesteps = %d\n",nevent_running); + fprintf(screen," # of atoms in events = %d\n",nevent_atoms_running); + fprintf(screen,"Quantities for this hyper run:\n"); + fprintf(screen," event timesteps = %d\n",nevent); + fprintf(screen," # of atoms in events = %d\n",nevent_atoms); + fprintf(screen," max length of any bond = %g\n",maxbondlen); + fprintf(screen," max drift distance of any atom = %g\n",maxdrift); + fprintf(screen," fraction of steps & bonds with zero bias = %g\n", + fraczero); + fprintf(screen,"Current quantities:\n"); + fprintf(screen," ave bonds/atom = %g\n",avebonds); + + if (hyperstyle == LOCAL) { + fprintf(screen,"Cummulative quantities specific to fix hyper/local:\n"); + fprintf(screen," # of new bonds formed = %g\n",nnewbond); + fprintf(screen," max bonds/atom = %g\n",maxbondperatom); + fprintf(screen,"Quantities for this hyper run specific to " + "fix hyper/local:\n"); + fprintf(screen," ave boosted bonds/step = %g\n",avenboost); + fprintf(screen," ave boost coeff of all bonds = %g\n",aveboostcoeff); + fprintf(screen," max boost coeff of any bond = %g\n",maxboostcoeff); + fprintf(screen," min boost coeff of any bond = %g\n",minboostcoeff); + fprintf(screen," max dist from my box of any " + "non-maxstrain bond ghost atom = %g\n",rmaxever); + fprintf(screen," max dist from my box of any bond ghost atom = %g\n", + rmaxeverbig); + fprintf(screen," count of bond ghost neighbors " + "not found on reneighbor steps = %g\n",allghost_toofar); + fprintf(screen," lost bond partners = %g\n",lostbond); + fprintf(screen," ave bias coeff for lost bond partners = %g\n", + lostbondcoeff); + fprintf(screen," bias overlaps = %g\n",biasoverlap); + fprintf(screen," non-matching bias coeffs = %g\n",nonmatchbiascoeff); + fprintf(screen," CPU time for bond builds = %g\n",tbondbuild); + fprintf(screen,"Current quantities specific to fix hyper/local:\n"); + fprintf(screen," neighbor bonds/bond = %g\n",neighbondperbond); + fprintf(screen," ave boost coeff for all bonds = %g\n",aveboostnow); + } + fprintf(screen,"\n"); + } + + if (logfile) { + fprintf(logfile,"Cummulative quantities for fix hyper:\n"); + fprintf(logfile," hyper time = %g\n",t_hyper); + fprintf(logfile," event timesteps = %d\n",nevent_running); + fprintf(logfile," # of atoms in events = %d\n",nevent_atoms_running); + fprintf(logfile,"Quantities for this hyper run:\n"); + fprintf(logfile," event timesteps = %d\n",nevent); + fprintf(logfile," # of atoms in events = %d\n",nevent_atoms); + fprintf(logfile," max length of any bond = %g\n",maxbondlen); + fprintf(logfile," max drift distance of any atom = %g\n",maxdrift); + fprintf(logfile," fraction of steps & bonds with zero bias = %g\n", + fraczero); + fprintf(logfile,"Current quantities:\n"); + fprintf(logfile," ave bonds/atom = %g\n",avebonds); + + if (hyperstyle == LOCAL) { + fprintf(logfile,"Cummulative quantities specific tofix hyper/local:\n"); + fprintf(logfile," # of new bonds formed = %g\n",nnewbond); + fprintf(logfile," max bonds/atom = %g\n",maxbondperatom); + fprintf(logfile,"Quantities for this hyper run specific to " + "fix hyper/local:\n"); + fprintf(logfile," ave boosted bonds/step = %g\n",avenboost); + fprintf(logfile," ave boost coeff of all bonds = %g\n",aveboostcoeff); + fprintf(logfile," max boost coeff of any bond = %g\n",maxboostcoeff); + fprintf(logfile," min boost coeff of any bond = %g\n",minboostcoeff); + fprintf(logfile," max dist from my box of any " + "non-maxstrain bond ghost atom = %g\n",rmaxever); + fprintf(logfile," max dist from my box of any bond ghost atom = %g\n", + rmaxeverbig); + fprintf(logfile," count of ghost bond neighbors " + "not found on reneighbor steps = %g\n",allghost_toofar); + fprintf(logfile," lost bond partners = %g\n",lostbond); + fprintf(logfile," ave bias coeff for lost bond partners = %g\n", + lostbondcoeff); + fprintf(logfile," bias overlaps = %g\n",biasoverlap); + fprintf(logfile," non-matching bias coeffs = %g\n",nonmatchbiascoeff); + fprintf(logfile," CPU time for bond builds = %g\n",tbondbuild); + fprintf(logfile,"Current quantities specific to fix hyper/local:\n"); + fprintf(logfile," neighbor bonds/bond = %g\n",neighbondperbond); + fprintf(logfile," ave boost coeff for all bonds = %g\n",aveboostnow); + } + fprintf(logfile,"\n"); + } + } + + // timing stats + + finish->end(4); + + update->whichflag = 0; + update->firststep = update->laststep = 0; + update->beginstep = update->endstep = 0; + + // reset reneighboring criteria + + neighbor->every = neigh_every; + neighbor->delay = neigh_delay; + neighbor->dist_check = neigh_dist_check; + + delete [] id_fix; + delete [] id_compute; + memory->destroy(dumplist); + delete finish; + modify->delete_fix("hyper_event"); + + compute_event->reset_extra_compute_fix(NULL); +} + +/* ---------------------------------------------------------------------- + short dynamics run +------------------------------------------------------------------------- */ + +void Hyper::dynamics(int nsteps, double &time_category) +{ + update->whichflag = 1; + update->nsteps = nsteps; + + // full init works + // need to try partial init or setup + + lmp->init(); + update->integrate->setup(0); + // this may be needed if don't do full init + //modify->addstep_compute_all(update->ntimestep); + bigint ncalls = neighbor->ncalls; + + timer->barrier_start(); + update->integrate->run(nsteps); + timer->barrier_stop(); + time_dynamics += timer->get_wall(Timer::TOTAL); + + nbuild += neighbor->ncalls - ncalls; + ndanger += neighbor->ndanger; + + update->integrate->cleanup(); + finish->end(0); +} + +/* ---------------------------------------------------------------------- + quench minimization + flag = 1 to trigger output of memory in setup() call +------------------------------------------------------------------------- */ + +void Hyper::quench(int flag) +{ + bigint ntimestep_hold = update->ntimestep; + bigint endstep_hold = update->endstep; + + // need to change whichflag so that minimize->setup() calling + // modify->setup() will call fix->min_setup() + + update->whichflag = 2; + update->nsteps = maxiter; + update->endstep = update->laststep = update->firststep + maxiter; + if (update->laststep < 0) + error->all(FLERR,"Too many iterations"); + update->restrict_output = 1; + + // full init works + + lmp->init(); + update->minimize->setup(flag); + + // partial init does not work + + //modify->addstep_compute_all(update->ntimestep); + //update->minimize->setup_minimal(1); + + // NOTE: what doing with ncalls? + int ncalls = neighbor->ncalls; + + timer->barrier_start(); + update->minimize->run(maxiter); + timer->barrier_stop(); + time_quench += timer->get_wall(Timer::TOTAL); + + update->minimize->cleanup(); + finish->end(0); + + // reset timestep as if quench did not occur + // clear timestep storage from computes, since now invalid + + update->restrict_output = 0; + update->ntimestep = ntimestep_hold; + update->endstep = update->laststep = endstep_hold; + for (int i = 0; i < modify->ncompute; i++) + if (modify->compute[i]->timeflag) modify->compute[i]->clearstep(); +} + +/* ---------------------------------------------------------------------- + parse optional parameters at end of hyper input line +------------------------------------------------------------------------- */ + +void Hyper::options(int narg, char **arg) +{ + // set defaults + + etol = 1.0e-4; + ftol = 1.0e-4; + maxiter = 40; + maxeval = 50; + stepmode = 0; + dumpflag = 0; + ndump = 0; + dumplist = NULL; + rebond = 0; + + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"min") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal hyper command"); + etol = force->numeric(FLERR,arg[iarg+1]); + ftol = force->numeric(FLERR,arg[iarg+2]); + maxiter = force->inumeric(FLERR,arg[iarg+3]); + maxeval = force->inumeric(FLERR,arg[iarg+4]); + if (maxiter < 0) error->all(FLERR,"Illegal hyper command"); + iarg += 5; + + } else if (strcmp(arg[iarg],"time") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal hyper command"); + if (strcmp(arg[iarg+1],"steps") == 0) stepmode = 0; + else if (strcmp(arg[iarg+1],"clock") == 0) stepmode = 1; + else error->all(FLERR,"Illegal hyper command"); + iarg += 2; + + } else if (strcmp(arg[iarg],"dump") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal hyper command"); + dumpflag = 1; + int idump = output->find_dump(arg[iarg+1]); + if (idump < 0) + error->all(FLERR,"Dump ID in hyper command does not exist"); + memory->grow(dumplist,ndump+1,"hyper:dumplist"); + dumplist[ndump++] = idump; + iarg += 2; + + } else if (strcmp(arg[iarg],"rebond") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal hyper command"); + rebond = force->inumeric(FLERR,arg[iarg+1]); + iarg += 2; + + } else error->all(FLERR,"Illegal hyper command"); + } +} diff --git a/src/REPLICA/hyper.h b/src/REPLICA/hyper.h new file mode 100644 index 0000000000..1b05172bcf --- /dev/null +++ b/src/REPLICA/hyper.h @@ -0,0 +1,65 @@ +/* -*- 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 COMMAND_CLASS + +CommandStyle(hyper,Hyper) + +#else + +#ifndef LMP_HYPER_H +#define LMP_HYPER_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class Hyper : protected Pointers { + public: + Hyper(class LAMMPS *); + ~Hyper() {} + void command(int, char **); + + private: + int me,nprocs; + int t_event; + double etol,ftol; + int maxiter,maxeval; + int stepmode,dumpflag,ndump,rebond; + int *dumplist; + + int neigh_every,neigh_delay,neigh_dist_check; + int quench_reneighbor; + bigint nbuild,ndanger; + + double time_dynamics,time_quench; + double time_start; + + class FixHyper *fix_hyper; + class FixEventHyper *fix_event; + class ComputeEventDisplace *compute_event; + class Finish *finish; + + void dynamics(int, double &); + void quench(int flag); + void options(int, char **); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ -- GitLab From d6631266ceb0049a6f9696fa994032c2091b47f7 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 10 Oct 2018 13:47:49 -0600 Subject: [PATCH 082/362] doc files in wrong dir --- doc/{ => src}/fix_hyper_global.txt | 0 doc/{ => src}/fix_hyper_local.txt | 0 doc/{ => src}/hyper.txt | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename doc/{ => src}/fix_hyper_global.txt (100%) rename doc/{ => src}/fix_hyper_local.txt (100%) rename doc/{ => src}/hyper.txt (100%) diff --git a/doc/fix_hyper_global.txt b/doc/src/fix_hyper_global.txt similarity index 100% rename from doc/fix_hyper_global.txt rename to doc/src/fix_hyper_global.txt diff --git a/doc/fix_hyper_local.txt b/doc/src/fix_hyper_local.txt similarity index 100% rename from doc/fix_hyper_local.txt rename to doc/src/fix_hyper_local.txt diff --git a/doc/hyper.txt b/doc/src/hyper.txt similarity index 100% rename from doc/hyper.txt rename to doc/src/hyper.txt -- GitLab From 265c11dca9f8b28ca64b54b2174a0e34f80c810c Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 11 Oct 2018 08:03:03 -0600 Subject: [PATCH 083/362] more edits to hyper docs --- doc/src/fix_hyper_global.txt | 144 ++++++++++++++++++++------- doc/src/hyper.txt | 183 ++++++++++++++++++++++++++--------- 2 files changed, 242 insertions(+), 85 deletions(-) diff --git a/doc/src/fix_hyper_global.txt b/doc/src/fix_hyper_global.txt index c841f0b891..5893f392d3 100644 --- a/doc/src/fix_hyper_global.txt +++ b/doc/src/fix_hyper_global.txt @@ -26,59 +26,122 @@ fix 1 all hyper/global 1.0 0.3 0.8 300.0 :pre [Description:] This fix is meant to be used with the "hyper"_hyper.html command to -perform a bond-boost hyperdynamics simulation. The role of this fix -is a select a single pair of atoms within the system at each timestep -to add a global bias potential to, which will alter their dynamics. +perform a bond-boost global hyperdynamics (GHD) simulation. The role +of this fix is to a select a single pair of atoms in the system at +each timestep to add a global bias potential to, which will alter the +dynamics of the system in a manner that effectively accelerates time. This is in contrast to the "fix hyper/local"_fix_hyper_local.html -command, which can add a local bias potential to multiple pairs of -atoms at each timestep. +command, which can be user to perform a local hyperdynamics (LHD) +simulation, by adding a local bias potential to multiple pairs of +atoms at each timestep. GHD can speed-up a small simulation with up +to a few 100 atoms. For larger systems, LHD is needed to achieve good +speed-ups. For a system that undergoes rare transition events, where one or more -atoms move across an energy barrier to a new potential energy basin, -the effect of the bias potential is to induce more rapid transitions. +atoms move over an energy barrier to a new potential energy basin, the +effect of the bias potential is to induce more rapid transitions. This can lead to a dramatic speed-up in the rate at which events occurs, without altering their relative frequencies, thus leading to -an overall dramatic speed-up in the effective elapsed time of the -simulation. +an overall increase in the elapsed real time of the simulation as +compared to simulating for the same number of timesteps with normal +MD. See the "hyper"_hyper.html doc page for a more general discussion +of hyperdynamics and citations that explain both GHD and LHD. + +The equations and logic used by this fix to perform GHD are as +follows. This follows the description of GHD given in +"(Voter2013)"_#Voter2013ghd. The bond-boost form of a bias potential +for GHD is due to Miron and Fichthorn as described in +"(Miron)"_#Mironghd. Here we use a simplified version of bond-boost +GHD where a single bond is biased at any one timestep. + +Bonds are defined between every pair of I,J atoms whose R0ij distance +is less than {cutbond}, when the system is in a quenched state +(minimum) energy. Note that these are not "bonds" in a covalent +sense. A bond is simply any pair of atoms that meet the distance +criterion. {Cutbond} is an argument to this fix; it is discussed more +below. + +The current strain of bond IJ (when running dynamics) is defined as -Cite various papers. +Eij = (Rij - R0ij) / R0ij :pre -The current strain of a bond IJ is defined as +where Rij is the current distance between atoms I,J, and R0ij is the +equilibrium distance in the quenched state. -Eij = (Rij - R0ij) / R0ij :pre +The bias energy Vij of any bond IJ is defined as + +Vij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < qfactor + = 0 otherwise :pre + +where the prefactor {Vmax} and the cutoff {qfactor} are arguments to +this fix; they are discussed more below. This functional form is an +inverse parabola centered at 0.0 with height Vmax and which goes to +0.0 at +/- qfactor. + +Let Emax = the maximum of abs(Eij) for all IJ bonds in the system on a +given timestep. On that step, Vij is added as a bias potential to +only the two atoms IJ in the bond with strain Emax, call it Vij(max). +Note that Vij(max) will be 0.0 if Emax >= qfactor on that timestep. +Also note that Vij(max) is added to the normal interatomic potential +that is computed between all atoms in the system. + +The derivative of Vij(max) with respect to the position of each atom +in the Emax bond gives a force Fij(max) acting on the bond as + +Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor^2 for abs(Eij) < qfactor + = 0 otherwise :pre -Emax = is the max of the absolute value of Eij for all IJ bonds. +which can be decomposed into an equal and opposite force acting (only) +on the two I,J atoms in the Emax bond. -dVij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < q - = 0 otherwise :pre +The boost factor in time for the system is given each timestep I by -Delta Vbias = minimum of dVij for all IJ bonds :pre +Bi = exp(beta * Vij(max)) :pre -The boost factor B = exp(beta * Delta Vbias) -for a single timestep. +where beta = 1/kTequil, and {Tequil} is the temperature of the system +and an arguement to this fix. Note that Bi >= 1 at every step. -Thus the accumulated hypertime is simply +NOTE: Must use langevin set to Tequil also. LAMMPS does not +check that you do this. +as maintained by a thermostat for constant NVT dynamics. -t_hyper = Sum (i = 1 to Nsteps) Bi * dt :pre +The elapsed system time t_hyper for a GHD simulation running for {N} +timesteps is simply + +t_hyper = Sum (i = 1 to N) Bi * dt :pre + +where dt is the timestep size defined by the "timestep"_timestep.html +command. The effective time acceleration due to GHD is thus t_hyper / +N*dt, where the denominator is elapsed time for a normal MD run. + +Note that in global hyperdynamics, the boost factor varies from +timestep to timestep. Likewise, which bond has Emax strain and thus +which pair of atoms the bias potential is added to, will also vary +from timestep to timestep. + +:line The {cutbond} argument is the cutoff distance for defining bonds between pairs of nearby atoms. A pair of atoms in their equilibrium, -minimum-energy config, which are a distance Rij < cutbond, are -defined as a bonded pair. +minimum-energy config, which are a distance Rij < cutbond, are defined +as a bonded pair. This should normally be roughly ~25% larger than +the nearest-neighbor distance in a crystalline lattice. -The {qfactor} argument is the limiting strain at which -the Vbias (the bias potential) goes to 0.0. +The {qfactor} argument is the limiting strain at which the bias +potential goes to 0.0. -If {qfactor} is too big, then transitions are affected b/c -the bias energy is non-zero at the transitions. If it is -too small than not must boost is achieved for a large system -with many bonds (some bonds Eij always exceeds qfactor). +If {qfactor} is set too large, then transitions from one energy basin +to another are affected because the bias potneial is non-zero at the +transitions. If {qfactor} is set too small than little boost is +achieved because some the Eij strain of some bond is (nearly) always +exceeding {qfactor). Note The {Vmax} argument is the prefactor on the bias potential. +It should be set to a value smaller than -The {Tequil} argument is part of the beta term in the -exponential factor that determines how much boost is -achieved as a function of the bias potential. +The {Tequil} argument is part of the beta term in the exponential +factor that determines how much boost is achieved as a function of the +bias potential. [Restart, fix_modify, output, run start/stop, minimize info:] @@ -96,12 +159,12 @@ the bias potential (energy units) applied on the current timestep. The vector stores the following quantities: 1 = boost factor on this step (unitless) -2 = max strain of any bond on this step (unitless) +2 = max strain Eij of any bond on this step (unitless) 3 = ID of first atom in the max-strain bond 4 = ID of second atom in the max-strain bond 5 = average # of bonds/atom on this step :ul -6 = fraction of step with no bias during this run +6 = fraction of steps with bias = 0.0 during this run 7 = max drift distance of any atom during this run (distance units) 8 = max bond length during this run (distance units) :ul @@ -135,12 +198,19 @@ minimization"_minimize.html. [Restrictions:] -This fix is part of the REPLICA package. It is only enabled if LAMMPS -was built with that package. See the "Making -LAMMPS"_Section_start.html#start_3 section for more info. +This command can only be used if LAMMPS was built with the REPLICA +package. See the "Build package"_Build_package.html doc +page for more info. [Related commands:] -"fix hyper/local"_fix_hyper_local.html +"hyper"_hyper.html, "fix hyper/local"_fix_hyper_local.html [Default:] None + +:link(Voter2013) +[(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139, +144110 (2013). + +:link(Miron) +[(Miron)] R. A. Miron and K. A. Fichthorn, J Chem Phys, 119, 6210 (2003). diff --git a/doc/src/hyper.txt b/doc/src/hyper.txt index 966d33a30f..e862af2235 100644 --- a/doc/src/hyper.txt +++ b/doc/src/hyper.txt @@ -10,14 +10,14 @@ hyper command :h3 [Syntax:] -hyper N Nevent fixID computeID keyword values ... :pre +hyper N Nevent fix-ID compute-ID keyword values ... :pre N = # of timesteps to run :ulb,l Nevent = check for events every this many steps :l -fixID = ID of a fix that applies a global or local bias potential :l -computeID = ID of a compute that identifies when an event has occurred :l +fix-ID = ID of a fix that applies a global or local bias potential, can be NULL :l +compute-ID = ID of a compute that identifies when an event has occurred :l zero or more keyword/value pairs may be appended :l -keyword = {min} or {time} :l +keyword = {min} or {time} or {dump} or {rebond} :l {min} values = etol ftol maxiter maxeval etol = stopping tolerance for energy, used in quenching ftol = stopping tolerance for force, used in quenching @@ -25,82 +25,169 @@ keyword = {min} or {time} :l maxeval = max number of force/energy evaluations, used in quenching {time} value = {steps} or {clock} {steps} = simulation runs for N timesteps (default) - {clock} = simulation runs until hyper time exceeds N timesteps :pre + {clock} = simulation runs until hyper time exceeds N timesteps + {dump} value = dump-ID + dump-ID = ID of dump to trigger whenever an event takes place + {rebond} value = Nrebond + Nrebond = frequency at which to reset bonds, even if no event has occurred + :pre :ule [Examples:] -hyper 5000 100 global event :pre +compute event all event/displace 1.0 +fix HG mobile hyper/global 3.0 0.3 0.4 800.0 +hyper 5000 100 HG event min 1.0e-6 1.0e-6 100 100 dump 1 dump 5 :pre [Description:] Run a bond-boost hyperdynamics (HD) simulation where time is -accelerated by application of a bias potential to a one or more pairs -of atoms in the system. This command can be used to run both global -and local hyperdyamics. In global HD a single bond (nearby pair of -atoms) within the system is biased on a given timestep. In local HD -multiple bonds (separated by a sufficient distance) can be biased -simultaneously at each timestep. - -Make next paragraph more HD-specific. - -Both global and local HD are described in "this paper"_#Voter2013 by -Art Voter and collaborators. They are methods for performing -accelerated dynamics that is suitable for infrequent-event systems -that obey first-order kinetics. A good overview of accelerated -dynamics methods for such systems in given in "this review -paper"_#Voter2002prd from the same group. To quote from the paper: -"The dynamical evolution is characterized by vibrational excursions -within a potential basin, punctuated by occasional transitions between -basins." The transition probability is characterized by p(t) = -k*exp(-kt) where k is the rate constant. Running multiple replicas -gives an effective enhancement in the timescale spanned by the -multiple simulations, while waiting for an event to occur. - -How different than PRD. +accelerated by application of a bias potential to one or more pairs of +nearby atoms in the system. This command can be used to run both +global and local hyperdyamics. In global HD a single bond within the +system is biased on each timestep. In local HD multiple bonds +(separated by a sufficient distance) can be biased simultaneously at +each timestep. In the bond-boost hyperdynamics context, a "bond" is +not a covalent bond between a pair of atoms in a molecule. Rather it +is simply a pair of nearby atoms as discussed below. + +Both global and local HD are described in "(Voter2013)"_#Voter2013 by +Art Voter and collaborators. Similar to parallel replica dynamics +(PRD), global and local HD are methods for performing accelerated +dynamics that are suitable for infrequent-event systems that obey +first-order kinetics. A good overview of accelerated dynamics methods +for such systems in given in "(Voter2002)"_#Voter2002hd from the same +group. To quote from the review paper: "The dynamical evolution is +characterized by vibrational excursions within a potential basin, +punctuated by occasional transitions between basins." The transition +probability is characterized by p(t) = k*exp(-kt) where k is the rate +constant. Running multiple replicas gives an effective enhancement in +the timescale spanned by the multiple simulations, while waiting for +an event to occur. + +Both HD and PRD produce a time-accurate trajectory that effectively +extends the timescale over which a system can be simulated, but they +do it differently. HD uses a single replica of the system and +accelerates time by biasing the interaction potential in a manner such +that each timestep is effectively longer. PRD creates Nr replicas of +the system and runs dynamics on each independently with a normal +unbiased potential until an event occurs in one of the replicas. The +time between events is reduced by a factor of Nr replicas. For both +methods, per wall-clock second, more physical time elapses and more +events occur. See the "prd"_prd.html doc page for more info about +PRD. An HD run has several stages, which are repeated each time an "event" -occurs, as defined below. The logic for a HD run is as follows: +occurs, as explained below. The logic for an HD run is as follows: quench -reset list of bonds :pre +create initial list of bonds :pre while (time remains): - run dynamics for Nevery steps + run dynamics for Nevent steps quench check for an event if event occurred: reset list of bonds restore pre-quench state :pre -Explain each of the steps above. Explain what list of bonds is and -how event is detected. +The list of bonds is the list of atom pairs of atoms that are within a +short cutoff distance of each other after the system energy is +minimized (quenched). This list is created and reset by a "fix +hyper/global"_fix_hyper_global.html or "fix +hyper/local"_fix_hyper_local.html command specified as {fix-ID}. At +every dynamics timestep, the same fix selects one of more bonds to +apply a bias potential to. + +IMPORTANT NOTE: The style of fix associated with the specified +{fix-ID} determines whether you are running the global versus local +hyperdynamics algorithm. + +Dynamics (with the bias potential) is run continuously, stopping every +{Nevent} steps to check if a transition event has occurred. The +specified {N} for total steps must be a multiple of {Nevent}. check +is performed by quenching the system and comparing the resulting atom +coordinates to the coordinates from the previous basin. + +A quench is an energy minimization and is performed by whichever +algorithm has been defined by the "min_style"_min_style.html command. +Minimization parameters may be set via the +"min_modify"_min_modify.html command and by the {min} keyword of the +hyper command. The latter are the settings that would be used with +the "minimize"_minimize.html command. Note that typically, you do not +need to perform a highly-converged minimization to detect a transition +event, though you may need to in order to prevent a set of atoms in +the system from relaxing to a saddle point. + +The event check is performed by a compute with the specified +{compute-ID}. Currently there is only one compute that works with the +hyper command, which is the "compute +event/displace"_compute_event_displace.html command. Other +event-checking computes may be added. "Compute +event/displace"_compute_event_displace.html checks whether any atom in +the compute group has moved further than a specified threshold +distance. If so, an "event" has occurred. + +If this happens, the list of bonds is reset, since some bond pairs +are likely now too far apart, and new pairs are likely close enough +to be considered a bond. The pre-quenched state of the +system (coordinates and velocities) is restored, and dynamics continue. + +At the end of the hyper run, a variety of statistics are output to the +screen and logfile. These include info relevant to both global and +local hyperdynamics, such as the number of events and the elapsed +hyper time (acclerated time), And it includes info specific to one or +the other, depending on which style of fix was specified by {fix-ID}. -Explain the specified fix and compute. +:line -Statistics about the number of events, the number of bonds that a bias -potential is applied to, the accumulated hyper time, etc are stored by -the fix and can be output with thermodynamic output. +The optional keywords operate as follows. + +As explained above, the {min} keyword can be used to specify +parameters for the quench. Their meaning is the same +as for the "minimize"_minimize.html command + +The {time} keyword determines how the {N} timesteps argument is +interpreted. If {time} is set to {steps}, then hyperdynamics is run +for {N} timesteps. If the time acceleration provided by the bias +potential is 10x, then that is the same as running a normal (unbiased) +MD simulation for 10N steps. If {time} is set to {clock}, then +hyperdynamics would run for N/10 steps, since that would correspond to +an elapsed real time of N*dt. + +The {dump} keyword can be used to trigger a specific dump command with +the specified {dump-ID} to output a snapshot each time an event is +detected. It can be specified multiple times with different {dump-ID} +values, as in the example above. These snapshots will be for the +quenched state of the system on a timestep that is a multiple of +{Nevent}, i.e. a timestep after the event has occurred. Note that any +dump command in the input script will also output snapshots at +whatever timestep interval it defines via its {N} argument; see the +"dump"_dump.html command for details. This means if you only want a +particular dump to output snapshots when events are detected, you +should specify its {N} as a value larger than the length of the +hyperdynamics run. + +As in the code logic above, the bond list is normally only reset when +an event occurs. The {rebond} keyword will force a reset of the bond +list every {Nrebond} steps, even if an event has not occurred. +{Nrebond} must be a multiple of {Nevent}. This can be useful to check +if more frequent resets alter event statistics, perhaps because the +parameters chosen for defining what is a bond and what is an event are +producing bad dynamics in the presence of the bias potential. :line [Restrictions:] This command can only be used if LAMMPS was built with the REPLICA -package. See the "Making LAMMPS"_Section_start.html#start_3 section -for more info on packages. - -NOTE: is this true? -This command cannot be used when any fixes are defined that keep track -of elapsed time to perform time-dependent operations. Examples -include the "ave" fixes such as "fix ave/chunk"_fix_ave_chunk.html. -Also "fix dt/reset"_fix_dt_reset.html and "fix -deposit"_fix_deposit.html. +package. See the "Build package"_Build_package.html doc +page for more info. [Related commands:] "fix hyper/global"_fix_hyper_global.html, "fix hyper/local"_fix_hyper_local.html, "compute -event/displace"_compute_event_displace.html +event/displace"_compute_event_displace.html, "prd"_prd.html [Default:] -- GitLab From 56598fcd0bcd59a5d40328c6414e27da40b75c23 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 11 Oct 2018 08:29:25 -0600 Subject: [PATCH 084/362] changes to prd command doc page --- doc/src/prd.txt | 50 +++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/doc/src/prd.txt b/doc/src/prd.txt index f71f285336..43c0d309c8 100644 --- a/doc/src/prd.txt +++ b/doc/src/prd.txt @@ -48,11 +48,12 @@ replicas of a system. One or more replicas can be used. The total number of steps {N} to run can be interpreted in one of two ways; see discussion of the {time} keyword below. -PRD is described in "this paper"_#Voter1998 by Art Voter. It is a method -for performing accelerated dynamics that is suitable for -infrequent-event systems that obey first-order kinetics. A good -overview of accelerated dynamics methods for such systems in given in -"this review paper"_#Voter2002prd from the same group. To quote from the +PRD is described in "(Voter1998)"_#Voter1998 by Art Voter. Similar to +global or local hyperdynamics (HD), PRD is a method for performing +accelerated dynamics that is suitable for infrequent-event systems +that obey first-order kinetics. A good overview of accelerated +dynamics methods for such systems in given in this review paper +"(Voter2002)"_#Voter2002prd from Art's group. To quote from the paper: "The dynamical evolution is characterized by vibrational excursions within a potential basin, punctuated by occasional transitions between basins." The transition probability is @@ -61,15 +62,27 @@ Running multiple replicas gives an effective enhancement in the timescale spanned by the multiple simulations, while waiting for an event to occur. -Each replica runs on a partition of one or more processors. Processor -partitions are defined at run-time using the "-partition command-line -switch"_Run_options.html. Note that if you have MPI installed, you -can run a multi-replica simulation with more replicas (partitions) -than you have physical processors, e.g you can run a 10-replica -simulation on one or two processors. However for PRD, this makes -little sense, since running a replica on virtual instead of physical -processors,offers no effective parallel speed-up in searching for -infrequent events. See the "Howto replica"_Howto_replica.html doc +Both PRD and HD produce a time-accurate trajectory that effectively +extends the timescale over which a system can be simulated, but they +do it differently. PRD creates Nr replicas of the system and runs +dynamics on each independently with a normal unbiased potential until +an event occurs in one of the replicas. The time between events is +reduced by a factor of Nr replicas. HD uses a single replica of the +system and accelerates time by biasing the interaction potential in a +manner such that each timestep is effectively longer. For both +methods, per wall-clock second, more physical time elapses and more +events occur. See the "hyper"_hyper.html doc page for more info about +HD. + +In PRD, each replica runs on a partition of one or more processors. +Processor partitions are defined at run-time using the "-partition +command-line switch"_Run_options.html. Note that if you have MPI +installed, you can run a multi-replica simulation with more replicas +(partitions) than you have physical processors, e.g you can run a +10-replica simulation on one or two processors. However for PRD, this +makes little sense, since running a replica on virtual instead of +physical processors,offers no effective parallel speed-up in searching +for infrequent events. See the "Howto replica"_Howto_replica.html doc page for further discussion. When a PRD simulation is performed, it is assumed that each replica is @@ -78,8 +91,8 @@ I.e. the simulation domain, the number of atoms, the interaction potentials, etc should be the same for every replica. A PRD run has several stages, which are repeated each time an "event" -occurs in one of the replicas, as defined below. The logic for a PRD -run is as follows: +occurs in one of the replicas, as explained below. The logic for a +PRD run is as follows: while (time remains): dephase for n_dephase*t_dephase steps @@ -129,7 +142,8 @@ Minimization parameters may be set via the PRD command. The latter are the settings that would be used with the "minimize"_minimize.html command. Note that typically, you do not need to perform a highly-converged minimization to detect a transition -event. +event, though you may need to in order to prevent a set of atoms in +the system from relaxing to a saddle point. The event check is performed by a compute with the specified {compute-ID}. Currently there is only one compute that works with the @@ -307,7 +321,7 @@ deposit"_fix_deposit.html. "min_modify"_min_modify.html, "min_style"_min_style.html, "run_style"_run_style.html, "minimize"_minimize.html, "velocity"_velocity.html, "temper"_temper.html, "neb"_neb.html, -"tad"_tad.html +"tad"_tad.html, "hyper"_hyper.html [Default:] -- GitLab From 4a6f088c0bb63c98776c5bc5cb3590073efe954d Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 11 Oct 2018 11:25:19 -0600 Subject: [PATCH 085/362] updates to hyper doc pages --- doc/src/fix_hyper_global.txt | 160 +++++++++++++++++++++-------------- doc/src/fix_hyper_local.txt | 143 ++++++++++++++++++++++--------- 2 files changed, 196 insertions(+), 107 deletions(-) diff --git a/doc/src/fix_hyper_global.txt b/doc/src/fix_hyper_global.txt index 5893f392d3..cd66f5585d 100644 --- a/doc/src/fix_hyper_global.txt +++ b/doc/src/fix_hyper_global.txt @@ -33,9 +33,9 @@ dynamics of the system in a manner that effectively accelerates time. This is in contrast to the "fix hyper/local"_fix_hyper_local.html command, which can be user to perform a local hyperdynamics (LHD) simulation, by adding a local bias potential to multiple pairs of -atoms at each timestep. GHD can speed-up a small simulation with up -to a few 100 atoms. For larger systems, LHD is needed to achieve good -speed-ups. +atoms at each timestep. GHD can time accelerate a small simulation +with up to a few 100 atoms. For larger systems, LHD is needed to +achieve good time acceleration. For a system that undergoes rare transition events, where one or more atoms move over an energy barrier to a new potential energy basin, the @@ -43,23 +43,24 @@ effect of the bias potential is to induce more rapid transitions. This can lead to a dramatic speed-up in the rate at which events occurs, without altering their relative frequencies, thus leading to an overall increase in the elapsed real time of the simulation as -compared to simulating for the same number of timesteps with normal -MD. See the "hyper"_hyper.html doc page for a more general discussion -of hyperdynamics and citations that explain both GHD and LHD. - -The equations and logic used by this fix to perform GHD are as -follows. This follows the description of GHD given in -"(Voter2013)"_#Voter2013ghd. The bond-boost form of a bias potential -for GHD is due to Miron and Fichthorn as described in -"(Miron)"_#Mironghd. Here we use a simplified version of bond-boost -GHD where a single bond is biased at any one timestep. - -Bonds are defined between every pair of I,J atoms whose R0ij distance +compared to running for the same number of timesteps with normal MD. +See the "hyper"_hyper.html doc page for a more general discussion of +hyperdynamics and citations that explain both GHD and LHD. + +The equations and logic used by this fix to perform GHD follow the +description given in "(Voter2013)"_#Voter2013ghd. The bond-boost form +of a bias potential for HD is due to Miron and Fichthorn as described +in "(Miron)"_#Mironghd. In LAMMPS we use a simplified version of +bond-boost GHD where a single bond in the system is biased at any one +timestep. + +Bonds are defined between each pair of I,J atoms whose R0ij distance is less than {cutbond}, when the system is in a quenched state (minimum) energy. Note that these are not "bonds" in a covalent sense. A bond is simply any pair of atoms that meet the distance -criterion. {Cutbond} is an argument to this fix; it is discussed more -below. +criterion. {Cutbond} is an argument to this fix; it is discussed +below. A bond is only formed if one or both of the I.J atoms are in +the specified group. The current strain of bond IJ (when running dynamics) is defined as @@ -74,16 +75,16 @@ Vij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < qfactor = 0 otherwise :pre where the prefactor {Vmax} and the cutoff {qfactor} are arguments to -this fix; they are discussed more below. This functional form is an +this fix; they are discussed below. This functional form is an inverse parabola centered at 0.0 with height Vmax and which goes to 0.0 at +/- qfactor. Let Emax = the maximum of abs(Eij) for all IJ bonds in the system on a given timestep. On that step, Vij is added as a bias potential to -only the two atoms IJ in the bond with strain Emax, call it Vij(max). -Note that Vij(max) will be 0.0 if Emax >= qfactor on that timestep. -Also note that Vij(max) is added to the normal interatomic potential -that is computed between all atoms in the system. +only the single bond with strain Emax, call it Vij(max). Note that +Vij(max) will be 0.0 if Emax >= qfactor on that timestep. Also note +that Vij(max) is added to the normal interatomic potential that is +computed between all atoms in the system at every step. The derivative of Vij(max) with respect to the position of each atom in the Emax bond gives a force Fij(max) acting on the bond as @@ -91,19 +92,21 @@ in the Emax bond gives a force Fij(max) acting on the bond as Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor^2 for abs(Eij) < qfactor = 0 otherwise :pre -which can be decomposed into an equal and opposite force acting (only) -on the two I,J atoms in the Emax bond. +which can be decomposed into an equal and opposite force acting on +only the two I,J atoms in the Emax bond. -The boost factor in time for the system is given each timestep I by +The time boost factor for the system is given each timestep I by Bi = exp(beta * Vij(max)) :pre where beta = 1/kTequil, and {Tequil} is the temperature of the system and an arguement to this fix. Note that Bi >= 1 at every step. -NOTE: Must use langevin set to Tequil also. LAMMPS does not -check that you do this. -as maintained by a thermostat for constant NVT dynamics. +NOTE: To run GHD, the input script must also use the "fix +langevin"_fix_langevin.html command to thermostat the atoms at the +same {Tequil} as specified by this fix, so that the system is running +constant-temperature (NVT) dynamics. LAMMPS does not check that this +is done. The elapsed system time t_hyper for a GHD simulation running for {N} timesteps is simply @@ -114,34 +117,59 @@ where dt is the timestep size defined by the "timestep"_timestep.html command. The effective time acceleration due to GHD is thus t_hyper / N*dt, where the denominator is elapsed time for a normal MD run. -Note that in global hyperdynamics, the boost factor varies from -timestep to timestep. Likewise, which bond has Emax strain and thus -which pair of atoms the bias potential is added to, will also vary -from timestep to timestep. +Note that in GHD, the boost factor varies from timestep to timestep. +Likewise, which bond has Emax strain and thus which pair of atoms the +bias potential is added to, will also vary from timestep to timestep. +This in contrast to local hyperdynamics (LHD) where the boost factor +is an input parameter; see the "fix hyper/local"_fix_hyper_local.html +doc page for details. :line +Here is additional information on the input parameters for GHD. + The {cutbond} argument is the cutoff distance for defining bonds -between pairs of nearby atoms. A pair of atoms in their equilibrium, -minimum-energy config, which are a distance Rij < cutbond, are defined -as a bonded pair. This should normally be roughly ~25% larger than -the nearest-neighbor distance in a crystalline lattice. +between pairs of nearby atoms. A pair of I,J atoms in their +equilibrium, minimum-energy configuration, which are separated by a +distance Rij < {cutbond}, are flagged as a bonded pair. Setting +{cubond} to be ~25% larger than the nearest-neighbor distance in a +crystalline lattice is a typical choice for solids, so that bonds +exist only between nearest neighbor pairs. The {qfactor} argument is the limiting strain at which the bias -potential goes to 0.0. +potential goes to 0.0. It is dimensionless, so a value of 0.3 means a +bond distance can be up to 30% larger or 30% smaller than the +equilibrium (quenched) R0ij distance and the two atoms in the bond +could still experience a non-zero bias force. If {qfactor} is set too large, then transitions from one energy basin to another are affected because the bias potneial is non-zero at the -transitions. If {qfactor} is set too small than little boost is -achieved because some the Eij strain of some bond is (nearly) always -exceeding {qfactor). Note - -The {Vmax} argument is the prefactor on the bias potential. -It should be set to a value smaller than +transition state (e.g. saddle point). If {qfactor} is set too small +than little boost is achieved because the Eij strain of some bond in +the system will (nearly) always exceed {qfactor). A value of 0.3 for +{qfactor} is typically a reasonable value. + +The {Vmax} argument is the prefactor on the bias potential. It should +be set to a value less than the smallest barrier height for an event +to occur. Otherwise the applied bias potential may be large enough +(when added to the interatomic potential) to produce a local energy +basin with a maxima in the center. This can produce artificial energy +minima in the same basin that trap an atom. Or if {Vmax} is even +larger, it may induce an atom(s) to rapidly transition to another +energy basin. Both cases are "bad dynamics" which violate the +assumptions of GHD that guarantee an accelerated time-accurate +trajectory of the system. + +The {Tequil} argument is the temperature at which the system is +simulated; see the comment above about the "fix +langevin"_fix_langevin.html thermostatting. It is also part of the +beta term in the exponential factor that determines how much boost is +achieved as a function of the bias potential. + +In general, the lower the value of {Tequil} and the higher the value +of {Vmax}, the more boost will be achieved by the GHD algorithm. -The {Tequil} argument is part of the beta term in the exponential -factor that determines how much boost is achieved as a function of the -bias potential. +:line [Restart, fix_modify, output, run start/stop, minimize info:] @@ -152,7 +180,7 @@ The "fix_modify"_fix_modify.html {energy} option is supported by this fix to add the energy of the bias potential to the the system's potential energy as part of "thermodynamic output"_thermo_style.html. -This fix computes a global scalar and global vector of length 10, +This fix computes a global scalar and global vector of length 11, which can be accessed by various "output commands"_Section_howto.html#howto_15. The scalar is the magnitude of the bias potential (energy units) applied on the current timestep. @@ -164,30 +192,30 @@ The vector stores the following quantities: 4 = ID of second atom in the max-strain bond 5 = average # of bonds/atom on this step :ul -6 = fraction of steps with bias = 0.0 during this run +6 = fraction of timesteps with bias = 0.0 during this run 7 = max drift distance of any atom during this run (distance units) 8 = max bond length during this run (distance units) :ul -9 = cummulative hyper time since fix created (time units) -10 = cummulative count of event timesteps since fix created -11 = cummulative count of atoms in events since fix created :ul +9 = cummulative hyper time since fix was defined (time units) +10 = cummulative count of event timesteps since fix was defined +11 = cummulative count of atoms in events since fix was defined :ul -The first 5 quantities are for the current timestep. The quantities -6-8 are for the current run. The quantities 9-11 are cummulative -across multiple runs (since the fix was defined in the input script). +The first 5 quantities are for the current timestep. Quantities 6-8 +are for the current hyper run. Quantities 9-11 are cummulative across +multiple runs (since the fix was defined in the input script). For value 10, events are checked for by the "hyper"_hyper.html command -once every {Nevent} timesteps. This value is the count of the number -of timesteps on which one (or more) events was detected. It is NOT -the number of distinct events, since more than one physical event may +once every {Nevent} timesteps. This value is the count of those +timesteps on which one (or more) events was detected. It is NOT the +number of distinct events, since more than one physical event may occur in the same {Nevent} time window. For value 11, each time the "hyper"_hyper.html command checks for an -event, the event compute it uses will flag zero or more atoms as +event, it invokes a compute to flag zero or more atoms as participating in an event. E.g. atoms that have displaced more than -some distance from the previous quench state. This value is the count -of the number of atoms participating in any of the events that were -found. +some distance from the previous quench state. Value 11 is the +cummulative count of the number of atoms participating in any of the +events that were found. The scalar and vector values calculated by this fix are all "intensive". @@ -199,8 +227,8 @@ minimization"_minimize.html. [Restrictions:] This command can only be used if LAMMPS was built with the REPLICA -package. See the "Build package"_Build_package.html doc -page for more info. +package. See the "Build package"_Build_package.html doc page for more +info. [Related commands:] @@ -208,9 +236,11 @@ page for more info. [Default:] None -:link(Voter2013) +:line + +:link(Voter2013ghd) [(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139, 144110 (2013). -:link(Miron) +:link(Mironghd) [(Miron)] R. A. Miron and K. A. Fichthorn, J Chem Phys, 119, 6210 (2003). diff --git a/doc/src/fix_hyper_local.txt b/doc/src/fix_hyper_local.txt index ef98637fa5..6585167f3b 100644 --- a/doc/src/fix_hyper_local.txt +++ b/doc/src/fix_hyper_local.txt @@ -18,7 +18,7 @@ cutbond = max distance at which a pair of atoms is considered bonded (distance u qfactor = max strain at which bias potential goes to 0.0 (unitless) :l Vmax = estimated height of bias potential (energy units) :l Tequil = equilibration temperature (temperature units) :l -Dcut = min distance between boosted bonds (distance units) :l +Dcut = minimum distance between boosted bonds (distance units) :l alpha = boostostat relaxation time (time units) :l boost = desired time boost factor (unitless) :l zero or more keyword/value pairs may be appended :l @@ -40,66 +40,115 @@ fix 1 all hyper/local 1.0 0.3 0.8 300.0 :pre [Description:] This fix is meant to be used with the "hyper"_hyper.html command to -perform a bond-boost hyperdynamics simulation. The role of this fix -is a select a multiple pairs of atoms within the system at each -timestep to add a local bias potential to, which will alter their -dynamics. This is in contrast to the "fix -hyper/global"_fix_hyper_global.html command, which adds a global bias -potential to a single pair of atoms at each timestep. +perform a bond-boost local hyperdynamics (LHD) simulation. The role +of this fix is to a select multiple pairs of atoms in the system at +each timestep to add a local bias potential to, which will alter the +dynamics of the system in a manner that effectively accelerates time. +This is in contrast to the "fix hyper/global"_fix_hyper_global.html +command, which can be user to perform a global hyperdynamics (GHD) +simulation, by adding a global bias potential to a single pair of +atoms at each timestep. GHD can time accelerate a small simulation +with up to a few 100 atoms. For larger systems, LHD is needed to +achieve good time acceleration. For a system that undergoes rare transition events, where one or more -atoms move across an energy barrier to a new potential energy basin, -the effect of the bias potential is to induce more rapid transitions. +atoms move over an energy barrier to a new potential energy basin, the +effect of the bias potential is to induce more rapid transitions. This can lead to a dramatic speed-up in the rate at which events occurs, without altering their relative frequencies, thus leading to -an overall dramatic speed-up in the effective wall-clock time of the -simulation. +an overall increase in the elapsed real time of the simulation as +compared to running for the same number of timesteps with normal MD. +See the "hyper"_hyper.html doc page for a more general discussion of +hyperdynamics and citations that explain both GHD and LHD. -Cite various papers. +The equations and logic used by this fix to perform LHD follow the +description given in "(Voter2013)"_#Voter2013lhd. The bond-boost form +of a bias potential for HD is due to Miron and Fichthorn as described +in "(Miron)"_#Mironlhd. -The current strain of a bond IJ is defined as +To understand this description, you should first read the description +of the GHD algorithm on the "fix hyper/global"_fix_hyper/global.html +doc page. This description of LHD builds on the GHD description. -Eij = (Rij - R0ij) / R0ij +The definition of bonds, Eij, and Emax are the same for GHD and LHD. +The formula for Vij(max) and Fij(max) are also the same except for a +pre-factor Cij, explained below. -Emax = is the max of the absolute value of Eij for all IJ bonds. +The bias energy Vij applied to a bond IJ with maximum strain is -dVij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < q - = 0 otherwise +Vij(max) = Cij * Vmax * (1 - (Eij/q)^2) for abs(Eij) < qfactor + = 0 otherwise :pre -Delta Vbias = minimum of dVij for all IJ bonds +The derivative of Vij(max) with respect to the position of each atom +in the IJ bond gives a force Fij(max) acting on the bond as -The boost factor B = exp(beta * Delta Vbias) -for a single timestep. +Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor^2 for abs(Eij) < qfactor + = 0 otherwise :pre -Thus the accumulated hypertime is simply +which can be decomposed into an equal and opposite force acting on +only the two I,J atoms in the IJ bond. + +The key difference is that in GHD this bias energy and force is added +(on a particular timestep) to only one bond (pair of atoms) in the +system, the bond which has maximum strain Emax. + +In LHD, the bias energy and force -t_hyper = Sum (i = 1 to Nsteps) Bi * dt NOTE: Add eqs for boostostat and boost coeff. Explain how many bonds are boosted simultaneously and how to choose boost factor and initial Vmax. -The {cutbond} argument is the cutoff distance for defining bonds -between pairs of nearby atoms. A pair of atoms in their equilibrium, -minimum-energy config, which are a distance Rij < cutbond, are -defined as a bonded pair. -The {qfactor} argument is the limiting strain at which -the Vbias (the bias potential) goes to 0.0. -If qfactor is too big, then transitions are affected b/c -the bias energy is non-zero at the transitions. If it is -too small than not must boost is achieved for a large system -with many bonds (some bonds Eij always exceeds qfactor). +:line -The {Vmax} argument is the initial prefactor on the bias potential. -Should be chosen as estimate of final. Will be adjusted by -boost cooeficient +Here is additional information on the input parameters for GHD. -The {Tequil} argument is part of the beta term in the -exponential factor that determines how much boost is +The {cutbond} argument is the cutoff distance for defining bonds +between pairs of nearby atoms. A pair of I,J atoms in their +equilibrium, minimum-energy configuration, which are separated by a +distance Rij < {cutbond}, are flagged as a bonded pair. Setting +{cubond} to be ~25% larger than the nearest-neighbor distance in a +crystalline lattice is a typical choice for solids, so that bonds +exist only between nearest neighbor pairs. + +The {qfactor} argument is the limiting strain at which the bias +potential goes to 0.0. It is dimensionless, so a value of 0.3 means a +bond distance can be up to 30% larger or 30% smaller than the +equilibrium (quenched) R0ij distance and the two atoms in the bond +could still experience a non-zero bias force. + +If {qfactor} is set too large, then transitions from one energy basin +to another are affected because the bias potneial is non-zero at the +transition state (e.g. saddle point). If {qfactor} is set too small +than little boost can be achieved because the Eij strain of some bond in +the system will (nearly) always exceed {qfactor). A value of 0.3 for +{qfactor} is typically a reasonable value. + +What about requested boost + + +The {Vmax} argument is the prefactor on the bias potential. It should +be set to a value less than the smallest barrier height for an event +to occur. Otherwise the applied bias potential may be large enough +(when added to the interatomic potential) to produce a local energy +basin with a maxima in the center. This can produce artificial energy +minima in the same basin that trap an atom. Or if {Vmax} is even +larger, it may induce an atom(s) to rapidly transition to another +energy basin. Both cases are "bad dynamics" which violate the +assumptions of GHD that guarantee an accelerated time-accurate +trajectory of the system. + +The {Tequil} argument is the temperature at which the system is +simulated; see the comment above about the "fix +langevin"_fix_langevin.html thermostatting. It is also part of the +beta term in the exponential factor that determines how much boost is achieved as a function of the bias potential. +In general, the lower the value of {Tequil} and the higher the value +of {Vmax}, the more boost will be achieved by the GHD algorithm. + The {Dcut} argument is the distance required between two bonds for them to be selected as both being boosted. The distance is between the center points of each bond. Actually between any pair of atoms in @@ -122,6 +171,8 @@ bonded atoms may become unphysically large, leading to bad dynamics. If chosen too small, the hyperdynamics run may be inefficient in the sense that events take a long time to occur. +:line + [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart @@ -165,11 +216,10 @@ is run (distance units) 22 = cummulative count of atoms in events since fix created 23 = cummulative # of new bonds since fix created :ul -The first quantities (1-5) are for the current timestep. The -quantities 6-19 are for the current hyper run. They are reset each -time a new hyper run is performed. The quantities 20-23 are -cummulative across multiple hyper runs, They are only set to initial -values once, when this fix is defined in the input script. +The first quantities (1-5) are for the current timestep. Quantities +6-19 are for the current hyper run. They are reset each time a new +hyper run is performed. Quantities 20-23 are cummulative across +multiple runs (since the fix was defined in the input script). For value 6, the numerator is a count of all biased bonds on every timestep whose bias value = 0.0. The denominator is the count of all @@ -198,3 +248,12 @@ LAMMPS"_Section_start.html#start_3 section for more info. [Default:] None +:line + +:link(Voter2013lhd) +[(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139, +144110 (2013). + +:link(Mironlhd) +[(Miron)] R. A. Miron and K. A. Fichthorn, J Chem Phys, 119, 6210 (2003). + -- GitLab From 0c8ce199af59a490459f7a7f5e89fa6e2659199c Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 11 Oct 2018 16:32:30 -0600 Subject: [PATCH 086/362] more updates to hyper docs --- doc/src/fix_hyper_global.txt | 77 +++++---- doc/src/fix_hyper_local.txt | 294 +++++++++++++++++++++++++---------- 2 files changed, 258 insertions(+), 113 deletions(-) diff --git a/doc/src/fix_hyper_global.txt b/doc/src/fix_hyper_global.txt index cd66f5585d..655e2655db 100644 --- a/doc/src/fix_hyper_global.txt +++ b/doc/src/fix_hyper_global.txt @@ -47,12 +47,12 @@ compared to running for the same number of timesteps with normal MD. See the "hyper"_hyper.html doc page for a more general discussion of hyperdynamics and citations that explain both GHD and LHD. -The equations and logic used by this fix to perform GHD follow the -description given in "(Voter2013)"_#Voter2013ghd. The bond-boost form -of a bias potential for HD is due to Miron and Fichthorn as described -in "(Miron)"_#Mironghd. In LAMMPS we use a simplified version of -bond-boost GHD where a single bond in the system is biased at any one -timestep. +The equations and logic used by this fix and described here to perform +GHD follow the description given in "(Voter2013)"_#Voter2013ghd. The +bond-boost form of a bias potential for HD is due to Miron and +Fichthorn as described in "(Miron)"_#Mironghd. In LAMMPS we use a +simplified version of bond-boost GHD where a single bond in the system +is biased at any one timestep. Bonds are defined between each pair of I,J atoms whose R0ij distance is less than {cutbond}, when the system is in a quenched state @@ -87,7 +87,7 @@ that Vij(max) is added to the normal interatomic potential that is computed between all atoms in the system at every step. The derivative of Vij(max) with respect to the position of each atom -in the Emax bond gives a force Fij(max) acting on the bond as +in the Emax bond gives a bias force Fij(max) acting on the bond as Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor^2 for abs(Eij) < qfactor = 0 otherwise :pre @@ -100,7 +100,7 @@ The time boost factor for the system is given each timestep I by Bi = exp(beta * Vij(max)) :pre where beta = 1/kTequil, and {Tequil} is the temperature of the system -and an arguement to this fix. Note that Bi >= 1 at every step. +and an argument to this fix. Note that Bi >= 1 at every step. NOTE: To run GHD, the input script must also use the "fix langevin"_fix_langevin.html command to thermostat the atoms at the @@ -108,21 +108,21 @@ same {Tequil} as specified by this fix, so that the system is running constant-temperature (NVT) dynamics. LAMMPS does not check that this is done. -The elapsed system time t_hyper for a GHD simulation running for {N} +The elapsed time t_hyper for a GHD simulation running for {N} timesteps is simply t_hyper = Sum (i = 1 to N) Bi * dt :pre where dt is the timestep size defined by the "timestep"_timestep.html command. The effective time acceleration due to GHD is thus t_hyper / -N*dt, where the denominator is elapsed time for a normal MD run. +N*dt, where N*dt is elapsed time for a normal MD run of N timesteps. Note that in GHD, the boost factor varies from timestep to timestep. Likewise, which bond has Emax strain and thus which pair of atoms the bias potential is added to, will also vary from timestep to timestep. -This in contrast to local hyperdynamics (LHD) where the boost factor -is an input parameter; see the "fix hyper/local"_fix_hyper_local.html -doc page for details. +This is in contrast to local hyperdynamics (LHD) where the boost +factor is an input parameter; see the "fix +hyper/local"_fix_hyper_local.html doc page for details. :line @@ -143,22 +143,32 @@ equilibrium (quenched) R0ij distance and the two atoms in the bond could still experience a non-zero bias force. If {qfactor} is set too large, then transitions from one energy basin -to another are affected because the bias potneial is non-zero at the +to another are affected because the bias potential is non-zero at the transition state (e.g. saddle point). If {qfactor} is set too small than little boost is achieved because the Eij strain of some bond in the system will (nearly) always exceed {qfactor). A value of 0.3 for {qfactor} is typically a reasonable value. -The {Vmax} argument is the prefactor on the bias potential. It should -be set to a value less than the smallest barrier height for an event -to occur. Otherwise the applied bias potential may be large enough -(when added to the interatomic potential) to produce a local energy -basin with a maxima in the center. This can produce artificial energy -minima in the same basin that trap an atom. Or if {Vmax} is even -larger, it may induce an atom(s) to rapidly transition to another -energy basin. Both cases are "bad dynamics" which violate the -assumptions of GHD that guarantee an accelerated time-accurate -trajectory of the system. +The {Vmax} argument is the prefactor on the bias potential. Ideally, +tt should be set to a value slightly less than the smallest barrier +height for an event to occur. Otherwise the applied bias potential +may be large enough (when added to the interatomic potential) to +produce a local energy basin with a maxima in the center. This can +produce artificial energy minima in the same basin that trap an atom. +Or if {Vmax} is even larger, it may induce an atom(s) to rapidly +transition to another energy basin. Both cases are "bad dynamics" +which violate the assumptions of GHD that guarantee an accelerated +time-accurate trajectory of the system. + +Note that if {Vmax} is set too small, the GHD simulation will run +correctly. There will just be fewer events because the hyper time +(t_hyper equation above) will be shorter. + +NOTE: If you have no physical intuition as to the smallest barrier +height in your system, a reasonable strategy to determine the largest +{Vmax} you can use for an LHD model, is to run a sequence of +simulations with smaller and smaller {Vmax} values, until the event +rate does not change. The {Tequil} argument is the temperature at which the system is simulated; see the comment above about the "fix @@ -167,7 +177,7 @@ beta term in the exponential factor that determines how much boost is achieved as a function of the bias potential. In general, the lower the value of {Tequil} and the higher the value -of {Vmax}, the more boost will be achieved by the GHD algorithm. +of {Vmax}, the more boost will be achievable by the GHD algorithm. :line @@ -204,18 +214,23 @@ The first 5 quantities are for the current timestep. Quantities 6-8 are for the current hyper run. Quantities 9-11 are cummulative across multiple runs (since the fix was defined in the input script). +For value 7, drift is the distance an atom moves between timesteps +when the bond list is reset, i.e. between events. Atoms involved in +an event will typically move the greatest distance since others are +typically oscillating around their lattice site. + For value 10, events are checked for by the "hyper"_hyper.html command once every {Nevent} timesteps. This value is the count of those timesteps on which one (or more) events was detected. It is NOT the -number of distinct events, since more than one physical event may -occur in the same {Nevent} time window. +number of distinct events, since more than one event may occur in the +same {Nevent} time window. For value 11, each time the "hyper"_hyper.html command checks for an event, it invokes a compute to flag zero or more atoms as -participating in an event. E.g. atoms that have displaced more than -some distance from the previous quench state. Value 11 is the -cummulative count of the number of atoms participating in any of the -events that were found. +participating in one or more events. E.g. atoms that have displaced +more than some distance from the previous quench state. Value 11 is +the cummulative count of the number of atoms participating in any of +the events that were found. The scalar and vector values calculated by this fix are all "intensive". diff --git a/doc/src/fix_hyper_local.txt b/doc/src/fix_hyper_local.txt index 6585167f3b..e4cbc42c7f 100644 --- a/doc/src/fix_hyper_local.txt +++ b/doc/src/fix_hyper_local.txt @@ -10,7 +10,7 @@ fix hyper/local command :h3 [Syntax:] -fix ID group-ID hyper/local cutbond qfactor Vmax Tequil Dcut alpha boost :pre +fix ID group-ID hyper/local cutbond qfactor Vmax Tequil Dcut alpha Btarget :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l hyper/local = style name of this fix command :l @@ -20,14 +20,9 @@ Vmax = estimated height of bias potential (energy units) :l Tequil = equilibration temperature (temperature units) :l Dcut = minimum distance between boosted bonds (distance units) :l alpha = boostostat relaxation time (time units) :l -boost = desired time boost factor (unitless) :l +Btarget = desired time boost factor (unitless) :l zero or more keyword/value pairs may be appended :l -keyword = {histo} or {lost} or {check/bias} or {check/coeff} - {histo} values = Nevery Nbin delta Nout - Nevery = histogram bond bias coefficients every this many timesteps - Nbin = # of histogram bins - delta = width of each histogram bin - Nout = output histogram counts every this many timesteps +keyword = {lost} or {check/bias} or {check/coeff} {lostbond} value = error/warn/ignore {check/bias} values = Nevery error/warn/ignore {check/coeff} values = Nevery error/warn/ignore :pre @@ -61,26 +56,26 @@ compared to running for the same number of timesteps with normal MD. See the "hyper"_hyper.html doc page for a more general discussion of hyperdynamics and citations that explain both GHD and LHD. -The equations and logic used by this fix to perform LHD follow the -description given in "(Voter2013)"_#Voter2013lhd. The bond-boost form -of a bias potential for HD is due to Miron and Fichthorn as described -in "(Miron)"_#Mironlhd. +The equations and logic used by this fix and described here to perform +LHD follow the description given in "(Voter2013)"_#Voter2013lhd. The +bond-boost form of a bias potential for HD is due to Miron and +Fichthorn as described in "(Miron)"_#Mironlhd. To understand this description, you should first read the description of the GHD algorithm on the "fix hyper/global"_fix_hyper/global.html doc page. This description of LHD builds on the GHD description. The definition of bonds, Eij, and Emax are the same for GHD and LHD. -The formula for Vij(max) and Fij(max) are also the same except for a +The formulas for Vij(max) and Fij(max) are also the same except for a pre-factor Cij, explained below. The bias energy Vij applied to a bond IJ with maximum strain is Vij(max) = Cij * Vmax * (1 - (Eij/q)^2) for abs(Eij) < qfactor - = 0 otherwise :pre + = 0 otherwise :pre The derivative of Vij(max) with respect to the position of each atom -in the IJ bond gives a force Fij(max) acting on the bond as +in the IJ bond gives a bias force Fij(max) acting on the bond as Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor^2 for abs(Eij) < qfactor = 0 otherwise :pre @@ -88,22 +83,76 @@ Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor^2 for abs(Eij) < qfacto which can be decomposed into an equal and opposite force acting on only the two I,J atoms in the IJ bond. -The key difference is that in GHD this bias energy and force is added -(on a particular timestep) to only one bond (pair of atoms) in the -system, the bond which has maximum strain Emax. - -In LHD, the bias energy and force - - -NOTE: Add eqs for boostostat and boost coeff. -Explain how many bonds are boosted simultaneously -and how to choose boost factor and initial Vmax. - - +The key difference is that in GHD a bias energy and force is added (on +a particular timestep) to only one bond (pair of atoms) in the system, +which is the bond with maximum strain Emax. + +In LHD, a bias energy and force can be added to multiple bonds +separated by the specified {Dcut} distance or more. A bond IJ is +biased if it is the maximum strain bond within its local +"neighborhood", which is defined as the bond IJ plus any neighbor +bonds within a distance {Dcut} from IJ. The "distance" between bond +IJ and bond KL is the minimum distance between any of the IK, IL, JK, +JL pairs of atoms. + +For a large system, multiple bonds will typically meet this +requirement, and thus a bias potential Vij(max) will be applied to +many bonds on the same timestep. + +In LHD, all bonds store a Cij prefactor which appears in the Vij(max) +and Fij(max) equations above. Note that the Cij factor scales the +strength of the bias energy and forces whenever bond IJ is the maximum +strain bond in its neighborhood. + +Cij is initialized to 1.0 when a bond between the I,J atoms is first +defined. The specified {Btarget} factor is then used to adjust the +Cij prefactors for each bond every timestep in the following manner. + +An instantaneous boost factor Bij is computed each timestep +for each bond, as + +Bij = exp(beta * Vkl(max)) :pre + +where Vkl(max) is the bias energy of the maxstrain bond KL within bond +IJ's neighborhood, beta = 1/kTequil, and {Tequil} is the temperature +of the system and an argument to this fix. + +NOTE: To run LHD, the input script must also use the "fix +langevin"_fix_langevin.html command to thermostat the atoms at the +same {Tequil} as specified by this fix, so that the system is running +constant-temperature (NVT) dynamics. LAMMPS does not check that this +is done. + +Note that if IJ = KL, then bond IJ is a biased bond on that timestep, +otherwise it is not. But regardless, the boost factor Bij can be +thought of an estimate of time boost currently being applied within a +local region centered on bond IJ. For LHD, we want this to be the +specified {Btarget} value everywhere in the simulation domain. + +To accomplish this, if Bij < Btarget, the Cij prefactor for bond IJ is +incremented on the current timestep by an amount proportional to the +inverse of the specified {alpha} and the difference (Bij - Btarget). +Conversely if Bij > Btarget, Cij is decremented by the same amount. +This procedure is termed "boostostatting" in +"(Voter2013)"_#Voter2013lhd. It drives all of the individual Cij to +values such that when Vij{max} is applied as a bias to bond IJ, the +resulting boost factor Bij will be close to {Btarget} on average. +Thus the LHD time acceleration factor for the overall system is +effectively {Btarget}. + +Note that in LHD, the boost factor {Btarget} is specified by the user. +This is in contrast to global hyperdynamics (GHD) where the boost +factor varies each timestep and is computed as a function of {Vmax}, +Emax, and {Tequil}; see the "fix hyper/global"_fix_hyper_global.html +doc page for details. :line -Here is additional information on the input parameters for GHD. +Here is additional information on the input parameters for LHD. + +Note that the {cutbond}, {qfactor}, and {Tequil} arguments have the +same meaning as for GHD. The {Vmax} argument is slightly different. +The {Dcut}, {alpha}, and {Btarget} parameters are unique to LHD. The {cutbond} argument is the cutoff distance for defining bonds between pairs of nearby atoms. A pair of I,J atoms in their @@ -120,56 +169,92 @@ equilibrium (quenched) R0ij distance and the two atoms in the bond could still experience a non-zero bias force. If {qfactor} is set too large, then transitions from one energy basin -to another are affected because the bias potneial is non-zero at the +to another are affected because the bias potential is non-zero at the transition state (e.g. saddle point). If {qfactor} is set too small than little boost can be achieved because the Eij strain of some bond in the system will (nearly) always exceed {qfactor). A value of 0.3 for {qfactor} is typically a reasonable value. -What about requested boost - - -The {Vmax} argument is the prefactor on the bias potential. It should -be set to a value less than the smallest barrier height for an event -to occur. Otherwise the applied bias potential may be large enough -(when added to the interatomic potential) to produce a local energy -basin with a maxima in the center. This can produce artificial energy -minima in the same basin that trap an atom. Or if {Vmax} is even -larger, it may induce an atom(s) to rapidly transition to another -energy basin. Both cases are "bad dynamics" which violate the -assumptions of GHD that guarantee an accelerated time-accurate -trajectory of the system. +The {Vmax} argument is a fixed prefactor on the bias potential. There +is a also a dynamic prefactor Cij, driven by the choice of {Btarget} +as discussed above. The product of these should be a value less than +the smallest barrier height for an event to occur. Otherwise the +applied bias potential may be large enough (when added to the +interatomic potential) to produce a local energy basin with a maxima +in the center. This can produce artificial energy minima in the same +basin that trap an atom. Or if Cij*{Vmax} is even larger, it may +induce an atom(s) to rapidly transition to another energy basin. Both +cases are "bad dynamics" which violate the assumptions of LHD that +guarantee an accelerated time-accurate trajectory of the system. + +NOTE: It may seem that {Vmax} can be set to any value, and Cij will +compensate to reduce the overall prefactor if necessary. However the +Cij are initialized to 1.0 and the boostostatting procedure typically +operates slowly enough that there can be a time period of bad dynamics +if {Vmax} is set too large. A better strategy is to set {Vmax} to the +smallest barrier height for an event (the same as for GHD), so that +the Cij remain near unity. The {Tequil} argument is the temperature at which the system is simulated; see the comment above about the "fix langevin"_fix_langevin.html thermostatting. It is also part of the beta term in the exponential factor that determines how much boost is -achieved as a function of the bias potential. - -In general, the lower the value of {Tequil} and the higher the value -of {Vmax}, the more boost will be achieved by the GHD algorithm. - -The {Dcut} argument is the distance required between two bonds for -them to be selected as both being boosted. The distance is between -the center points of each bond. Actually between any pair of atoms in -either bond. - -The {alpha} argument is a pre-factor on the update equation -for each atom's boostostat: - -NOTE: give equation above - -Note that the units for {alpha} are in time units, similar -to other thermostat or barostat damping parameters - -The {boost} argument is the desired boost factor (e.g. 100x) -that all the atoms in the system will experience. - -NOTE: explain how to choose good value for this. If this parameter is -chosen to be too large, then the bias potential applied to pairs of -bonded atoms may become unphysically large, leading to bad dynamics. -If chosen too small, the hyperdynamics run may be inefficient in the -sense that events take a long time to occur. +achieved as a function of the bias potential. See the discussion of +the {Btarget} argument below. + +As discussed above, the {Dcut} argument is the distance required +between two locally maxstrain bonds for them to both be selected as +biased bonds on the same timestep. Computationally, the larger {Dcut} +is, the more work (computation and communication) must be done each +timestep within the LHD algorithm. And the fewer bonds can be +simultaneously biased, which may mean the specified {Btarget} time +acceleration cannot be achieved. + +Physically {Dcut} should be a long enough distance that biasing two +pairs of atoms that close together will not influence the dynamics of +each pair. E.g. something like 2x the cutoff of the interatomic +potential. In practice a {Dcut} value of ~10 Angstroms seems to work +well for many solid-state systems. + +As described above the {alpha} argument is a pre-factor in the +boostostat update equation for each bond's Cij prefactor. {Alpha} is +specified in time units, similar to other thermostat or barostat +damping parameters. It is roughly the physical time it will take the +boostostat to adjust a Cij value from a too high (or too low) value to +a correct one. An {alpha} setting of a few ps is typically good for +solid-state systems. Note that the {alpha} argument here is the +inverse of the alpha parameter discussed in +"(Voter2013)"_#Voter2013lhd. + +The {Btarget} argument is the desired time boost factor (a value > 1) +that all the atoms in the system will experience. The elapsed time +t_hyper for an LHD simulation running for {N} timesteps is simply + +t_hyper = Btarget * N*dt :pre + +where dt is the timestep size defined by the "timestep"_timestep.html +command. The effective time acceleration due to LHD is thus t_hyper / +N*dt = Btarget, where N*dt is elapsed time for a normal MD run +of N timesteps. + +You cannot choose an arbitrarily large setting for {Btarget}. The +maximum value you should choose is + +Btarget = exp(beta * Vsmall) :pre + +where Vsmall is the smallest event barrier height in your system, beta += 1/kTequil, and {Tequil} is the specified temperature of the system +(both by this fix and the Langevin thermostat). + +Note that if {Btarget} is set smaller than this, the LHD simulation +will run correctly. There will just be fewer events because the hyper +time (t_hyper equation above) will be shorter. + +NOTE: If you have no physical intuition as to the smallest barrier +height in your system, a reasonable strategy to determine the largest +{Btarget} you can use for an LHD model, is to run a sequence of +simulations with smaller and smaller {Btarget} values, until the event +rate does not change. :line @@ -189,21 +274,20 @@ the bias potential (energy units) applied on the current timestep, summed over all biased bonds. The vector stores the following quantities: -1 = # of boosted bonds on this step -2 = max strain of any bond on this step (unitless) -3 = average bias potential for all bonds on this step (energy units) -4 = average bonds/atom on this step -5 = average neighbor bonds/bond on this step :ul +1 = # of biased bonds on this step +2 = max strain Eij of any bond on this step (unitless) +3 = average bias potential for all biased bonds on this step (energy units) +4 = average # of bonds/atom on this step +5 = average neighbor bonds/bond on this step within {Dcut} :ul 6 = fraction of steps and bonds with no bias during this run 7 = max drift distance of any atom during this run (distance units) 8 = max bond length during this run (distance units) -9 = average # of boosted bonds/step during this run -10 = average bias potential for all bonds during this run (energy units) -11 = max bias potential for any bond during this run (energy units) -12 = min bias potential for any bond during this run (energy units) -13 = max distance from my box of any ghost atom with maxstrain < qfactor during th -is run (distance units) +9 = average # of biased bonds/step during this run +10 = average bias potential for all biased bonds during this run (energy units) +11 = max bias potential for any biased bond during this run (energy units) +12 = min bias potential for any biased bond during this run (energy units) +13 = max distance from my sub-box of any ghost atom with maxstrain < qfactor during this run (distance units) 14 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units) 15 = count of ghost neighbor atoms not found on reneighbor steps during this run 16 = count of lost bond partners during this run @@ -222,13 +306,60 @@ hyper run is performed. Quantities 20-23 are cummulative across multiple runs (since the fix was defined in the input script). For value 6, the numerator is a count of all biased bonds on every -timestep whose bias value = 0.0. The denominator is the count of all -biased bonds on all timesteps. +timestep whose bias energy = 0.0 due to Eij >= {qfactor}. The +denominator is the count of all biased bonds on all timesteps. + +For value 7, drift is the distance an atom moves between timesteps +when the bond list is reset, i.e. between events. Atoms involved in +an event will typically move the greatest distance since others are +typically oscillating around their lattice site. For values 13 and 14, the maxstrain of a ghost atom is the maxstrain of any bond it is part of, and it is checked for ghost atoms within the bond neighbor cutoff. +Values 15-19 are mostly useful for debugging and diagnositc purposes. + +For values 15-17, it is possible that a ghost atom owned by another +processor will move far enough (e.g. as part of an event-in-progress) +that it will no longer be within the communication cutoff distance for +acquiring ghost atoms. Likewise it may be a ghost atom bond partner +that cannot be found because it has moved too far. These values count +those occurrences. Because they typically involve atoms that are part +of events, they do not usually indicate bad dynamics. Value 16 is the +average bias coefficient for bonds where a partner atom was lost. + +For value 18, no two bonds should be biased if they are within a +{Dcut} distance of each other. This value should be zero, indicating +that no pair of bonds "overlap", meaning they are closer than {Dcut} +from each other. + +For value 19, the same bias coefficient is stored by both atoms in an +IJ bond. This value should be zero, indicating that for all bonds, +each atom in the bond stores the a bias coefficient with the same +value. + +Value 20 is simply the specified {boost} factor times the number of +timestep times the timestep size. + +For value 21, events are checked for by the "hyper"_hyper.html command +once every {Nevent} timesteps. This value is the count of those +timesteps on which one (or more) events was detected. It is NOT the +number of distinct events, since more than one event may occur in the +same {Nevent} time window. + +For value 22, each time the "hyper"_hyper.html command checks for an +event, it invokes a compute to flag zero or more atoms as +participating in one or more events. E.g. atoms that have displaced +more than some distance from the previous quench state. Value 22 is +the cummulative count of the number of atoms participating in any of +the events that were found. + +Value 23 tallies the number of new bonds created by the bond reset +operation. Bonds between a specific I,J pair of atoms may persist for +the entire hyperdynamics simulation if neither I or J are involved in +an event. + The scalar and vector values calculated by this fix are all "intensive". @@ -256,4 +387,3 @@ LAMMPS"_Section_start.html#start_3 section for more info. :link(Mironlhd) [(Miron)] R. A. Miron and K. A. Fichthorn, J Chem Phys, 119, 6210 (2003). - -- GitLab From d7a479d2f6642d41e0e2c8b2f752d5fec272d07f Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Thu, 11 Oct 2018 16:51:01 -0600 Subject: [PATCH 087/362] hyper example dir --- examples/README | 1 + examples/hyper/adatoms.list.37K | 184 +++++ examples/hyper/in.hyper.global | 99 +++ examples/hyper/in.hyper.local | 119 +++ examples/hyper/ptvoterlammps.eam | 1206 ++++++++++++++++++++++++++++++ 5 files changed, 1609 insertions(+) create mode 100644 examples/hyper/adatoms.list.37K create mode 100644 examples/hyper/in.hyper.global create mode 100644 examples/hyper/in.hyper.local create mode 100644 examples/hyper/ptvoterlammps.eam diff --git a/examples/README b/examples/README index 3c9c299819..e03dacec82 100644 --- a/examples/README +++ b/examples/README @@ -78,6 +78,7 @@ friction: frictional contact of spherical asperities between 2d surfaces gcmc: Grand Canonical Monte Carlo (GCMC) via the fix gcmc command granregion: use of fix wall/region/gran as boundary on granular particles hugoniostat: Hugoniostat shock dynamics +hyper: global and local hyperdynamics of diffusion on Pt surface indent: spherical indenter into a 2d solid kim: use of potentials in Knowledge Base for Interatomic Models (KIM) latte: use of LATTE density-functional tight-binding quantum code diff --git a/examples/hyper/adatoms.list.37K b/examples/hyper/adatoms.list.37K new file mode 100644 index 0000000000..520570186c --- /dev/null +++ b/examples/hyper/adatoms.list.37K @@ -0,0 +1,184 @@ +create_atoms 1 single 27.5 9.5 4 +create_atoms 1 single 16 9 4 +create_atoms 1 single 10 12 4 +create_atoms 1 single 31 44 4 +create_atoms 1 single 13 17 4 +create_atoms 1 single 8.5 28.5 4 +create_atoms 1 single 23 26 4 +create_atoms 1 single 38 27 4 +create_atoms 1 single 37.5 4.5 4 +create_atoms 1 single 41.5 47.5 4 +create_atoms 1 single 20.5 37.5 4 +create_atoms 1 single 5 8 4 +create_atoms 1 single 2.5 16.5 4 +create_atoms 1 single 38.5 45.5 4 +create_atoms 1 single 9 0 4 +create_atoms 1 single 39 32 4 +create_atoms 1 single 45.5 11.5 4 +create_atoms 1 single 40 0 4 +create_atoms 1 single 44.5 2.5 4 +create_atoms 1 single 4.5 44.5 4 +create_atoms 1 single 24.5 13.5 4 +create_atoms 1 single 47.5 23.5 4 +create_atoms 1 single 1 20 4 +create_atoms 1 single 38.5 31.5 4 +create_atoms 1 single 12.5 12.5 4 +create_atoms 1 single 2 27 4 +create_atoms 1 single 21 5 4 +create_atoms 1 single 47 12 4 +create_atoms 1 single 32.5 46.5 4 +create_atoms 1 single 9.5 40.5 4 +create_atoms 1 single 8.5 2.5 4 +create_atoms 1 single 41.5 22.5 4 +create_atoms 1 single 29 11 4 +create_atoms 1 single 3.5 3.5 4 +create_atoms 1 single 5 21 4 +create_atoms 1 single 46.5 31.5 4 +create_atoms 1 single 35 46 4 +create_atoms 1 single 40.5 41.5 4 +create_atoms 1 single 10 22 4 +create_atoms 1 single 43.5 14.5 4 +create_atoms 1 single 42 42 4 +create_atoms 1 single 4 26 4 +create_atoms 1 single 19 34 4 +create_atoms 1 single 33 9 4 +create_atoms 1 single 0.5 45.5 4 +create_atoms 1 single 30.5 32.5 4 +create_atoms 1 single 25.5 5.5 4 +create_atoms 1 single 47.5 39.5 4 +create_atoms 1 single 15 13 4 +create_atoms 1 single 21 21 4 +create_atoms 1 single 14 28 4 +create_atoms 1 single 9 34 4 +create_atoms 1 single 7 38 4 +create_atoms 1 single 11 35 4 +create_atoms 1 single 20.5 45.5 4 +create_atoms 1 single 30.5 31.5 4 +create_atoms 1 single 32.5 2.5 4 +create_atoms 1 single 21.5 3.5 4 +create_atoms 1 single 23 12 4 +create_atoms 1 single 4.5 33.5 4 +create_atoms 1 single 46 43 4 +create_atoms 1 single 42.5 45.5 4 +create_atoms 1 single 4.5 10.5 4 +create_atoms 1 single 33.5 15.5 4 +create_atoms 1 single 24 5 4 +create_atoms 1 single 13 16 4 +create_atoms 1 single 16.5 23.5 4 +create_atoms 1 single 45.5 28.5 4 +create_atoms 1 single 44.5 5.5 4 +create_atoms 1 single 27.5 46.5 4 +create_atoms 1 single 44.5 12.5 4 +create_atoms 1 single 12 41 4 +create_atoms 1 single 6 4 4 +create_atoms 1 single 31.5 10.5 4 +create_atoms 1 single 1 44 4 +create_atoms 1 single 31 4 4 +create_atoms 1 single 21 33 4 +create_atoms 1 single 3 33 4 +create_atoms 1 single 15 10 4 +create_atoms 1 single 28.5 22.5 4 +create_atoms 1 single 43 1 4 +create_atoms 1 single 3.5 0.5 4 +create_atoms 1 single 41 37 4 +create_atoms 1 single 18.5 43.5 4 +create_atoms 1 single 17 27 4 +create_atoms 1 single 3 5 4 +create_atoms 1 single 18.5 23.5 4 +create_atoms 1 single 31.5 14.5 4 +create_atoms 1 single 41 31 4 +create_atoms 1 single 22 3 4 +create_atoms 1 single 14.5 40.5 4 +create_atoms 1 single 9 38 4 +create_atoms 1 single 36 42 4 +create_atoms 1 single 33 22 4 +create_atoms 1 single 15.5 47.5 4 +create_atoms 1 single 3 0 4 +create_atoms 1 single 25.5 27.5 4 +create_atoms 1 single 2.5 28.5 4 +create_atoms 1 single 29.5 28.5 4 +create_atoms 1 single 44.5 18.5 4 +create_atoms 1 single 26 40 4 +create_atoms 1 single 41 27 4 +create_atoms 1 single 39.5 5.5 4 +create_atoms 1 single 3 38 4 +create_atoms 1 single 35 29 4 +create_atoms 1 single 11 19 4 +create_atoms 1 single 18 1 4 +create_atoms 1 single 39.5 40.5 4 +create_atoms 1 single 46 17 4 +create_atoms 1 single 1.5 23.5 4 +create_atoms 1 single 28.5 23.5 4 +create_atoms 1 single 10 28 4 +create_atoms 1 single 19 47 4 +create_atoms 1 single 10.5 16.5 4 +create_atoms 1 single 38 45 4 +create_atoms 1 single 42.5 41.5 4 +create_atoms 1 single 47.5 42.5 4 +create_atoms 1 single 38 7 4 +create_atoms 1 single 10 44 4 +create_atoms 1 single 29.5 27.5 4 +create_atoms 1 single 45 30 4 +create_atoms 1 single 3 9 4 +create_atoms 1 single 8.5 35.5 4 +create_atoms 1 single 24 44 4 +create_atoms 1 single 47 4 4 +create_atoms 1 single 7.5 8.5 4 +create_atoms 1 single 32.5 41.5 4 +create_atoms 1 single 0.5 34.5 4 +create_atoms 1 single 11 8 4 +create_atoms 1 single 2 40 4 +create_atoms 1 single 25 24 4 +create_atoms 1 single 47.5 6.5 4 +create_atoms 1 single 39.5 28.5 4 +create_atoms 1 single 17 21 4 +create_atoms 1 single 32 43 4 +create_atoms 1 single 16.5 29.5 4 +create_atoms 1 single 34 34 4 +create_atoms 1 single 11.5 3.5 4 +create_atoms 1 single 39 22 4 +create_atoms 1 single 24.5 36.5 4 +create_atoms 1 single 33 31 4 +create_atoms 1 single 35.5 35.5 4 +create_atoms 1 single 14.5 34.5 4 +create_atoms 1 single 34 28 4 +create_atoms 1 single 37 41 4 +create_atoms 1 single 33 46 4 +create_atoms 1 single 27.5 28.5 4 +create_atoms 1 single 40.5 22.5 4 +create_atoms 1 single 27.5 1.5 4 +create_atoms 1 single 12 2 4 +create_atoms 1 single 36 43 4 +create_atoms 1 single 28.5 9.5 4 +create_atoms 1 single 20.5 25.5 4 +create_atoms 1 single 3 3 4 +create_atoms 1 single 38 33 4 +create_atoms 1 single 3 20 4 +create_atoms 1 single 35 11 4 +create_atoms 1 single 5 25 4 +create_atoms 1 single 36.5 6.5 4 +create_atoms 1 single 19.5 24.5 4 +create_atoms 1 single 27 41 4 +create_atoms 1 single 39.5 11.5 4 +create_atoms 1 single 21.5 2.5 4 +create_atoms 1 single 46.5 15.5 4 +create_atoms 1 single 13 24 4 +create_atoms 1 single 11 37 4 +create_atoms 1 single 11.5 31.5 4 +create_atoms 1 single 47 0 4 +create_atoms 1 single 25.5 17.5 4 +create_atoms 1 single 32 11 4 +create_atoms 1 single 8 17 4 +create_atoms 1 single 27.5 12.5 4 +create_atoms 1 single 25 7 4 +create_atoms 1 single 25.5 37.5 4 +create_atoms 1 single 12 15 4 +create_atoms 1 single 1 7 4 +create_atoms 1 single 18.5 47.5 4 +create_atoms 1 single 5 38 4 +create_atoms 1 single 42 19 4 +create_atoms 1 single 30.5 7.5 4 +create_atoms 1 single 42.5 7.5 4 +create_atoms 1 single 26.5 18.5 4 +create_atoms 1 single 18.5 1.5 4 +create_atoms 1 single 41.5 10.5 4 diff --git a/examples/hyper/in.hyper.global b/examples/hyper/in.hyper.global new file mode 100644 index 0000000000..8d770a1afb --- /dev/null +++ b/examples/hyper/in.hyper.global @@ -0,0 +1,99 @@ +# 3d EAM surface for global HD + +# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 +# hop event on (100) surface is same distance +# exchange event is 2 atoms moving same distance + +variable Tequil index 800.0 +variable Vmax index 0.3 +variable qfactor index 0.3 +variable cutbond index 3.2 +variable cutevent index 1.1 +variable steps index 1000 +variable zoom index 1.8 + +units metal +atom_style atomic +atom_modify map array +boundary p p p + +lattice fcc 3.92 +region box block 0 6 0 6 0 4 +create_box 3 box +create_atoms 1 box + +mass * 1.0 + +change_box all z final -0.1 5.0 boundary p p f +create_atoms 2 single 3.5 3.5 4 + +# define frozen substrate and mobile atoms + +group adatom type 2 +region base block INF INF INF INF 0 1.8 +set region base type 3 +group base type 3 +group mobile type 1 2 + +# pair style + +pair_style eam/alloy +pair_coeff * * ptvoterlammps.eam Pt Pt Pt + +neighbor 0.5 bin +neigh_modify every 1 delay 5 check yes + +fix 1 mobile nve +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 4879387 zero yes + +timestep 0.005 + +compute tmobile mobile temp + +thermo 100 +thermo_modify temp tmobile + +# thermal equilibration + +run 1000 +reset_timestep 0 + +# pin base so will not move during quenches + +fix freeze base setforce 0.0 0.0 0.0 + +# event detection + +compute event all event/displace ${cutevent} + +# hyper/global + +fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil} + +# thermo output + +thermo_style custom step temp pe f_HG & + f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] & + f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] + +thermo_modify lost ignore +thermo_modify temp tmobile + +thermo 100 + +# dump output options + +region substrate block INF INF INF INF 1.8 3.8 +region adatoms block INF INF INF INF 3.8 INF +variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) + +dump 1 all custom 10000000 dump.* id type x y z +dump_modify 1 pad 6 + +dump 5 all image 10000000 static.*.ppm v_acolor type & + zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump_modify 5 pad 9 amap 1 3 sa 1 3 blue red green + +# run + +hyper ${steps} 100 HG event min 1.0e-6 1.0e-6 100 100 dump 1 dump 5 diff --git a/examples/hyper/in.hyper.local b/examples/hyper/in.hyper.local new file mode 100644 index 0000000000..02635e634f --- /dev/null +++ b/examples/hyper/in.hyper.local @@ -0,0 +1,119 @@ +# 3d EAM surface for local HD + +# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92 +# hop event on (100) surface is same distance +# exchange event is 2 atoms moving same distance + +variable Tequil index 800.0 +variable Vmax index 0.3 +variable qfactor index 0.3 +variable cutbond index 3.2 +variable Dcut index 10.0 +variable cutevent index 1.1 +variable alpha index 200.0 +variable boost index 100.0 +variable ghostcut index 12.0 +variable steps index 1000 +variable nx index 1 +variable ny index 1 +variable zoom index 1.8 +variable seed index 59830932 +variable tol index 1.0e-15 +variable add index 184 + +units metal +atom_style atomic +atom_modify map array +boundary p p p +comm_modify cutoff ${ghostcut} + +lattice fcc 3.92 +region box block 0 6 0 6 0 4 +create_box 2 box +create_atoms 1 box + +mass * 1.0 + +change_box all z final -0.1 5.0 boundary p p f + +# replicate in xy + +replicate ${nx} ${ny} 1 + +# add adatoms + +include adatoms.list.${add} + +# define frozen substrate and mobile atoms + +region base block INF INF INF INF 0 1.8 +set region base type 2 +group base type 2 +group mobile type 1 + +# pair style + +pair_style eam/alloy +pair_coeff * * ptvoterlammps.eam Pt Pt + +neighbor 0.5 bin +neigh_modify every 1 delay 5 check yes + +fix 1 mobile nve +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes + +timestep 0.005 + +compute tmobile mobile temp + +thermo 100 +thermo_modify temp tmobile + +# thermal equilibration + +run 1000 +reset_timestep 0 + +# pin base so will not move during quenches + +fix freeze base setforce 0.0 0.0 0.0 + +# event detection + +compute event all event/displace ${cutevent} + +# hyper/local + +fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} & + ${Dcut} ${alpha} ${boost} + +# thermo output + +thermo_style custom step temp pe f_HL & + f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] & + f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] & + f_HL[14] f_HL[15] f_HL[16] f_HL[17] + +thermo_modify lost ignore +thermo_modify temp tmobile + +thermo 100 + +# dump + +write_dump all custom dump.initial id type x y z + +variable Dhop equal 0.1 +variable check atom "c_dsp[4] > v_Dhop" +compute dsp all displace/atom refresh check + +dump 1 all custom 1000000000 dump.* id type x y z +dump_modify 1 pad 6 thresh c_dsp[4] > ${Dhop} refresh c_dsp + +dump 5 all image 10000000 static.*.ppm v_acolor type & + zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 +dump_modify 5 pad 6 amap 1 3 sa 1 3 blue red green + +# run + +hyper ${steps} 100 HL event min ${tol} ${tol} 1000 1000 dump 1 diff --git a/examples/hyper/ptvoterlammps.eam b/examples/hyper/ptvoterlammps.eam new file mode 100644 index 0000000000..780f76c0da --- /dev/null +++ b/examples/hyper/ptvoterlammps.eam @@ -0,0 +1,1206 @@ +lammps potential file (eam alloy format) generated from Voter potential +lammps potential file (eam alloy format) generated from Voter potential +lammps potential file (eam alloy format) generated from Voter potential + 1 Pt + 2000 4.4701153864882436E-04 2000 2.7893112429014507E-03 5.5758331745599996E+00 + 78 195.100000 3.9200000000E+00 fcc + 0.0000000000000000E+00 -9.3726378237257005E-02 -1.4662876812087147E-01 -1.9347407019915208E-01 -2.3636618878752805E-01 + -2.7644724047124986E-01 -3.1435333587770409E-01 -3.5048959265680196E-01 -3.8513634620198733E-01 -4.1849879865649925E-01 + -4.5073342521979493E-01 -4.8196329692534651E-01 -5.1228758935937202E-01 -5.4178787113806126E-01 -5.7053231810654348E-01 + -5.9857943522197787E-01 -6.2597854370043704E-01 -6.5277186883419602E-01 -6.7899694123453103E-01 -7.0468682804639060E-01 + -7.2987087311243415E-01 -7.5457527088636300E-01 -7.7882352856138171E-01 -8.0263687477682044E-01 -8.2603453431614704E-01 + -8.4903405777178687E-01 -8.7165002801416214E-01 -8.9385220540647714E-01 -9.1561604805012164E-01 -9.3696265603603790E-01 + -9.5791522083198610E-01 -9.7849204352602093E-01 -9.9870983002189262E-01 -1.0185836829573178E+00 -1.0381272638272998E+00 + -1.0573529357206635E+00 -1.0762720270513424E+00 -1.0948948965179912E+00 -1.1132310942413695E+00 -1.1312893591364621E+00 + -1.1490778953611478E+00 -1.1666042948848379E+00 -1.1838755886047883E+00 -1.2008983345443256E+00 -1.2176788724342509E+00 + -1.2342229130270710E+00 -1.2505358671573346E+00 -1.2666228433654478E+00 -1.2824887273263106E+00 -1.2981380914574538E+00 + -1.3135752421307874E+00 -1.3288043328425232E+00 -1.3438292731518049E+00 -1.3586538134484907E+00 -1.3732814919179874E+00 + -1.3877156903481436E+00 -1.4019596852675269E+00 -1.4160165195411898E+00 -1.4298892184938752E+00 -1.4435806245935652E+00 + -1.4570934731127474E+00 -1.4704303157498337E+00 -1.4835937210293269E+00 -1.4965861005543943E+00 -1.5094097763634138E+00 + -1.5220668946168692E+00 -1.5345597844428560E+00 -1.5468904285465384E+00 -1.5590608388617706E+00 -1.5710730238967714E+00 + -1.5829287935901264E+00 -1.5946300239478917E+00 -1.6061784714959348E+00 -1.6175758053312737E+00 -1.6288236803495129E+00 + -1.6399237328328120E+00 -1.6508775658053350E+00 -1.6616864780633585E+00 -1.6723521585867245E+00 -1.6828759298168119E+00 + -1.6932591433668713E+00 -1.7035031469456148E+00 -1.7136092934673612E+00 -1.7235788404216321E+00 -1.7334129925527970E+00 + -1.7431129415525604E+00 -1.7526799118629599E+00 -1.7621150270123394E+00 -1.7714193942410039E+00 -1.7805940695781992E+00 + -1.7896401398323107E+00 -1.7985586680727887E+00 -1.8073505775972039E+00 -1.8160168872573059E+00 -1.8245585986617567E+00 + -1.8329766123728359E+00 -1.8412717487946277E+00 -1.8494450474624169E+00 -1.8574973381639921E+00 -1.8654294796444515E+00 + -1.8732423326875589E+00 -1.8809365751665037E+00 -1.8885131534009967E+00 -1.8959729006831632E+00 -1.9033163629652998E+00 + -1.9105445288673943E+00 -1.9176579902949664E+00 -1.9246574529251665E+00 -1.9315437280249601E+00 -1.9383174597431190E+00 + -1.9449793109628810E+00 -1.9515299486677091E+00 -1.9579700404692790E+00 -1.9643002552280855E+00 -1.9705211806583449E+00 + -1.9766333617405571E+00 -1.9826376027386075E+00 -1.9885342577894889E+00 -1.9943241758785375E+00 -2.0000076194536822E+00 + -2.0055854487720719E+00 -2.0110580672478360E+00 -2.0164259310925137E+00 -2.0216897348658018E+00 -2.0268499570172342E+00 + -2.0319070992763257E+00 -2.0368616660436532E+00 -2.0417141625193631E+00 -2.0464650972204006E+00 -2.0511149792156478E+00 + -2.0556626254641155E+00 -2.0600932062541855E+00 -2.0644029110757671E+00 -2.0685927252091338E+00 -2.0726642405205045E+00 + -2.0766183085015473E+00 -2.0804563084627521E+00 -2.0841789444472600E+00 -2.0877876715975767E+00 -2.0912833087049787E+00 + -2.0946667371754817E+00 -2.0979390461364646E+00 -2.1011011655638017E+00 -2.1041539689908264E+00 -2.1070983231799296E+00 + -2.1099350832445327E+00 -2.1126651052269048E+00 -2.1152891919828996E+00 -2.1178081002315121E+00 -2.1202224086609767E+00 + -2.1225331395390516E+00 -2.1247409727944659E+00 -2.1268464388156634E+00 -2.1288503994083841E+00 -2.1307534549669689E+00 + -2.1325562312248580E+00 -2.1342594040743301E+00 -2.1358635733000813E+00 -2.1373694251012334E+00 -2.1387773840979936E+00 + -2.1400882690849263E+00 -2.1413025681337436E+00 -2.1424205997532089E+00 -2.1434431817712398E+00 -2.1443708051870782E+00 + -2.1452039706239008E+00 -2.1459431731625007E+00 -2.1465889038340724E+00 -2.1471416488460342E+00 -2.1476018892305180E+00 + -2.1479701028306253E+00 -2.1482467654917219E+00 -2.1484323484895125E+00 -2.1485273190235694E+00 -2.1485321403519091E+00 + -2.1484470126563591E+00 -2.1482725478832414E+00 -2.1480092510592486E+00 -2.1476573945273758E+00 -2.1472172776186471E+00 + -2.1466895754411510E+00 -2.1460744063021546E+00 -2.1453723228679569E+00 -2.1445836347777654E+00 -2.1437087028088562E+00 + -2.1427479348394045E+00 -2.1417016141723875E+00 -2.1405702824184050E+00 -2.1393539195776055E+00 -2.1380532461224977E+00 + -2.1366685327320152E+00 -2.1351997870841490E+00 -2.1336477168065300E+00 -2.1320125854350511E+00 -2.1302946140875285E+00 + -2.1284939647118084E+00 -2.1266112022137014E+00 -2.1246465848666309E+00 -2.1226003978007930E+00 -2.1204729315273694E+00 + -2.1182644700383473E+00 -2.1159753039047646E+00 -2.1136057135585435E+00 -2.1111559947046752E+00 -2.1086264260009924E+00 + -2.1060172997588604E+00 -2.1033288899537994E+00 -2.1005614905898651E+00 -2.0977153768416836E+00 -2.0947907756248489E+00 + -2.0917878008182256E+00 -2.0887069013851285E+00 -2.0855483983675080E+00 -2.0823124544060909E+00 -2.0789991822719793E+00 + -2.0756090236745779E+00 -2.0721422672568037E+00 -2.0685988388129202E+00 -2.0649793952896509E+00 -2.0612838733299972E+00 + -2.0575126163591118E+00 -2.0536659818292007E+00 -2.0497438839450974E+00 -2.0457469740596648E+00 -2.0416750125893741E+00 + -2.0375286763573190E+00 -2.0333078083100737E+00 -2.0290129419057399E+00 -2.0246440675858621E+00 -2.0202016369559090E+00 + -2.0156855754611871E+00 -2.0110963702778593E+00 -2.0064341266571577E+00 -2.0016989141897725E+00 -1.9968912606852574E+00 + -1.9920112279851745E+00 -1.9870587421187833E+00 -1.9820344220723491E+00 -1.9769384024112195E+00 -1.9717707649824567E+00 + -1.9665315667050240E+00 -1.9612212607967281E+00 -1.9558400270662160E+00 -1.9503880438033223E+00 -1.9448654878631326E+00 + -1.9392725542582359E+00 -1.9336093325766290E+00 -1.9278760759446676E+00 -1.9220730338277285E+00 -1.9162003844413846E+00 + -1.9102583041383305E+00 -1.9042469924777814E+00 -1.8981666388660647E+00 -1.8920174217314303E+00 -1.8857995289542948E+00 + -1.8795131257938429E+00 -1.8731583274011279E+00 -1.8667353651280862E+00 -1.8602444731266670E+00 -1.8536858396902449E+00 + -1.8470596475781673E+00 -1.8403660873745857E+00 -1.8336053011192051E+00 -1.8267772295273614E+00 -1.8198823541684652E+00 + -1.8129208591254398E+00 -1.8058928763343305E+00 -1.7987983439720816E+00 -1.7916376470504742E+00 -1.7844110874963606E+00 + -1.7771185698738710E+00 -1.7697602401849712E+00 -1.7623366760227746E+00 -1.7548475274913959E+00 -1.7472932291426537E+00 + -1.7396740845471292E+00 -1.7319898389278894E+00 -1.7242412013094410E+00 -1.7164277982551550E+00 -1.7085501828347134E+00 + -1.7006083640294880E+00 -1.6926024734048197E+00 -1.6845328224364085E+00 -1.6763993548439085E+00 -1.6682024481277851E+00 + -1.6599420709883763E+00 -1.6516185230955227E+00 -1.6432318959216066E+00 -1.6347823980820475E+00 -1.6262701056273825E+00 + -1.6176954061756970E+00 -1.6090579833596674E+00 -1.6003585870484209E+00 -1.5915968441967776E+00 -1.5827732529152190E+00 + -1.5738879964921655E+00 -1.5649407514579203E+00 -1.5559323095458162E+00 -1.5468624928865635E+00 -1.5377312590161041E+00 + -1.5285392382898741E+00 -1.5192862957084381E+00 -1.5099723866302082E+00 -1.5005967213739198E+00 -1.4911587331719385E+00 + -1.4816582812824439E+00 -1.4720957140722879E+00 -1.4624713862429182E+00 -1.4527854682386121E+00 -1.4430380792507160E+00 + -1.4332291882010670E+00 -1.4233591939339838E+00 -1.4134283412843427E+00 -1.4034367925165225E+00 -1.3933847216125261E+00 + -1.3832723024089693E+00 -1.3730996761155070E+00 -1.3628669257457069E+00 -1.3525743350816732E+00 -1.3422221243968426E+00 + -1.3318104615196105E+00 -1.3213395166522290E+00 -1.3108094631132874E+00 -1.3002204741555148E+00 -1.2895727231033673E+00 + -1.2788663831419154E+00 -1.2681016277240666E+00 -1.2572786301447159E+00 -1.2463975638205269E+00 -1.2354586020832887E+00 + -1.2244619185519259E+00 -1.2134076866878465E+00 -1.2022960801071922E+00 -1.1911271694252359E+00 -1.1799011168336151E+00 + -1.1686181878604995E+00 -1.1572785561222905E+00 -1.1458823957313820E+00 -1.1344298807335367E+00 -1.1229211853242436E+00 + -1.1113563947673044E+00 -1.0997355078908317E+00 -1.0880588973041296E+00 -1.0763267922468183E+00 -1.0645393559767911E+00 + -1.0526966047430970E+00 -1.0407985722986666E+00 -1.0288456577743961E+00 -1.0168381013642347E+00 -1.0047759306248194E+00 + -9.9265898548758336E-01 -9.8048790851526724E-01 -9.6826279655934266E-01 -9.5598349845928543E-01 -9.4365030366616609E-01 + -9.3126362566484699E-01 -9.1882329657834894E-01 -9.0632944500267687E-01 -8.9378262646714668E-01 -8.8118251874624731E-01 + -8.6852951212633800E-01 -8.5582386666564914E-01 -8.4306536061223991E-01 -8.3025468293365734E-01 -8.1739141480696798E-01 + -8.0447608494390788E-01 -7.9150885377465752E-01 -7.7848947219388465E-01 -7.6541866563585603E-01 -7.5229600174299571E-01 + -7.3912212257148224E-01 -7.2589686467179004E-01 -7.1262055063701923E-01 -6.9929320913134108E-01 -6.8591510649722276E-01 + -6.7248618683331862E-01 -6.5900689854285888E-01 -6.4547697804053650E-01 -6.3189708034172021E-01 -6.1826683526546378E-01 + -6.0458684009462282E-01 -5.9085689942428754E-01 -5.7707737489495647E-01 -5.6324831564153599E-01 -5.4936984719065918E-01 + -5.3544221535350756E-01 -5.2146535035529662E-01 -5.0743967264445500E-01 -4.9336507916396255E-01 -4.7924202909137281E-01 + -4.6507019526361254E-01 -4.5085021401708919E-01 -4.3658183817218754E-01 -4.2226537511572138E-01 -4.0790122197207235E-01 + -3.9348888710768504E-01 -3.7902911057711058E-01 -3.6452190148563079E-01 -3.4996694934863609E-01 -3.3536503801841927E-01 + -3.2071602647173175E-01 -3.0601984413918992E-01 -2.9127702073369299E-01 -2.7648754767100242E-01 -2.6165129895763078E-01 + -2.4676874904049176E-01 -2.3184013284504276E-01 -2.1686516695201799E-01 -2.0184414275263507E-01 -1.8677741304503614E-01 + -1.7166506103517420E-01 -1.5650696008039314E-01 -1.4130335362578991E-01 -1.2605458512786327E-01 -1.1076073962581437E-01 + -9.5421784325569844E-02 -8.0037769568471043E-02 -6.4609086101014526E-02 -4.9135867919925351E-02 -3.3618216095798403E-02 + -1.8056263958055114E-02 -2.4498331768533018E-03 1.3200592339685919E-02 2.8894924586749249E-02 4.4633030655999203E-02 + 6.0414751303124369E-02 7.6239953392470416E-02 9.2108555163040229E-02 1.0802056324675589E-01 1.2397576336762166E-01 + 1.3997389369154420E-01 1.5601484537595034E-01 1.7209852103937251E-01 1.8822479131435854E-01 2.0439349528624218E-01 + 2.2060448901654800E-01 2.3685767571336561E-01 2.5315294999332294E-01 2.6949013147842382E-01 2.8586908164149483E-01 + 3.0228968739624468E-01 3.1875186563100721E-01 3.3525542671650682E-01 3.5180022725879762E-01 3.6838616011493230E-01 + 3.8501312452908165E-01 4.0168095080467575E-01 4.1838948236543605E-01 4.3513862100478418E-01 4.5192826270035608E-01 + 4.6875821812798202E-01 4.8562834483471040E-01 5.0253855896933253E-01 5.1948873614443958E-01 5.3647868524507603E-01 + 5.5350827755155940E-01 5.7057743231721858E-01 5.8768599861706949E-01 6.0483379125370451E-01 6.2202075436250781E-01 + 6.3924690091518499E-01 6.5651197561399777E-01 6.7381573978798859E-01 6.9115813321280439E-01 7.0853900912763812E-01 + 7.2595818116200861E-01 7.4341553974137475E-01 7.6091117634314542E-01 7.7844492852958047E-01 7.9601643067638483E-01 + 8.1362562423852203E-01 8.3127237024222567E-01 8.4895651842572761E-01 8.6667817350834675E-01 8.8443717318919435E-01 + 9.0223310376347066E-01 9.2006587462315603E-01 9.3793549126390219E-01 9.5584208377475821E-01 9.7378511789609046E-01 + 9.9176452406972726E-01 1.0097801622556903E+00 1.0278322047072626E+00 1.0459203271583175E+00 1.0640442555694720E+00 + 1.0822039052743166E+00 1.1003994586468446E+00 1.1186305871875757E+00 1.1368968790245904E+00 1.1551986360515170E+00 + 1.1735357430549394E+00 1.1919076476746078E+00 1.2103144574987208E+00 1.2287563750294439E+00 1.2472327044294611E+00 + 1.2657434116894102E+00 1.2842890603416108E+00 1.3028686512809335E+00 1.3214822950015011E+00 1.3401304168804899E+00 + 1.3588121030478884E+00 1.3775275985022428E+00 1.3962770629841874E+00 1.4150596887332012E+00 1.4338759741729805E+00 + 1.4527255871930560E+00 1.4716081394984446E+00 1.4905240400664848E+00 1.5094725770116466E+00 1.5284540917330347E+00 + 1.5474682483109845E+00 1.5665147816550740E+00 1.5855940621729949E+00 1.6047053781609033E+00 1.6238490538148784E+00 + 1.6430246263651700E+00 1.6622322126105287E+00 1.6814716446866711E+00 1.7007433185388272E+00 1.7200477411777821E+00 + 1.7393846156972781E+00 1.7587539640468350E+00 1.7781554453921806E+00 1.7975891697022677E+00 1.8170546517205248E+00 + 1.8365522715303721E+00 1.8560811469510281E+00 1.8756420823719342E+00 1.8952339849377624E+00 1.9148574649502128E+00 + 1.9345118939421841E+00 1.9541973949102269E+00 1.9739137340310351E+00 1.9936607273823694E+00 2.0134384434407822E+00 + 2.0332463913139565E+00 2.0530849366211910E+00 2.0729533244978335E+00 2.0928520853370305E+00 2.1127803984947091E+00 + 2.1327387807318892E+00 2.1527265895662748E+00 2.1727439402207014E+00 2.1927906947380285E+00 2.2128665502522700E+00 + 2.2329716958331636E+00 2.2531056391662747E+00 2.2732685476091379E+00 2.2934600246049404E+00 2.3136801738277271E+00 + 2.3339285301080688E+00 2.3542055162894790E+00 2.3745104745381691E+00 2.3948434805567067E+00 2.4152044592249351E+00 + 2.4355930656594902E+00 2.4560095487129887E+00 2.4764533684082015E+00 2.4969245658256183E+00 2.5174232171356126E+00 + 2.5379487879669145E+00 2.5585014730425435E+00 2.5790810354832701E+00 2.5996871907418657E+00 2.6203202358822946E+00 + 2.6409795370745628E+00 2.6616652153218512E+00 2.6823773718541233E+00 2.7031153079893557E+00 2.7238793697159962E+00 + 2.7446694373218592E+00 2.7654849781381210E+00 2.7863261744204859E+00 2.8071930887007985E+00 2.8280851589496949E+00 + 2.8490024044822397E+00 2.8699449740201248E+00 2.8909123754755157E+00 2.9119045095198288E+00 2.9329216633817152E+00 + 2.9539633671256524E+00 2.9750294283017151E+00 2.9961197314511963E+00 3.0172347157550141E+00 3.0383735332954402E+00 + 3.0595363131640245E+00 3.0807229522145332E+00 3.1019336159590840E+00 3.1231677593092799E+00 3.1444252781424908E+00 + 3.1657062816137276E+00 3.1870106770394511E+00 3.2083382088171506E+00 3.2296885957356953E+00 3.2510619109216670E+00 + 3.2724581057791657E+00 3.2938771407356970E+00 3.3153185364371800E+00 3.3367823403952981E+00 3.3582684205709765E+00 + 3.3797767826793388E+00 3.4013073809226100E+00 3.4228597882929854E+00 3.4444340439391028E+00 3.4660299267254961E+00 + 3.4876474739113212E+00 3.5092866090972885E+00 3.5309471938205994E+00 3.5526288864523901E+00 3.5743318107821276E+00 + 3.5960555909236533E+00 3.6178003693499021E+00 3.6395658781999010E+00 3.6613522905174625E+00 3.6831592081116140E+00 + 3.7049865235650015E+00 3.7268341857147900E+00 3.7487020048932518E+00 3.7705899603073760E+00 3.7924978630856057E+00 + 3.8144256455443015E+00 3.8363732522912350E+00 3.8583405883275672E+00 3.8803274284018632E+00 3.9023337308378179E+00 + 3.9243592463594541E+00 3.9464040664724505E+00 3.9684678414951149E+00 3.9905507223673160E+00 4.0126523448985330E+00 + 4.0347728156381022E+00 4.0569118535169313E+00 4.0790694767609921E+00 4.1012454834458287E+00 4.1234398298438899E+00 + 4.1456523458155887E+00 4.1678830013175707E+00 4.1901315603727864E+00 4.2123981076334864E+00 4.2346822714171459E+00 + 4.2569842814508112E+00 4.2793036523789416E+00 4.3016406338734914E+00 4.3239947728595816E+00 4.3463662833045413E+00 + 4.3687547793077997E+00 4.3911603552374929E+00 4.4135827764013760E+00 4.4360220279758034E+00 4.4584779480264398E+00 + 4.4809504554260959E+00 4.5034394066770798E+00 4.5259447535273507E+00 4.5484662906777897E+00 4.5710040485352579E+00 + 4.5935577549240767E+00 4.6161274881904228E+00 4.6387129472301920E+00 4.6613142215805841E+00 4.6839310171118367E+00 + 4.7065633951085681E+00 4.7292111171643008E+00 4.7518741689026180E+00 4.7745524045493086E+00 4.7972456826295415E+00 + 4.8199540260440124E+00 4.8426771560303594E+00 4.8654153364317327E+00 4.8881679636507158E+00 4.9109353676786007E+00 + 4.9337170419435958E+00 4.9565132280413238E+00 4.9793235227841510E+00 5.0021480811177392E+00 5.0249865798014417E+00 + 5.0478391551127313E+00 5.0707056201600551E+00 5.0935858915452759E+00 5.1164797858015598E+00 5.1393871589985487E+00 + 5.1623080571754034E+00 5.1852421190762534E+00 5.2081896228459588E+00 5.2311502165250783E+00 5.2541240770684281E+00 + 5.2771106510309664E+00 5.3001102092285661E+00 5.3231223404842520E+00 5.3461472417535001E+00 5.3691846915659411E+00 + 5.3922347311911834E+00 5.4152970213025622E+00 5.4383715419351537E+00 5.4614582086459844E+00 5.4845569478630942E+00 + 5.5076678457857158E+00 5.5307904172453002E+00 5.5539248596376734E+00 5.5770707953058940E+00 5.6002285088674615E+00 + 5.6233976832952628E+00 5.6465782518012109E+00 5.6697699928311209E+00 5.6929729645728129E+00 5.7161871158060018E+00 + 5.7394122852501575E+00 5.7626482598903603E+00 5.7858950212328386E+00 5.8091525961963901E+00 5.8324208821101537E+00 + 5.8556994585175923E+00 5.8789886128933837E+00 5.9022880335845240E+00 5.9255979229557161E+00 5.9489176596202604E+00 + 5.9722476058295708E+00 5.9955875020860514E+00 6.0189373547390703E+00 6.0422967901605871E+00 6.0656660299873382E+00 + 6.0890449158668414E+00 6.1124332312328260E+00 6.1358308744454222E+00 6.1592380171556611E+00 6.1826542300941716E+00 + 6.2060796544689323E+00 6.2295140253289754E+00 6.2529575852384669E+00 6.2764096864441683E+00 6.2998707798745164E+00 + 6.3233404851350414E+00 6.3468187895996930E+00 6.3703054965804968E+00 6.3938008075735180E+00 6.4173042518286385E+00 + 6.4408160006103596E+00 6.4643358901402017E+00 6.4878638299445317E+00 6.5113996219647392E+00 6.5349435679242109E+00 + 6.5584949439390883E+00 6.5820543113279548E+00 6.6056211217587242E+00 6.6291954778591382E+00 6.6527772912990404E+00 + 6.6763664259354494E+00 6.6999627991396542E+00 6.7235663911976102E+00 6.7471770150347465E+00 6.7707946471251832E+00 + 6.7944192643731860E+00 6.8180505982187301E+00 6.8416887565507993E+00 6.8653334830907671E+00 6.8889848449811888E+00 + 6.9126425932957716E+00 6.9363068325644548E+00 6.9599772776424977E+00 6.9836541203695823E+00 7.0073368842610169E+00 + 7.0310259119320984E+00 7.0547207306952870E+00 7.0784215582598708E+00 7.1021280777590112E+00 7.1258404081420794E+00 + 7.1495583185106879E+00 7.1732818625587784E+00 7.1970108626746176E+00 7.2207454007816549E+00 7.2444854309146418E+00 + 7.2682306092284721E+00 7.2919813841105494E+00 7.3157370201396636E+00 7.3394980368737537E+00 7.3632638536021995E+00 + 7.3870347335731870E+00 7.4108103780772634E+00 7.4345908251167474E+00 7.4583759686098858E+00 7.4821657350257231E+00 + 7.5059599989809023E+00 7.5297587278169384E+00 7.5535618084179941E+00 7.5773690726947560E+00 7.6011807263764926E+00 + 7.6249961985945980E+00 7.6488160830215097E+00 7.6726395937346048E+00 7.6964672119532969E+00 7.7202984648144861E+00 + 7.7441335048129512E+00 7.7679721785713145E+00 7.7918143840252263E+00 7.8156601259563256E+00 7.8395091779793091E+00 + 7.8633616489525950E+00 7.8872171505684801E+00 7.9110761506575642E+00 7.9349379025217379E+00 7.9588029197337518E+00 + 7.9826706930210811E+00 8.0065413456454575E+00 8.0304148518347009E+00 8.0542909167104444E+00 8.0781697799844920E+00 + 8.1020510278148450E+00 8.1259348309081076E+00 8.1498209225532197E+00 8.1737094426007193E+00 8.1976001579278730E+00 + 8.2214930501978412E+00 8.2453880274294740E+00 8.2692848718631300E+00 8.2931839337876561E+00 8.3170845655065175E+00 + 8.3409872192351742E+00 8.3648914247895494E+00 8.3887972877339152E+00 8.4127048029783484E+00 8.4366136870275632E+00 + 8.4605241282330557E+00 8.4844357625944262E+00 8.5083487737311483E+00 8.5322628803123344E+00 8.5561782196824847E+00 + 8.5800945547420184E+00 8.6040118026395653E+00 8.6279301240340160E+00 8.6518490154534593E+00 8.6757689707511965E+00 + 8.6996893951015313E+00 8.7236104833863379E+00 8.7475321982360938E+00 8.7714542368197126E+00 8.7953768778165902E+00 + 8.8192996575590321E+00 8.8432228247780778E+00 8.8671461041655864E+00 8.8910695783146405E+00 8.9149930826007733E+00 + 8.9389164509452126E+00 8.9628399743611293E+00 8.9867630576805109E+00 9.0106861650499344E+00 9.0346088250329437E+00 + 9.0585310744476182E+00 9.0824531054343662E+00 9.1063743989039132E+00 9.1302952992988295E+00 9.1542154229516601E+00 + 9.1781349093983540E+00 9.2020536661058188E+00 9.2259714512659823E+00 9.2498885016910037E+00 9.2738043253131242E+00 + 9.2977194058450081E+00 9.3216331880464125E+00 9.3455457235945527E+00 9.3694572838805676E+00 9.3933672450474806E+00 + 9.4172760365992136E+00 9.4411832860082647E+00 9.4650889749002207E+00 9.4889932845443337E+00 9.5128957566809547E+00 + 9.5367966568620997E+00 9.5606956753877874E+00 9.5845929829314773E+00 9.6084883426126204E+00 9.6323815993180535E+00 + 9.6562731650629168E+00 9.6801622784778409E+00 9.7040494168084592E+00 9.7279344048371055E+00 9.7518168578612698E+00 + 9.7756972655772447E+00 9.7995750536870414E+00 9.8234503970684024E+00 9.8473233547104453E+00 9.8711935666041004E+00 + 9.8950612367506601E+00 9.9189259884611758E+00 9.9427881808207648E+00 9.9666474644661651E+00 9.9905036344659877E+00 + 1.0014357202264824E+01 1.0038207480799372E+01 1.0062054691084622E+01 1.0085898869761019E+01 1.0109739662186898E+01 + 1.0133577425656050E+01 1.0157411592722928E+01 1.0181242452192732E+01 1.0205070032759895E+01 1.0228893806484278E+01 + 1.0252714205943379E+01 1.0276530924492912E+01 1.0300343967861075E+01 1.0324153281178305E+01 1.0347958548066551E+01 + 1.0371760323991843E+01 1.0395558000013491E+01 1.0419351473499734E+01 1.0443141269687514E+01 1.0466926715408977E+01 + 1.0490708090490346E+01 1.0514485277828937E+01 1.0538258013530248E+01 1.0562026654097458E+01 1.0585790771200015E+01 + 1.0609550423049955E+01 1.0633305640425879E+01 1.0657056084578578E+01 1.0680802334212579E+01 1.0704543578383859E+01 + 1.0728279979352012E+01 1.0752011964769949E+01 1.0775738836518697E+01 1.0799460905029447E+01 1.0823178061875115E+01 + 1.0846889976266041E+01 1.0870597065900540E+01 1.0894298995749873E+01 1.0917995679350540E+01 1.0941687206157091E+01 + 1.0965373219300238E+01 1.0989054171122483E+01 1.1012729705594728E+01 1.1036399550915537E+01 1.1060064205773816E+01 + 1.1083723032438815E+01 1.1107376250633761E+01 1.1131024119986289E+01 1.1154665986048808E+01 1.1178302125287980E+01 + 1.1201932536310990E+01 1.1225556833508026E+01 1.1249175446501521E+01 1.1272788048716771E+01 1.1296394564302819E+01 + 1.1319995074877289E+01 1.1343589169825929E+01 1.1367177273246208E+01 1.1390759216547343E+01 1.1414334626641180E+01 + 1.1437904014067957E+01 1.1461466887703843E+01 1.1485023009376897E+01 1.1508572973961453E+01 1.1532116197051801E+01 + 1.1555652833720799E+01 1.1579183065173527E+01 1.1602706326971159E+01 1.1626223005000670E+01 1.1649732835216172E+01 + 1.1673235537724677E+01 1.1696731713669102E+01 1.1720220765933313E+01 1.1743702672323703E+01 1.1767177964609317E+01 + 1.1790645863936039E+01 1.1814106535058119E+01 1.1837560328152929E+01 1.1861006472025370E+01 1.1884445433865020E+01 + 1.1907877258653702E+01 1.1931301411902883E+01 1.1954718344039859E+01 1.1978127818965328E+01 1.2001529480208459E+01 + 1.2024924017803437E+01 1.2048310642220766E+01 1.2071689325619246E+01 1.2095060758670174E+01 1.2118424092404545E+01 + 1.2141779576608990E+01 1.2165127531047698E+01 1.2188467270237243E+01 1.2211799107948751E+01 1.2235123189060232E+01 + 1.2258438891249703E+01 1.2281746694016459E+01 1.2305046467841890E+01 1.2328337721770454E+01 1.2351621043384139E+01 + 1.2374895928299036E+01 1.2398162259614274E+01 1.2421420614800283E+01 1.2444670372532588E+01 1.2467911496170862E+01 + 1.2491144486791802E+01 1.2514368726132966E+01 1.2537584270628347E+01 1.2560791460229757E+01 1.2583989781113994E+01 + 1.2607179336100183E+01 1.2630360344974559E+01 1.2653532329980491E+01 1.2676695481802835E+01 1.2699849957465743E+01 + 1.2722995191145134E+01 1.2746131531487920E+01 1.2769259070775231E+01 1.2792377204599338E+01 1.2815486303202414E+01 + 1.2838586523144237E+01 1.2861677150808561E+01 1.2884758656260647E+01 1.2907831167082524E+01 1.2930893918724761E+01 + 1.2953947533859598E+01 1.2976991844317801E+01 1.3000026341480316E+01 1.3023051670088913E+01 1.3046067425656306E+01 + 1.3069073326593918E+01 1.3092069924022399E+01 1.3115056851987479E+01 1.3138033806882374E+01 1.3161001251634758E+01 + 1.3183958994135439E+01 1.3206906589478715E+01 1.3229844525685346E+01 1.3252772701802710E+01 1.3275690543550157E+01 + 1.3298598722563947E+01 1.3321496928871499E+01 1.3344384711459600E+01 1.3367262782889036E+01 1.3390130618798327E+01 + 1.3412988009030187E+01 1.3435835487864120E+01 1.3458672719395535E+01 1.3481499372032049E+01 1.3504315893894859E+01 + 1.3527122177870499E+01 1.3549917734473878E+01 1.3572703019796636E+01 1.3595477968368790E+01 1.3618242061411769E+01 + 1.3640995829176962E+01 1.3663739087327196E+01 1.3686471401434089E+01 1.3709193276525129E+01 1.3731904551911436E+01 + 1.3754604770443112E+01 1.3777294295566083E+01 1.3799973334983582E+01 1.3822640987763661E+01 1.3845297742467581E+01 + 1.3867943998013320E+01 1.3890578876382936E+01 1.3913202862461814E+01 1.3935816403521173E+01 1.3958419161980062E+01 + 1.3981011257901885E+01 1.4003593054711608E+01 1.4026163934001417E+01 1.4048723938583795E+01 1.4071273694816988E+01 + 1.4093812345992218E+01 1.4116339879309161E+01 1.4138856848809793E+01 1.4161362797885694E+01 1.4183857591955833E+01 + 1.4206341663289074E+01 1.4228814821923036E+01 1.4251276622764777E+01 1.4273727590503288E+01 1.4296167562492005E+01 + 1.4318596069626132E+01 1.4341013457720136E+01 1.4363419652972272E+01 1.4385814284014067E+01 1.4408197683398829E+01 + 1.4430570131893729E+01 1.4452930898984029E+01 1.4475280221372708E+01 1.4497618526764731E+01 1.4519945109870742E+01 + 1.4542259850905191E+01 1.4564563247542523E+01 1.4586855114836304E+01 1.4609135109681700E+01 1.4631403809828830E+01 + 1.4653660901872696E+01 1.4675906006175818E+01 1.4698139483880331E+01 1.4720361142455090E+01 1.4742570701684816E+01 + 1.4764768466421023E+01 1.4786954808047131E+01 1.4809128977244834E+01 1.4831291154751645E+01 1.4853441569515311E+01 + 1.4875579598177705E+01 1.4897705441135013E+01 1.4919819551709180E+01 1.4941921689503619E+01 1.4964011425697542E+01 + 1.4986089194007340E+01 1.5008154606644682E+01 1.5030207503542599E+01 1.5052248205611704E+01 1.5074277110174251E+01 + 1.5096293467811712E+01 1.5118297294616047E+01 1.5140288691121754E+01 1.5162267736084303E+01 1.5184234117513382E+01 + 1.5206188322793063E+01 1.5228130306335508E+01 1.5250059157365989E+01 1.5271975298996802E+01 1.5293879280319652E+01 + 1.5315770484184604E+01 1.5337648933709209E+01 1.5359515140172720E+01 1.5381368023539242E+01 1.5403208047616680E+01 + 1.5425035588325528E+01 1.5446850757325855E+01 1.5468652604420615E+01 1.5490441231643524E+01 1.5512217426256806E+01 + 1.5533980617020889E+01 1.5555730740519291E+01 1.5577468130355461E+01 1.5599192250386805E+01 1.5620903069760057E+01 + 1.5642601205872412E+01 1.5664286630348059E+01 1.5685958171928302E+01 1.5707616383811056E+01 1.5729262131270056E+01 + 1.5750894569976911E+01 1.5772513516566342E+01 1.5794118957924798E+01 1.5815711502039807E+01 1.5837290539629691E+01 + 1.5858856380456176E+01 1.5880408804163102E+01 1.5901947532472787E+01 1.5923472861597361E+01 1.5944985382896281E+01 + 1.5966483877689102E+01 1.5987968527833218E+01 1.6009439936198362E+01 1.6030898389811156E+01 1.6052342653994501E+01 + 1.6073772877573987E+01 1.6095190093551967E+01 1.6116593882187704E+01 1.6137983374839507E+01 1.6159358987063506E+01 + 1.6180721486844607E+01 1.6202070176753434E+01 1.6223404397094775E+01 1.6244725238158885E+01 1.6266032378461773E+01 + 1.6287325593949507E+01 1.6308604396226734E+01 1.6329869802642179E+01 1.6351121198920172E+01 1.6372358566733215E+01 + 1.6393581656748530E+01 1.6414791090118413E+01 1.6435986394292854E+01 1.6457167531083940E+01 1.6478334543974061E+01 + 1.6499487581481429E+01 1.6520626322342292E+01 1.6541750954079593E+01 1.6562861466319433E+01 1.6583957794325734E+01 + 1.6605039567186505E+01 1.6626107393986661E+01 1.6647160947185114E+01 1.6668200156858756E+01 1.6689224621961053E+01 + 1.6710235285597150E+01 1.6731231428496343E+01 1.6752212860919723E+01 1.6773180086815785E+01 1.6794133239461697E+01 + 1.6815071258602121E+01 1.6835994886669145E+01 1.6856904592672258E+01 1.6877799407924829E+01 1.6898678999416799E+01 + 1.6919545015296681E+01 1.6940396527091842E+01 1.6961232260516489E+01 1.6982053912983019E+01 1.7002861526552852E+01 + 1.7023653690617373E+01 1.7044431033301155E+01 1.7065194261786623E+01 1.7085942571877954E+01 1.7106675681590332E+01 + 1.7127394419147777E+01 1.7148098190527868E+01 1.7168787105952717E+01 1.7189461377778354E+01 1.7210120135980446E+01 + 1.7230764652237145E+01 1.7251394292315243E+01 1.7272008246637199E+01 1.7292607630359580E+01 1.7313192631149633E+01 + 1.7333761781445052E+01 1.7354315936255578E+01 1.7374855689895071E+01 1.7395379987274513E+01 1.7415889019010734E+01 + 1.7436383219826467E+01 1.7456862186444798E+01 1.7477326208261061E+01 1.7497774737594156E+01 1.7518207888513079E+01 + 1.7538626736646044E+01 1.7559029706503388E+01 1.7579417036539819E+01 1.7599789933419213E+01 1.7620147338008412E+01 + 1.7640489041753142E+01 1.7660815710497488E+01 1.7681126985088667E+01 1.7701423195739590E+01 1.7721703536719133E+01 + 1.7741968353631218E+01 1.7762218869713180E+01 1.7782452792941886E+01 1.7802671396778525E+01 1.7822875243724457E+01 + 1.7843062881921277E+01 1.7863235390039858E+01 1.7883392189060451E+01 1.7903533217115310E+01 1.7923659491571101E+01 + 1.7943769412925104E+01 1.7963863760712627E+01 1.7983942966917908E+01 1.8004006305504859E+01 1.8024054290084141E+01 + 1.8044085661979565E+01 1.8064102339659520E+01 1.8084103253460793E+01 1.8104087562414090E+01 1.8124056878899108E+01 + 1.8144010423170389E+01 1.8163948133481306E+01 1.8183870109321496E+01 1.8203775505665430E+01 1.8223666308039448E+01 + 1.8243540593468925E+01 1.8263398920749665E+01 1.8283241589356386E+01 1.8303068429331379E+01 1.8322879584604852E+01 + 1.8342673815023772E+01 1.8362453253652184E+01 1.8382216325723448E+01 1.8401963263740516E+01 1.8421694482737845E+01 + 1.8441409114415702E+01 1.8461108774927045E+01 1.8480791460986342E+01 1.8500458302716435E+01 1.8520109390507432E+01 + 1.8539744265665064E+01 1.8559362968695261E+01 1.8578965147671759E+01 1.8598552171045728E+01 1.8618122285204919E+01 + 1.8637676670706767E+01 1.8657214030625262E+01 1.8676736178558443E+01 1.8696242147523577E+01 1.8715731056669835E+01 + 1.8735204413103631E+01 1.8754660990912964E+01 1.8774102049705327E+01 1.8793526093564655E+01 1.8812934060807446E+01 + 1.8832325947910714E+01 1.8851701554826551E+01 1.8871060363236595E+01 1.8890402780724251E+01 1.8909729554731271E+01 + 1.8929039388783625E+01 1.8948333341423343E+01 1.8967609612147005E+01 1.8986871074127379E+01 1.9006115128248901E+01 + 1.9025342964323723E+01 1.9044554043054532E+01 1.9063749120000679E+01 1.9082927842373874E+01 1.9102089533386895E+01 + 1.9121234658459912E+01 1.9140363581792148E+01 1.9159476003393753E+01 1.9178571526947952E+01 1.9197650466678130E+01 + 1.9216713038067919E+01 1.9235759637680420E+01 1.9254788330400512E+01 1.9273801341868332E+01 1.9292796876071705E+01 + 1.9311776905133030E+01 1.9330739217852503E+01 1.9349685122857203E+01 1.9368614406836997E+01 1.9387527449464699E+01 + 1.9406423175338428E+01 1.9425302294995795E+01 1.9444164468593858E+01 1.9463011078622074E+01 1.9481839175759724E+01 + 1.9500651621858427E+01 1.9519446309594752E+01 1.9538225549001542E+01 1.9556986885015277E+01 1.9575731670640412E+01 + 1.9594459380063931E+01 1.9613170957195369E+01 1.9631865253863438E+01 1.9650542456495732E+01 1.9669202715421537E+01 + 1.9687846718630393E+01 1.9706473342838191E+01 1.9725083256870519E+01 1.9743675319864384E+01 1.9762252093892929E+01 + 1.9780810517864051E+01 1.9799352943469003E+01 1.9817876961959026E+01 1.9836385596772207E+01 1.9854876253693845E+01 + 1.9873350447848363E+01 1.9891806671762811E+01 1.9910246663046451E+01 1.9928669696862556E+01 1.9947075287807621E+01 + 1.9965463786014364E+01 1.9983834909420075E+01 2.0002190136698488E+01 2.0020526925525356E+01 2.0038847414612320E+01 + 2.0057149717668739E+01 2.0075436463976256E+01 2.0093704907004469E+01 2.0111956723123452E+01 2.0130190532956579E+01 + 2.0148408169093955E+01 2.0166608339073338E+01 2.0184791142818639E+01 2.0202956493524425E+01 2.0221104769381839E+01 + 2.0239236616269448E+01 2.0257349917192887E+01 2.0275447034728405E+01 2.0293525457287149E+01 2.0311588628579663E+01 + 2.0329632807787185E+01 2.0347660623907650E+01 2.0365670100250302E+01 2.0383663556856092E+01 2.0401639035364393E+01 + 2.0419597280037479E+01 2.0437537681116662E+01 2.0455461330472300E+01 2.0473367761252071E+01 2.0491256565546333E+01 + 2.0509127517693180E+01 2.0526981610991211E+01 2.0544818263754827E+01 2.0562637996709132E+01 2.0580438994129175E+01 + 2.0598223716468038E+01 2.0615990155572955E+01 2.0633740391398145E+01 2.0651471757612054E+01 2.0669186381893109E+01 + 2.0686883335493590E+01 2.0704563529893118E+01 2.0722225717326062E+01 2.0739870446969963E+01 2.0757497489781798E+01 + 2.0775108178931767E+01 2.0792700153626736E+01 2.0810275805304318E+01 2.0827832056191202E+01 2.0845372721684083E+01 + 2.0862894965145902E+01 2.0880400046960023E+01 2.0897886979234901E+01 2.0915356745204232E+01 2.0932809459458639E+01 + 2.0950244359758120E+01 2.0967661302452452E+01 2.0985060522599323E+01 2.1002442635421200E+01 2.1019807376788542E+01 + 2.1037154067212693E+01 2.1054482819047088E+01 2.1071794702804951E+01 2.1089088650803639E+01 2.1106365771091149E+01 + 2.1123623441041389E+01 2.1140864638234770E+01 2.1158087916709825E+01 2.1175294108166863E+01 2.1192482042028271E+01 + 2.1209652315401470E+01 2.1226804888173426E+01 2.1243940107735835E+01 2.1261057431571015E+01 2.1278156683654451E+01 + 2.1295238618121612E+01 2.1312302565613539E+01 2.1329350034215061E+01 2.1346377772709243E+01 2.1363388796089826E+01 + 2.1380381665666405E+01 2.1397357513437189E+01 2.1414315516992659E+01 2.1431254831826347E+01 2.1448176875554008E+01 + 2.1465081013872595E+01 2.1481968126588022E+01 2.1498836457869128E+01 2.1515687640476308E+01 2.1532519879039583E+01 + 2.1549335754044556E+01 2.1566133351751347E+01 2.1582912481613281E+01 2.1599674685233182E+01 2.1616417676129434E+01 + 2.1633144493511342E+01 2.1649852466174966E+01 2.1666542641175319E+01 2.1683215011998040E+01 2.1699869260872347E+01 + 2.1716506428302381E+01 2.1733124750548249E+01 2.1749725961875040E+01 2.1766308037940995E+01 2.1782873677035450E+01 + 2.1799420875129226E+01 2.1815949465610885E+01 2.1832461102574289E+01 2.1848953638396218E+01 2.1865429643784601E+01 + 2.1881887028765707E+01 2.1898325915766844E+01 2.1914747439148730E+01 2.1931150685174707E+01 2.1947536879090357E+01 + 2.1963903992252277E+01 2.1980253154774918E+01 2.1996584612860744E+01 2.2012898173734389E+01 2.2029194609156498E+01 + 2.2045471020368424E+01 2.2061730359872634E+01 2.2077972129050412E+01 2.2094195374975470E+01 2.2110401194593688E+01 + 2.2126587920012273E+01 2.2142757086381099E+01 2.2158908697036420E+01 2.2175041620209598E+01 2.2191157114149053E+01 + 2.2207253477571019E+01 2.2223332321693601E+01 2.2239393635371854E+01 2.2255436123657962E+01 2.2271461375523593E+01 + 2.2287467056462209E+01 2.2303455498859620E+01 2.2319426990274199E+01 2.2335378360461789E+01 2.2351312696467584E+01 + 2.2367228516014809E+01 2.2383126010072353E+01 2.2399006497947003E+01 2.2414867835992087E+01 2.2430711239419267E+01 + 2.2446536279640821E+01 2.2462343272073753E+01 2.2478133341839765E+01 2.2493903503701272E+01 2.2509655866800269E+01 + 2.2525390889329689E+01 2.2541106568489315E+01 2.2556805298965813E+01 2.2572485632288398E+01 2.2588146283992042E+01 + 2.2603790141971690E+01 2.2619415794505358E+01 2.2635022799377595E+01 2.2650612137004241E+01 2.2666182172370103E+01 + 2.2681734608865888E+01 2.2697269649883651E+01 2.2712785223195709E+01 2.2728283323208831E+01 2.2743762746087757E+01 + 2.2759223465429258E+01 2.2774667457402352E+01 2.2790092406677797E+01 2.2805498449080002E+01 2.2820886964035836E+01 + 2.2836256804488745E+01 2.2851608828526214E+01 2.2866942945483249E+01 2.2882257658992167E+01 2.2897554358288502E+01 + 2.2912833546800083E+01 2.2928093734584664E+01 2.2943336271278863E+01 2.2958560334967203E+01 2.2973764830293476E+01 + 2.2988952516702096E+01 2.3004122275158615E+01 2.3019272176492056E+01 2.3034404828547711E+01 2.3049518812858942E+01 + 2.3064613764662923E+01 2.3079692154330008E+01 2.3094751202479593E+01 2.3109791161151605E+01 2.3124813829503712E+01 + 2.3139817702567314E+01 2.3154803425266085E+01 2.3169771419908759E+01 2.3184720091726696E+01 2.3199649974416069E+01 + 2.3214562806669178E+01 2.3229457301570175E+01 2.3244332314115404E+01 2.3259189905657376E+01 2.3274028642483660E+01 + 2.3288848370433950E+01 2.3303651411670959E+01 2.3318435229305983E+01 2.3333199847789921E+01 2.3347946879239167E+01 + 2.3362675648266752E+01 2.3377385624956251E+01 2.3392077825390508E+01 2.3406751715700420E+01 2.3421405409366049E+01 + 2.3436042142587308E+01 2.3450661304472355E+01 2.3465260591633729E+01 2.3479841722626240E+01 2.3494404872986586E+01 + 2.3508949044920161E+01 2.3523475162504788E+01 2.3537983837977059E+01 2.3552472545548564E+01 2.3566942613248724E+01 + 2.3581395340992454E+01 2.3595829891588696E+01 2.3610244931456545E+01 2.3624642229264474E+01 2.3639021272548320E+01 + 2.3653380318979416E+01 2.3667722387406720E+01 2.3682046539972941E+01 2.3696351089515154E+01 2.3710636744800215E+01 + 2.3724904996757743E+01 2.3739154674424427E+01 2.3753385468057580E+01 2.3767598284748335E+01 2.3781792764942580E+01 + 2.3795967126958011E+01 2.3810124405286860E+01 2.3824264132269487E+01 2.3838384086017548E+01 2.3852485045684421E+01 + 2.3866568359615172E+01 2.3880633463874513E+01 2.3894679461462331E+01 2.3908707333412877E+01 2.3922717120602336E+01 + 2.3936707265093727E+01 2.3950678880286894E+01 2.3964633536299790E+01 2.3978569357052830E+01 2.3992485262433565E+01 + 2.4006383249966873E+01 2.4020263368192612E+01 2.4034124812789120E+01 2.4047967298420616E+01 2.4061791843547812E+01 + 2.4075597827129318E+01 2.4089384117675696E+01 2.4103152726044485E+01 2.4116903941064425E+01 2.4130635689240577E+01 + 2.4144347910106152E+01 2.4158042230431299E+01 2.4171719250024157E+01 2.4185376550334684E+01 2.4199015273477851E+01 + 2.4212635951906286E+01 2.4226238384458618E+01 2.4239820698328561E+01 2.4253385716202988E+01 2.4266932855232824E+01 + 2.4280461026693025E+01 2.4293969155421482E+01 2.4307459497289617E+01 2.4320932524498250E+01 2.4334386541505129E+01 + 2.4347820975881707E+01 2.4361237288255804E+01 2.4374635655453300E+01 2.4388014775834712E+01 2.4401375555056710E+01 + 2.4414718120505036E+01 2.4428042379228444E+01 2.4441347122862993E+01 2.4454632877448724E+01 2.4467901432326393E+01 + 2.4481151911929555E+01 2.4494382738647019E+01 2.4507594116440352E+01 2.4520787718841923E+01 2.4533963982877520E+01 + 2.4547120710249406E+01 2.4560258273023706E+01 2.4573377754911565E+01 2.4586479111214995E+01 2.4599561047818188E+01 + 2.4612624778209664E+01 2.4625670304930793E+01 2.4638697512534119E+01 2.4651705582843146E+01 2.4664693888738277E+01 + 2.4677664955750615E+01 2.4690618305503197E+01 2.4703552363717986E+01 2.4716466696423321E+01 2.4729362697151807E+01 + 2.4742241111554375E+01 2.4755101733256712E+01 2.4767941866521426E+01 2.4780763692213664E+01 2.4793567331181890E+01 + 2.4806352736076242E+01 2.4819119223024039E+01 2.4831866901599025E+01 2.4844596299721474E+01 2.4857307430252856E+01 + 2.4869999484313883E+01 2.4882672150347407E+01 2.4895327233696182E+01 2.4907964206534754E+01 2.4920582677547802E+01 + 2.4933180859747818E+01 2.4945760550053571E+01 2.4958322821485687E+01 2.4970867187292122E+01 2.4983392373619289E+01 + 2.4995897435935667E+01 2.5008384425183245E+01 2.5020853492428884E+01 2.5033304904734297E+01 2.5045736792357584E+01 + 2.5058149135104884E+01 2.5070543394237237E+01 2.5082919449676950E+01 2.5095277418308367E+01 2.5107615966988771E+01 + 2.5119935768452642E+01 2.5132237273738586E+01 2.5144520459694750E+01 2.5156784844595073E+01 2.5169030040267653E+01 + 2.5181257224444213E+01 2.5193465936150009E+01 2.5205656267142043E+01 2.5217827434626152E+01 2.5229979074111387E+01 + 2.5242113316475876E+01 2.5254229274001791E+01 2.5266326759824221E+01 2.5278404566606184E+01 2.5290463176684778E+01 + 2.5302504122736181E+01 2.5314527222785511E+01 2.5326531765778014E+01 2.5338516870295170E+01 2.5350482303631853E+01 + 2.5362429753926072E+01 2.5374359640720918E+01 2.5386271442285548E+01 2.5398163840417261E+01 2.5410036300257410E+01 + 2.5421890508451881E+01 2.5433726859959823E+01 2.5445545502244123E+01 2.5457345304641038E+01 2.5469124997469738E+01 + 2.5480886144891812E+01 2.5492629010768528E+01 2.5504354143502326E+01 2.5516061266377434E+01 2.5527748528842157E+01 + 2.5539416520542314E+01 2.5551066229056900E+01 2.5562697754636869E+01 2.5574311535915875E+01 2.5585906548966136E+01 + 2.5597481718036306E+01 2.5609038259005601E+01 2.5620576470308951E+01 2.5632096479916676E+01 2.5643598998954733E+01 + 2.5655081626748849E+01 2.5666545112739623E+01 2.5677990149300477E+01 2.5689416794202774E+01 2.5700825339008382E+01 + 2.5712216038986224E+01 2.5723586943648211E+01 2.5734938740131295E+01 2.5746272188169510E+01 2.5757587248149694E+01 + 2.5768884402960037E+01 2.5780163313356155E+01 2.5791422383711026E+01 2.5802662608506111E+01 2.5813884417408879E+01 + 2.5825087855564675E+01 2.5836273442559015E+01 2.5847440956884370E+01 2.5858588200013589E+01 2.5869716769040668E+01 + 2.5880826908331692E+01 2.5891918734948419E+01 2.5902992689970944E+01 2.5914048521340753E+01 2.5925084568455258E+01 + 2.5936101354006979E+01 2.5947099805707737E+01 2.5958079851365856E+01 2.5969042290943506E+01 2.5979986592166835E+01 + 2.5990911378836103E+01 2.6001816510621666E+01 2.6012703238996615E+01 2.6023571683746820E+01 2.6034422347596266E+01 + 2.6045255034249656E+01 2.6056069041277876E+01 2.6066863695336593E+01 2.6077639519287668E+01 2.6088397472716945E+01 + 2.6099137865140968E+01 2.6109860407881445E+01 2.6120564610943493E+01 2.6131250224353661E+01 2.6141916024987697E+01 + 2.6152563834666442E+01 2.6163194114804906E+01 2.6173806614041602E+01 2.6184400655715276E+01 2.6194976387895888E+01 + 2.6205533471833871E+01 2.6216071389083158E+01 2.6226591453981928E+01 2.6237093823579666E+01 2.6247577737413813E+01 + 2.6258043335179977E+01 2.6268490678804902E+01 2.6278919830723325E+01 2.6289330223879002E+01 2.6299722409907446E+01 + 2.6310096177641732E+01 2.6320451612391885E+01 2.6330788793972225E+01 2.6341107898101352E+01 2.6351409374749132E+01 + 2.6361692614328508E+01 2.6371956335521002E+01 2.6382201590750928E+01 2.6392428632867563E+01 2.6402637487895149E+01 + 2.6412828800385110E+01 2.6423002364566280E+01 2.6433157507125603E+01 2.6443293724643613E+01 2.6453410556522787E+01 + 2.6463509287999912E+01 2.6473590305747237E+01 2.6483653710030072E+01 2.6493698736567453E+01 2.6503725365251391E+01 + 2.6513733704498989E+01 2.6523723443233095E+01 2.6533694478311965E+01 2.6543647612272377E+01 2.6553582558995789E+01 + 2.6563499082883212E+01 2.6573397284379340E+01 2.6583277242082897E+01 2.6593139206418513E+01 2.6602983850232594E+01 + 2.6612809648723303E+01 2.6622615954955741E+01 2.6632404046455893E+01 2.6642173888402017E+01 2.6651925752165234E+01 + 2.6661660035201603E+01 2.6671376309862154E+01 2.6681074138391846E+01 2.6690753613491079E+01 2.6700414306846945E+01 + 2.6710055975231995E+01 2.6719680082777362E+01 2.6729286320187573E+01 2.6738874106139843E+01 2.6748443513050287E+01 + 2.6757994617306291E+01 2.6767527531639558E+01 2.6777042682574198E+01 2.6786540281054087E+01 2.6796018791821574E+01 + 2.6805478041559816E+01 2.6814919136744383E+01 2.6824341988206584E+01 2.6833746975287195E+01 2.6843134405227467E+01 + 2.6852503594189123E+01 2.6861854367890619E+01 2.6871186785904534E+01 2.6880500917013226E+01 2.6889796738476836E+01 + 2.6899074000959686E+01 2.6908333351039087E+01 2.6917574189693632E+01 2.6926796666235639E+01 2.6936000857942158E+01 + 2.6945186876120211E+01 2.6954355220651916E+01 2.6963505835661206E+01 2.6972638070578025E+01 2.6981751897065774E+01 + 2.6990847363269296E+01 2.6999923448001876E+01 2.7008981554127690E+01 2.7018022300973012E+01 2.7027044748485213E+01 + 2.7036048749157512E+01 2.7045034397405562E+01 2.7054001771359665E+01 2.7062951106773831E+01 2.7071882816058512E+01 + 2.7080796624097694E+01 2.7089692008863757E+01 2.7098569009945141E+01 2.7107426879802368E+01 2.7116266251380988E+01 + 2.7125087769904550E+01 2.7133891969765045E+01 2.7142677671078779E+01 2.7151444978691256E+01 2.7160193950136573E+01 + 2.7168924655212695E+01 2.7177637362367562E+01 2.7186332521945047E+01 2.7195009680055477E+01 2.7203668397583431E+01 + 2.7212308731757691E+01 2.7220930556847797E+01 2.7229533538878826E+01 2.7238118660536340E+01 2.7246686275697829E+01 + 2.7255235453704337E+01 2.7263766266073908E+01 2.7272278753088354E+01 2.7280772980043775E+01 2.7289249182335478E+01 + 2.7297707899290494E+01 2.7306148644763351E+01 2.7314570920403884E+01 2.7322974833176954E+01 2.7331360460785891E+01 + 2.7339727880208365E+01 2.7348077626231742E+01 2.7356409236629155E+01 2.7364722155081985E+01 2.7373016694003500E+01 + 2.7381292946474101E+01 2.7389550951337768E+01 2.7397790893451980E+01 2.7406013255507808E+01 2.7414217872434619E+01 + 2.7422403988631032E+01 2.7430571747537950E+01 2.7438721221685022E+01 2.7446852488127590E+01 2.7454966014895156E+01 + 2.7463061947766406E+01 2.7471139673843055E+01 2.7479198997939910E+01 2.7487240013735139E+01 2.7495262790787343E+01 + 2.7503267349667603E+01 2.7511253684362210E+01 2.7519222431713359E+01 2.7527172694970410E+01 2.7535104633775934E+01 + 2.7543018286127833E+01 2.7550913717602452E+01 2.7558791193847647E+01 2.7566651207625441E+01 2.7574493276968344E+01 + 2.7582316906294466E+01 2.7590122209477116E+01 2.7597909275272112E+01 2.7605678187078421E+01 2.7613429370041850E+01 + 2.7621162968498417E+01 2.7628878383179163E+01 2.7636575431239635E+01 2.7644254200182161E+01 2.7651914739122844E+01 + 2.7659557126302136E+01 2.7667181948364057E+01 2.7674789255578176E+01 2.7682378136812634E+01 2.7689948664666183E+01 + 2.7697500573577464E+01 2.7705034128299584E+01 2.7712549683421468E+01 2.7720047909459467E+01 2.7727528204934107E+01 + 2.7734990111947337E+01 2.7742433737199597E+01 2.7749859155098775E+01 2.7757266421011817E+01 2.7764655796810565E+01 + 2.7772027695409296E+01 2.7779381713188052E+01 2.7786717309036788E+01 2.7794034632662150E+01 2.7801333746438807E+01 + 2.7808614718013636E+01 2.7815878041206538E+01 2.7823123865541582E+01 2.7830351519325504E+01 2.7837560852487897E+01 + 2.7844751939480233E+01 2.7851924861030383E+01 2.7859079734502430E+01 2.7866216943632796E+01 2.7873336617528057E+01 + 2.7880438119090215E+01 2.7887521303762739E+01 2.7894586269547190E+01 2.7901633064884830E+01 2.7908661755158224E+01 + 2.7915673122248094E+01 2.7922666763316911E+01 2.7929642142793799E+01 2.7936599248605795E+01 2.7943538153369950E+01 + 2.7950458921855880E+01 2.7957361735884195E+01 2.7964247052237482E+01 2.7971114770779074E+01 2.7977964164552144E+01 + 2.7984795307901976E+01 2.7991608283767331E+01 2.7998403137151865E+01 2.8005179924728054E+01 2.8011939590040924E+01 + 2.8018681378990532E+01 2.8025404904056085E+01 2.8032110194538230E+01 2.8038797314742439E+01 2.8045466331236113E+01 + 2.8052117441404445E+01 2.8058751194940921E+01 2.8065367304771918E+01 2.8071965043481519E+01 2.8078544574428872E+01 + 2.8085105979841838E+01 2.8091649311839948E+01 2.8098174608167781E+01 2.8104682876501581E+01 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 2.5594311267786218E-01 2.5495341879195715E-01 2.5395813592853700E-01 2.5295744419580829E-01 2.5195152219934613E-01 + 2.5094054868017845E-01 2.4992469719804516E-01 2.4890414120589480E-01 2.4787905313387734E-01 2.4684960382514973E-01 + 2.4581596251717383E-01 2.4477829866406964E-01 2.4373677572091523E-01 2.4269155792462280E-01 2.4164280798804819E-01 + 2.4059068695437713E-01 2.3953535441888610E-01 2.3847696931893786E-01 2.3741568536881844E-01 2.3635165686797704E-01 + 2.3528503640723569E-01 2.3421597485172990E-01 2.3314462186905888E-01 2.3207112530344362E-01 2.3099562913666860E-01 + 2.2991827732126557E-01 2.2883921206412655E-01 2.2775857382142647E-01 2.2667650205260745E-01 2.2559313345879065E-01 + 2.2450860204040987E-01 2.2342304125421192E-01 2.2233658279483753E-01 2.2124935659702366E-01 2.2016149177019603E-01 + 2.1907311392949008E-01 2.1798434697374774E-01 2.1689531382783531E-01 2.1580613566355195E-01 2.1471693189560245E-01 + 2.1362782125089730E-01 2.1253891842063236E-01 2.1145033718880049E-01 2.1036219001836695E-01 2.0927458764283000E-01 + 2.0818763906355009E-01 2.0710145269280453E-01 2.0601613254688475E-01 2.0493178237050161E-01 2.0384850433172319E-01 + 2.0276639889899872E-01 2.0168556495024850E-01 2.0060610043710742E-01 1.9952809932447221E-01 1.9845165538281448E-01 + 1.9737686072087260E-01 1.9630380579473697E-01 1.9523257969355282E-01 1.9416326992614705E-01 1.9309596099995058E-01 + 1.9203073687648073E-01 1.9096767991115104E-01 1.8990687086092375E-01 1.8884838930058626E-01 1.8779231274537733E-01 + 1.8673871651997928E-01 1.8568767512715023E-01 1.8463926152457397E-01 1.8359354714132811E-01 1.8255060236421231E-01 + 1.8151049520905835E-01 1.8047329213815463E-01 1.7943905859268489E-01 1.7840785853745833E-01 1.7737975447844739E-01 + 1.7635480799590811E-01 1.7533307811910540E-01 1.7431462281870019E-01 1.7329949890427437E-01 1.7228776178656935E-01 + 1.7127946549050049E-01 1.7027466320491466E-01 1.6927340550318506E-01 1.6827574227070480E-01 1.6728172214393805E-01 + 1.6629139244124064E-01 1.6530479920295499E-01 1.6432198758298633E-01 1.6334300033173402E-01 1.6236787964449984E-01 + 1.6139666646707709E-01 1.6042940050708152E-01 1.5946612034996197E-01 1.5850686343703496E-01 1.5755166538088494E-01 + 1.5660056109407589E-01 1.5565358431998927E-01 1.5471076764614358E-01 1.5377214266419023E-01 1.5283773968153574E-01 + 1.5190758761635520E-01 1.5098171459245566E-01 1.5006014764709830E-01 1.4914291274771119E-01 1.4823003495927575E-01 + 1.4732153802437772E-01 1.4641744461799375E-01 1.4551777657063072E-01 1.4462255471466284E-01 1.4373179888784526E-01 + 1.4284552810718584E-01 1.4196376010227141E-01 1.4108651175954415E-01 1.4021379911242612E-01 1.3934563727625482E-01 + 1.3848204045453247E-01 1.3762302208404306E-01 1.3676859442231459E-01 1.3591876901861910E-01 1.3507355659457373E-01 + 1.3423296703188775E-01 1.3339700938472859E-01 1.3256569197102602E-01 1.3173902209597679E-01 1.3091700641973036E-01 + 1.3009965082522112E-01 1.2928696043284116E-01 1.2847893962004006E-01 1.2767559202933762E-01 1.2687692052184346E-01 + 1.2608292730210316E-01 1.2529361387385943E-01 1.2450898105290657E-01 1.2372902897637751E-01 1.2295375710685717E-01 + 1.2218316427971826E-01 1.2141724868906825E-01 1.2065600790104446E-01 1.1989943886481817E-01 1.1914753789759659E-01 + 1.1840030075745137E-01 1.1765772265396607E-01 1.1691979819687870E-01 1.1618652143710602E-01 1.1545788587889250E-01 + 1.1473388442583271E-01 1.1401450957171169E-01 1.1329975328793374E-01 1.1258960700811055E-01 1.1188406166876110E-01 + 1.1118310772812764E-01 1.1048673506473417E-01 1.0979493332195800E-01 1.0910769160511061E-01 1.0842499855240770E-01 + 1.0774684237050433E-01 1.0707321084696948E-01 1.0640409120643493E-01 1.0573947062403663E-01 1.0507933569360804E-01 + 1.0442367262033561E-01 1.0377246723934880E-01 1.0312570499191648E-01 1.0248337088596321E-01 1.0184544989891353E-01 + 1.0121192647321434E-01 1.0058278472252756E-01 9.9958008445816413E-02 9.9337581060276223E-02 9.8721485714172372E-02 + 9.8109705486905452E-02 9.7502222993805662E-02 9.6899020574521044E-02 9.6300080301042867E-02 9.5705383875159852E-02 + 9.5114912903465063E-02 9.4528648856717287E-02 9.3946572821207400E-02 9.3368665655113897E-02 9.2794907996116671E-02 + 9.2225280113177557E-02 9.1659762362750821E-02 9.1098334877234802E-02 9.0540977489152408E-02 8.9987669846548171E-02 + 8.9438391420361862E-02 8.8893121310920281E-02 8.8351838888393930E-02 8.7814523198028127E-02 8.7281153071434567E-02 + 8.6751707195874370E-02 8.6226164121137969E-02 8.5704502022711612E-02 8.5186699522743409E-02 8.4672734811406122E-02 + 8.4162585950759719E-02 8.3656230895122682E-02 8.3153647462780644E-02 8.2654813231833227E-02 8.2159706186902756E-02 + 8.1668303910753887E-02 8.1180583906237627E-02 8.0696523601998082E-02 8.0216100274470570E-02 7.9739291150778172E-02 + 7.9266073727324374E-02 7.8796425187790842E-02 7.8330322666540678E-02 7.7867743253575747E-02 7.7408663869543926E-02 + 7.6953061570069439E-02 7.6500913539333512E-02 7.6052196736311445E-02 7.5606888098534136E-02 7.5164964545510929E-02 + 7.4726402810404727E-02 7.4291179935107046E-02 7.3859272951031577E-02 7.3430658748902033E-02 7.3005314222132703E-02 + 7.2583216270366249E-02 7.2164341590313305E-02 7.1748667348497303E-02 7.1336170566545565E-02 7.0926828205945064E-02 + 7.0520617251981707E-02 7.0117514717731630E-02 6.9717497398380596E-02 6.9320542704661328E-02 6.8926627776851740E-02 + 6.8535729769231293E-02 6.8147825879308316E-02 6.7762893324866305E-02 6.7380909195799560E-02 6.7001851173627072E-02 + 6.6625696656055486E-02 6.6252423097403826E-02 6.5882008012014104E-02 6.5514428903034244E-02 6.5149663325216670E-02 + 6.4787689253396716E-02 6.4428484463681310E-02 6.4072026803787652E-02 6.3718294195110839E-02 6.3367264519775313E-02 + 6.3018915873803455E-02 6.2673226613538940E-02 6.2330174975457259E-02 6.1989739280017692E-02 6.1651897933649877E-02 + 6.1316629277353624E-02 6.0983912012332914E-02 6.0653724952191040E-02 6.0326046863265877E-02 6.0000856606154077E-02 + 5.9678133137540286E-02 5.9357855326426776E-02 5.9040002530106210E-02 5.8724554084407472E-02 5.8411489343181508E-02 + 5.8100787763661198E-02 5.7792428907398642E-02 5.7486392228396438E-02 5.7182657780795738E-02 5.6881205476596308E-02 + 5.6582015305440922E-02 5.6285067366418161E-02 5.5990341856421939E-02 5.5697818903845057E-02 5.5407479248016159E-02 + 5.5119303436662506E-02 5.4833272132198199E-02 5.4549366112795900E-02 5.4267566218629479E-02 5.3987853370806214E-02 + 5.3710208935547656E-02 5.3434614158839620E-02 5.3161050405676868E-02 5.2889499160666813E-02 5.2619941939521568E-02 + 5.2352360469541059E-02 5.2086736774029196E-02 5.1823052819899941E-02 5.1561290695933321E-02 5.1301432613786876E-02 + 5.1043460788741661E-02 5.0787357760706399E-02 5.0533106232769541E-02 5.0280688908325398E-02 5.0030088614534091E-02 + 4.9781288302996010E-02 4.9534270906148502E-02 4.9289019776324869E-02 4.9045518312890272E-02 4.8803749964466528E-02 + 4.8563698304891774E-02 4.8325347032960590E-02 4.8088679808772149E-02 4.7853680792318269E-02 4.7620334088748412E-02 + 4.7388623895824052E-02 4.7158534536252329E-02 4.6930050453745521E-02 4.6703156053970955E-02 4.6477836281463888E-02 + 4.6254075956659355E-02 4.6031860024635496E-02 4.5811173554579351E-02 4.5592001704308077E-02 4.5374329707907231E-02 + 4.5158143198163678E-02 4.4943427737935984E-02 4.4730169013534861E-02 4.4518352834367461E-02 4.4307965069681605E-02 + 4.4098991762789384E-02 4.3891419232113552E-02 4.3685233774063470E-02 4.3480421806363440E-02 4.3276969867912747E-02 + 4.3074864532958980E-02 4.2874092632171630E-02 4.2674641163560581E-02 4.2476497144117421E-02 4.2279647709894674E-02 + 4.2084080115539893E-02 4.1889781630752722E-02 4.1696739848912645E-02 4.1504942438157152E-02 4.1314377120436133E-02 + 4.1125031734331373E-02 4.0936894233834752E-02 4.0749952571100138E-02 4.0564195075966439E-02 4.0379610074233359E-02 + 4.0196185975164056E-02 4.0013911301285551E-02 3.9832774687323665E-02 3.9652764752233442E-02 3.9473870534890522E-02 + 3.9296081003864100E-02 3.9119385235759710E-02 3.8943772416783637E-02 3.8769231820070194E-02 3.8595752778523833E-02 + 3.8423324946830498E-02 3.8251937940883420E-02 3.8081581482902471E-02 3.7912245400901046E-02 3.7743919586881322E-02 + 3.7576594061341437E-02 3.7410259071939927E-02 3.7244904861216406E-02 3.7080521774106354E-02 3.6917100257239266E-02 + 3.6754630801773637E-02 3.6593104083937102E-02 3.6432510925787386E-02 3.6272842172653030E-02 3.6114088768323005E-02 + 3.5956241754127906E-02 3.5799292199297790E-02 3.5643231403675091E-02 3.5488050744102474E-02 3.5333741644143372E-02 + 3.5180295621724263E-02 3.5027704288091058E-02 3.4875959268814191E-02 3.4725052455539938E-02 3.4574975758997095E-02 + 3.4425721155965289E-02 3.4277280713373950E-02 3.4129646587470655E-02 3.3982810937414364E-02 3.3836766215173085E-02 + 3.3691504843876070E-02 3.3547019328181923E-02 3.3403302258916939E-02 3.3260346299971565E-02 3.3118144156236991E-02 + 3.2976688773982799E-02 3.2835973078376816E-02 3.2695990076784115E-02 3.2556732858309734E-02 3.2418194567545432E-02 + 3.2280368436838187E-02 3.2143247871271069E-02 3.2006826277627118E-02 3.1871097140772839E-02 3.1736054022478546E-02 + 3.1601690525846472E-02 3.1468000378858274E-02 3.1334977424348660E-02 3.1202615525521355E-02 3.1070908619283341E-02 + 3.0939850715805281E-02 3.0809435853641910E-02 3.0679658225914903E-02 3.0550512091892478E-02 3.0421991746345318E-02 + 3.0294091553781370E-02 3.0166805947857964E-02 3.0040129380365686E-02 2.9914056479798588E-02 2.9788581900841514E-02 + 2.9663700345479174E-02 2.9539406581619746E-02 2.9415695442282955E-02 2.9292561770133289E-02 2.9170000601016856E-02 + 2.9048006963649470E-02 2.8926575943628432E-02 2.8805702688725336E-02 2.8685382401884615E-02 2.8565610312116234E-02 + 2.8446381818211353E-02 2.8327692307836310E-02 2.8209537227190863E-02 2.8091912080831165E-02 2.7974812415749881E-02 + 2.7858233835290337E-02 2.7742172065707366E-02 2.7626622836577647E-02 2.7511581932225880E-02 2.7397045191665480E-02 + 2.7283008485818622E-02 2.7169467765789424E-02 2.7056419066088053E-02 2.6943858436552479E-02 2.6831781978015560E-02 + 2.6720185842456820E-02 2.6609066204941263E-02 2.6498419339124370E-02 2.6388241569363740E-02 2.6278529244553501E-02 + 2.6169278761330923E-02 2.6060486563969743E-02 2.5952149112559053E-02 2.5844262979341209E-02 2.5736824760518279E-02 + 2.5629831083876564E-02 2.5523278621912848E-02 2.5417164091198256E-02 2.5311484218346912E-02 2.5206235852017551E-02 + 2.5101415842326683E-02 2.4997021076843436E-02 2.4893048484637425E-02 2.4789495033614176E-02 2.4686357705826393E-02 + 2.4583633598034425E-02 2.4481319799865623E-02 2.4379413440076891E-02 2.4277911686329326E-02 2.4176811735929383E-02 + 2.4076110819890643E-02 2.3975806252490219E-02 2.3875895350111396E-02 2.3776375465348932E-02 2.3677243986823259E-02 + 2.3578498325458042E-02 2.3480135940852524E-02 2.3382154349808799E-02 2.3284551078873662E-02 2.3187323687744763E-02 + 2.3090469769062823E-02 2.2993986932522744E-02 2.2897872847151939E-02 2.2802125218296432E-02 2.2706741766075952E-02 + 2.2611720241618675E-02 2.2517058426635005E-02 2.2422754114055029E-02 2.2328805165262280E-02 2.2235209460101268E-02 + 2.2141964897369467E-02 2.2049069404800965E-02 2.1956520937659475E-02 2.1864317459039408E-02 2.1772457005897590E-02 + 2.1680937619237003E-02 2.1589757362742205E-02 2.1498914325986905E-02 2.1408406623979071E-02 2.1318232378038152E-02 + 2.1228389783798134E-02 2.1138877031569778E-02 2.1049692336160955E-02 2.0960833936225338E-02 2.0872300089909184E-02 + 2.0784089073666370E-02 2.0696199218232375E-02 2.0608628854505789E-02 2.0521376335916254E-02 2.0434440037530876E-02 + 2.0347818349203569E-02 2.0261509688157622E-02 2.0175512509590165E-02 2.0089825273068376E-02 2.0004446458513417E-02 + 1.9919374566070774E-02 1.9834608105977126E-02 1.9750145623606358E-02 1.9665985687959728E-02 1.9582126876110908E-02 + 1.9498567783613103E-02 1.9415307024438694E-02 1.9332343219271457E-02 1.9249675029178168E-02 1.9167301127559783E-02 + 1.9085220198408588E-02 1.9003430942648971E-02 1.8921932077651738E-02 1.8840722325102508E-02 1.8759800450504946E-02 + 1.8679165222612953E-02 1.8598815422464093E-02 1.8518749846755705E-02 1.8438967307017690E-02 1.8359466616365464E-02 + 1.8280246634837429E-02 1.8201306217788656E-02 1.8122644234606584E-02 1.8044259568240722E-02 1.7966151113446956E-02 + 1.7888317773303936E-02 1.7810758486097353E-02 1.7733472188055027E-02 1.7656457828031259E-02 1.7579714367689073E-02 + 1.7503240776538889E-02 1.7427036039019458E-02 1.7351099163737883E-02 1.7275429160127052E-02 1.7200025048869045E-02 + 1.7124885862272038E-02 1.7050010637759083E-02 1.6975398432317278E-02 1.6901048318409186E-02 1.6826959370994047E-02 + 1.6753130675631604E-02 1.6679561328110607E-02 1.6606250426729172E-02 1.6533197093792119E-02 1.6460400458778446E-02 + 1.6387859655897154E-02 1.6315573828606673E-02 1.6243542129517664E-02 1.6171763712041556E-02 1.6100237756222817E-02 + 1.6028963442927008E-02 1.5957939959380503E-02 1.5887166500714818E-02 1.5816642270496048E-02 1.5746366471300649E-02 + 1.5676338334443481E-02 1.5606557087114385E-02 1.5537021963301201E-02 1.5467732204671481E-02 1.5398687058670067E-02 + 1.5329885775491657E-02 1.5261327628288133E-02 1.5193011886486685E-02 1.5124937826119390E-02 1.5057104729728750E-02 + 1.4989511883482902E-02 1.4922158581013752E-02 1.4855044131364051E-02 1.4788167841797982E-02 1.4721529025465604E-02 + 1.4655127001220920E-02 1.4588961089708462E-02 1.4523030622488765E-02 1.4457334940584191E-02 1.4391873384600637E-02 + 1.4326645300340692E-02 1.4261650038870916E-02 1.4196886950957967E-02 1.4132355401667915E-02 1.4068054760112129E-02 + 1.4003984396335418E-02 1.3940143684847443E-02 1.3876532004744951E-02 1.3813148733421387E-02 1.3749993265376429E-02 + 1.3687064994246639E-02 1.3624363315666223E-02 1.3561887629320936E-02 1.3499637338911713E-02 1.3437611845216598E-02 + 1.3375810568031025E-02 1.3314232922510641E-02 1.3252878326750603E-02 1.3191746202428098E-02 1.3130835973546452E-02 + 1.3070147063469846E-02 1.3009678911996791E-02 1.2949430953637025E-02 1.2889402625840343E-02 1.2829593369061112E-02 + 1.2770002624805899E-02 1.2710629837404397E-02 1.2651474462299523E-02 1.2592535951076999E-02 1.2533813757986519E-02 + 1.2475307339759109E-02 1.2417016152755473E-02 1.2358939659394897E-02 1.2301077328544095E-02 1.2243428626388565E-02 + 1.2185993021680332E-02 1.2128769984969482E-02 1.2071758985333959E-02 1.2014959500667966E-02 1.1958371011193519E-02 + 1.1901992995731336E-02 1.1845824935038727E-02 1.1789866311575971E-02 1.1734116605104702E-02 1.1678575306820925E-02 + 1.1623241906548556E-02 1.1568115893615040E-02 1.1513196758948199E-02 1.1458483995188395E-02 1.1403977090901983E-02 + 1.1349675548692005E-02 1.1295578866208430E-02 1.1241686541648721E-02 1.1187998074566529E-02 1.1134512965423326E-02 + 1.1081230711521832E-02 1.1028150823895674E-02 1.0975272806876331E-02 1.0922596166174251E-02 1.0870120408351919E-02 + 1.0817845039767442E-02 1.0765769567066940E-02 1.0713893505924482E-02 1.0662216367159623E-02 1.0610737662335872E-02 + 1.0559456904082812E-02 1.0508373603196473E-02 1.0457487274233682E-02 1.0406797436782717E-02 1.0356303606545344E-02 + 1.0306005300150590E-02 1.0255902034884603E-02 1.0205993325349130E-02 1.0156278692418379E-02 1.0106757658766993E-02 + 1.0057429744150687E-02 1.0008294469060510E-02 9.9593513546439114E-03 9.9105999181754532E-03 9.8620396862327507E-03 + 9.8136701834536343E-03 9.7654909329245570E-03 9.7175014581991313E-03 9.6697012832737527E-03 9.6220899276382669E-03 + 9.5746669224514927E-03 9.5274317938006739E-03 9.4803840672725952E-03 9.4335232688125357E-03 9.3868489244878870E-03 + 9.3403605559117496E-03 9.2940576974596349E-03 9.2479398763638219E-03 9.2020066200782721E-03 9.1562574563856802E-03 + 9.1106919120352414E-03 9.0653095127191125E-03 9.0201097929831758E-03 8.9750922815203370E-03 8.9302565072227821E-03 + 8.8856019991794613E-03 8.8411282845051974E-03 8.7968348923701655E-03 8.7527213571143309E-03 8.7087872085288235E-03 + 8.6650319765441720E-03 8.6214551912094147E-03 8.5780563796610948E-03 8.5348350741095928E-03 8.4917908084485762E-03 + 8.4489231132397792E-03 8.4062315191336563E-03 8.3637155568959762E-03 8.3213747534517449E-03 8.2792086436894504E-03 + 8.2372167608717687E-03 8.1953986360869622E-03 8.1537538005301731E-03 8.1122817854460683E-03 8.0709821174449695E-03 + 8.0298543337681393E-03 7.9888979669414176E-03 7.9481125484611448E-03 7.9074976098884309E-03 7.8670526828236494E-03 + 7.8267772934896805E-03 7.7866709812753933E-03 7.7467332779296034E-03 7.7069637152435075E-03 7.6673618250791007E-03 + 7.6279271382771879E-03 7.5886591837959518E-03 7.5495574998752533E-03 7.5106216185456143E-03 7.4718510718876727E-03 + 7.4332453919977119E-03 7.3948041090619709E-03 7.3565267545778823E-03 7.3184128657418955E-03 7.2804619748743950E-03 + 7.2426736143364461E-03 7.2050473165208642E-03 7.1675826110078377E-03 7.1302790318026272E-03 7.0931361151484905E-03 + 7.0561533937022608E-03 7.0193304001599085E-03 6.9826666673165529E-03 6.9461617242468077E-03 6.9098151074349721E-03 + 6.8736263523263199E-03 6.8375949919907489E-03 6.8017205595976953E-03 6.7660025883886765E-03 6.7304406071740418E-03 + 6.6950341548668753E-03 6.6597827662962421E-03 6.6246859751096223E-03 6.5897433150454744E-03 6.5549543199584026E-03 + 6.5203185185657986E-03 6.4858354522646187E-03 6.4515046554722115E-03 6.4173256625466232E-03 6.3832980079844464E-03 + 6.3494212255761759E-03 6.3156948466748346E-03 6.2821184127014196E-03 6.2486914587545194E-03 6.2154135200658822E-03 + 6.1822841320750953E-03 6.1493028285532899E-03 6.1164691441613515E-03 6.0837826200104096E-03 6.0512427922505014E-03 + 6.0188491972180506E-03 5.9866013714604009E-03 5.9544988490418021E-03 5.9225411679858049E-03 5.8907278693587205E-03 + 5.8590584906000436E-03 5.8275325693411756E-03 5.7961496434865735E-03 5.7649092476315276E-03 5.7338109232888557E-03 + 5.7028542117758246E-03 5.6720386520079788E-03 5.6413637831740073E-03 5.6108291447523806E-03 5.5804342721671608E-03 + 5.5501787105286899E-03 5.5200620016803053E-03 5.4900836862786292E-03 5.4602433052866666E-03 5.4305404000051958E-03 + 5.4009745069972239E-03 5.3715451750665100E-03 5.3422519468914083E-03 5.3130943651140258E-03 5.2840719727149802E-03 + 5.2551843124301429E-03 5.2264309241511608E-03 5.1978113586095649E-03 5.1693251602796956E-03 5.1409718740042668E-03 + 5.1127510450465347E-03 5.0846622174786473E-03 5.0567049358449696E-03 5.0288787519160230E-03 5.0011832125906172E-03 + 4.9736178652011733E-03 4.9461822575221056E-03 4.9188759352696140E-03 4.8916984477678400E-03 4.8646493481395549E-03 + 4.8377281859553201E-03 4.8109345112757737E-03 4.7842678746203215E-03 4.7577278237210998E-03 4.7313139127421414E-03 + 4.7050256964783904E-03 4.6788627274395042E-03 4.6528245586522224E-03 4.6269107436390563E-03 4.6011208324282854E-03 + 4.5754543841596091E-03 4.5499109556163247E-03 4.5244901024787771E-03 4.4991913809665773E-03 4.4740143478754308E-03 + 4.4489585558352696E-03 4.4240235690486355E-03 4.3992089465969423E-03 4.3745142475771206E-03 4.3499390316610285E-03 + 4.3254828586996386E-03 4.3011452855017335E-03 4.2769258801663200E-03 4.2528242048241547E-03 4.2288398221754196E-03 + 4.2049722956071841E-03 4.1812211877526317E-03 4.1575860613950241E-03 4.1340664871242511E-03 4.1106620308790235E-03 + 4.0873722592675143E-03 4.0641967395340269E-03 4.0411350374219149E-03 4.0181867217936327E-03 3.9953513659887127E-03 + 3.9726285399957553E-03 3.9500178145007682E-03 3.9275187609002192E-03 3.9051309482813494E-03 3.8828539516458233E-03 + 3.8606873473973915E-03 3.8386307097763124E-03 3.8166836137735315E-03 3.7948456350909371E-03 3.7731163464994966E-03 + 3.7514953291793826E-03 3.7299821628511490E-03 3.7085764262401832E-03 3.6872776988134321E-03 3.6660855608325179E-03 + 3.6449995889407945E-03 3.6240193705921811E-03 3.6031444891039084E-03 3.5823745278413567E-03 3.5617090709722638E-03 + 3.5411477032412679E-03 3.5206900061349839E-03 3.5003355727367641E-03 3.4800839904265356E-03 3.4599348474219213E-03 + 3.4398877327321696E-03 3.4199422351413270E-03 3.4000979431868376E-03 3.3803544536229850E-03 3.3607113588214727E-03 + 3.3411682519847263E-03 3.3217247271921753E-03 3.3023803774585919E-03 3.2831347984030716E-03 3.2639875907103278E-03 + 3.2449383518729901E-03 3.2259866802715823E-03 3.2071321751826042E-03 3.1883744340984979E-03 3.1697130597315259E-03 + 3.1511476568997438E-03 3.1326778283952859E-03 3.1143031779331631E-03 3.0960233101042628E-03 3.0778378271070755E-03 + 3.0597463387524908E-03 3.0417484542143011E-03 3.0238437817066495E-03 3.0060319304063845E-03 2.9883125104058950E-03 + 2.9706851287765496E-03 2.9531494024175884E-03 2.9357049450503404E-03 2.9183513704946142E-03 2.9010882934751717E-03 + 2.8839153296527065E-03 2.8668320913342537E-03 2.8498382023297380E-03 2.8329332811744294E-03 2.8161169473575774E-03 + 2.7993888213126115E-03 2.7827485236131574E-03 2.7661956742895430E-03 2.7497299017105788E-03 2.7333508301758862E-03 + 2.7170580849639778E-03 2.7008512923331089E-03 2.6847300779011952E-03 2.6686940694209400E-03 2.6527428999691531E-03 + 2.6368761997178298E-03 2.6210935998434580E-03 2.6053947325046633E-03 2.5897792285454750E-03 2.5742467233614234E-03 + 2.5587968549256896E-03 2.5434292593688370E-03 2.5281435738296019E-03 2.5129394364689153E-03 2.4978164835120914E-03 + 2.4827743579252360E-03 2.4678127027301226E-03 2.4529311601073321E-03 2.4381293732331504E-03 2.4234069863201778E-03 + 2.4087636411278630E-03 2.3941989881367054E-03 2.3797126755443002E-03 2.3653043516421199E-03 2.3509736657164860E-03 + 2.3367202681109649E-03 2.3225438062432179E-03 2.3084439380042635E-03 2.2944203169226163E-03 2.2804725974430334E-03 + 2.2666004350419388E-03 2.2528034855810665E-03 2.2390814041727642E-03 2.2254338541333012E-03 2.2118604950797267E-03 + 2.1983609876567931E-03 2.1849349935499436E-03 2.1715821741821266E-03 2.1583021925743883E-03 2.1450947172466503E-03 + 2.1319594140465727E-03 2.1188959498761131E-03 2.1059039926788568E-03 2.0929832094952801E-03 2.0801332711899321E-03 + 2.0673538515704063E-03 2.0546446227581961E-03 2.0420052579388152E-03 2.0294354313226746E-03 2.0169348156884375E-03 + 2.0045030896152206E-03 1.9921399323015866E-03 1.9798450221608613E-03 1.9676180386663912E-03 1.9554586623509443E-03 + 1.9433665717844639E-03 1.9313414531386835E-03 1.9193829911060751E-03 1.9074908703944566E-03 1.8956647768011243E-03 + 1.8839043971455611E-03 1.8722094158967499E-03 1.8605795267028352E-03 1.8490144197800861E-03 1.8375137861885353E-03 + 1.8260773180144166E-03 1.8147047079639859E-03 1.8033956477538275E-03 1.7921498370545633E-03 1.7809669721652835E-03 + 1.7698467504383014E-03 1.7587888702703942E-03 1.7477930300585582E-03 1.7368589293827836E-03 1.7259862732580985E-03 + 1.7151747642760533E-03 1.7044241060941677E-03 1.6937340034142098E-03 1.6831041603685970E-03 1.6725342842448881E-03 + 1.6620240854506496E-03 1.6515732728894718E-03 1.6411815564848842E-03 1.6308486472345364E-03 1.6205742550298627E-03 + 1.6103580947166047E-03 1.6001998821829613E-03 1.5900993325603549E-03 1.5800561620645088E-03 1.5700700879268741E-03 + 1.5601408258778520E-03 1.5502680981398940E-03 1.5404516261037923E-03 1.5306911311445833E-03 1.5209863357006164E-03 + 1.5113369632408355E-03 1.5017427353067668E-03 1.4922033813940777E-03 1.4827186284097633E-03 1.4732882039360793E-03 + 1.4639118366040330E-03 1.4545892557871701E-03 1.4453201897261707E-03 1.4361043741672290E-03 1.4269415418429376E-03 + 1.4178314264999814E-03 1.4087737629348083E-03 1.3997682860970762E-03 1.3908147317492228E-03 1.3819128409276317E-03 + 1.3730623524688147E-03 1.3642630062539972E-03 1.3555145431676336E-03 1.3468167037710946E-03 1.3381692311857782E-03 + 1.3295718717170467E-03 1.3210243703030678E-03 1.3125264728556932E-03 1.3040779263374638E-03 1.2956784769224030E-03 + 1.2873278748854562E-03 1.2790258718478038E-03 1.2707722187545402E-03 1.2625666675518776E-03 1.2544089711760725E-03 + 1.2462988814116159E-03 1.2382361555418843E-03 1.2302205504853990E-03 1.2222518231505745E-03 1.2143297314302314E-03 + 1.2064540342149605E-03 1.1986244888557397E-03 1.1908408594900107E-03 1.1831029083175487E-03 1.1754103981631216E-03 + 1.1677630928031138E-03 1.1601607568399069E-03 1.1526031536514276E-03 1.1450900535877478E-03 1.1376212243005130E-03 + 1.1301964344433370E-03 1.1228154535904188E-03 1.1154780516915211E-03 1.1081839991187242E-03 1.1009330712576191E-03 + 1.0937250415376687E-03 1.0865596843345577E-03 1.0794367750217367E-03 1.0723560888049263E-03 1.0653174029164325E-03 + 1.0583204977242353E-03 1.0513651523776917E-03 1.0444511469431955E-03 1.0375782624451226E-03 1.0307462793812032E-03 + 1.0239549816236585E-03 1.0172041545339543E-03 1.0104935828881172E-03 1.0038230523510272E-03 9.9719234955969373E-04 + 9.9060126024622911E-04 9.8404957474493770E-04 9.7753708340652182E-04 9.7106357652747288E-04 9.6462884532518825E-04 + 9.5823268193354267E-04 9.5187487730726298E-04 9.4555522806185775E-04 9.3927352949464671E-04 9.3302957736593462E-04 + 9.2682316834151695E-04 9.2065409995473440E-04 9.1452216843525389E-04 9.0842717640218448E-04 9.0236892410211792E-04 + 8.9634721267759974E-04 8.9036184415870691E-04 8.8441262100160756E-04 8.7849934584227846E-04 8.7262182595460958E-04 + 8.6677986689310713E-04 8.6097327509300665E-04 8.5520185786462850E-04 8.4946542255025790E-04 8.4376377800269914E-04 + 8.3809673611750797E-04 8.3246410767219569E-04 8.2686570430925456E-04 8.2130133853248240E-04 8.1577082252395124E-04 + 8.1027397116850372E-04 8.0481060095132190E-04 7.9938052778472568E-04 7.9398356842880083E-04 7.8861954049163187E-04 + 7.8328826094824114E-04 7.7798955053551581E-04 7.7272323029059639E-04 7.6748912116762389E-04 7.6228704495683443E-04 + 7.5711682428162164E-04 7.5197828085864086E-04 7.4687124109906928E-04 7.4179553054820688E-04 7.3675097511513164E-04 + 7.3173740152724829E-04 7.2675463733067654E-04 7.2180250893465864E-04 7.1688084824612051E-04 7.1198948527566763E-04 + 7.0712825079402531E-04 7.0229697637783474E-04 6.9749549407510571E-04 6.9272363590647105E-04 6.8798123813157603E-04 + 6.8326813550170556E-04 6.7858416355806551E-04 6.7392915862975449E-04 6.6930295717844651E-04 6.6470539678066824E-04 + 6.6013631787511921E-04 6.5559555990466194E-04 6.5108296308807293E-04 6.4659836841624648E-04 6.4214161670738030E-04 + 6.3771255091720164E-04 6.3331101561590007E-04 6.2893685484773608E-04 6.2458991341379484E-04 6.2027003687448255E-04 + 6.1597707034775114E-04 6.1171086199415857E-04 6.0747126046875491E-04 6.0325811431967652E-04 5.9907127284137911E-04 + 5.9491058606888107E-04 5.9077590335855450E-04 5.8666707790902897E-04 5.8258396240704665E-04 5.7852640981444117E-04 + 5.7449427382239514E-04 5.7048740884697022E-04 5.6650566842694316E-04 5.6254891062675386E-04 5.5861699211508492E-04 + 5.5470977017409509E-04 5.5082710279818255E-04 5.4696884847663400E-04 5.4313486551034863E-04 5.3932501602736650E-04 + 5.3553916083511608E-04 5.3177716144226243E-04 5.2803888005602381E-04 5.2432417907743046E-04 5.2063292170272362E-04 + 5.1696497376931406E-04 5.1332020023364254E-04 5.0969846673770312E-04 5.0609963960596225E-04 5.0252358509675777E-04 + 4.9897017113080706E-04 4.9543926720414897E-04 4.9193074233000792E-04 4.8844446619194918E-04 4.8498030913855995E-04 + 4.8153814122117088E-04 4.7811783492945757E-04 4.7471926336036609E-04 4.7134229949402753E-04 4.6798681696148754E-04 + 4.6465269004498580E-04 4.6133979252927469E-04 4.5804800130764878E-04 4.5477719303168852E-04 4.5152724455105401E-04 + 4.4829803335518225E-04 4.4508943757017169E-04 4.4190133464774801E-04 4.3873360573544679E-04 4.3558613097775703E-04 + 4.3245879100775630E-04 4.2935146708356558E-04 4.2626404094846211E-04 4.2319639405494257E-04 4.2014841125896586E-04 + 4.1711997627638279E-04 4.1411097343101752E-04 4.1112128765627767E-04 4.0815080412208280E-04 4.0519940853301169E-04 + 4.0226698899143473E-04 3.9935343283018616E-04 3.9645862797608290E-04 3.9358246295230173E-04 3.9072482628930863E-04 + 3.8788560779503027E-04 3.8506469876393220E-04 3.8226199005786469E-04 3.7947737311944981E-04 3.7671073996992235E-04 + 3.7396198244579298E-04 3.7123099430422750E-04 3.6851766998073767E-04 3.6582190377970034E-04 3.6314359057020425E-04 + 3.6048262578715682E-04 3.5783890450752110E-04 3.5521232429906708E-04 3.5260278268162295E-04 3.5001017731528598E-04 + 3.4743440640992815E-04 3.4487536872943096E-04 3.4233296252788751E-04 3.3980708904449971E-04 3.3729764882964216E-04 + 3.3480454281133729E-04 3.3232767245976684E-04 3.2986693970971716E-04 3.2742224613645238E-04 3.2499349631438546E-04 + 3.2258059383233692E-04 3.2018344280751102E-04 3.1780194788034202E-04 3.1543601394457064E-04 3.1308554623248145E-04 + 3.1075045212229408E-04 3.0843063832109758E-04 3.0612601204922852E-04 3.0383648103774342E-04 3.0156195308162647E-04 + 2.9930233693011813E-04 2.9705754271700332E-04 2.9482748018361260E-04 2.9261205957417435E-04 2.9041119162849955E-04 + 2.8822478698362249E-04 2.8605275777464736E-04 2.8389501683854298E-04 2.8175147687200456E-04 2.7962205106208494E-04 + 2.7750665307553095E-04 2.7540519633435892E-04 2.7331759623537073E-04 2.7124376826150796E-04 2.6918362798825616E-04 + 2.6713709146494426E-04 2.6510407521134296E-04 2.6308449537219017E-04 2.6107827047974514E-04 2.5908531861801933E-04 + 2.5710555815907922E-04 2.5513890793843003E-04 2.5318528722816010E-04 2.5124461490308713E-04 2.4931681245118898E-04 + 2.4740180051948448E-04 2.4549950020632058E-04 2.4360983305424732E-04 2.4173272086703963E-04 2.3986808562945629E-04 + 2.3801585123085832E-04 2.3617594097845011E-04 2.3434827861710386E-04 2.3253278832633851E-04 2.3072939438348195E-04 + 2.2893802176836221E-04 2.2715859671930337E-04 2.2539104513114578E-04 2.2363529332274120E-04 2.2189126803697607E-04 + 2.2015889597314290E-04 2.1843810498605281E-04 2.1672882361808575E-04 2.1503098027892686E-04 2.1334450378948978E-04 + 2.1166932338491034E-04 2.1000536812938565E-04 2.0835256864591288E-04 2.0671085573147410E-04 2.0508016023883133E-04 + 2.0346041342230009E-04 2.0185154693544842E-04 2.0025349215978733E-04 1.9866618237461808E-04 1.9708955058441542E-04 + 1.9552353001759068E-04 1.9396805428918831E-04 1.9242305740693389E-04 1.9088847301511230E-04 1.8936423694490589E-04 + 1.8785028436209207E-04 1.8634655079913394E-04 1.8485297217201989E-04 1.8336948463976786E-04 1.8189602444405731E-04 + 1.8043252948477280E-04 1.7897893716861153E-04 1.7753518526967066E-04 1.7610121193118415E-04 1.7467695541012403E-04 + 1.7326235447349614E-04 1.7185734901358955E-04 1.7046187862166049E-04 1.6907588325032423E-04 1.6769930320625930E-04 + 1.6633207879797760E-04 1.6497415121347880E-04 1.6362546229685716E-04 1.6228595376103456E-04 1.6095556767256415E-04 + 1.5963424644057546E-04 1.5832193237380967E-04 1.5701856898956310E-04 1.5572410003671336E-04 1.5443846929216368E-04 + 1.5316162087098881E-04 1.5189349922589370E-04 1.5063404861781181E-04 1.4938321480184361E-04 1.4814094338795188E-04 + 1.4690718015512955E-04 1.4568187120994944E-04 1.4446496298753381E-04 1.4325640165374306E-04 1.4205613511240653E-04 + 1.4086411079479658E-04 1.3968027642136403E-04 1.3850458003199088E-04 1.3733696990153645E-04 1.3617739430703171E-04 + 1.3502580296352595E-04 1.3388214516508673E-04 1.3274637051834525E-04 1.3161842893860730E-04 1.3049827046484312E-04 + 1.2938584549275381E-04 1.2828110541496842E-04 1.2718400136586149E-04 1.2609448477916399E-04 1.2501250739149370E-04 + 1.2393802096558097E-04 1.2287097792857570E-04 1.2181133131545625E-04 1.2075903404228985E-04 1.1971403931945278E-04 + 1.1867630064821204E-04 1.1764577147387975E-04 1.1662240617598278E-04 1.1560615939069745E-04 1.1459698576559518E-04 + 1.1359484023329578E-04 1.1259967800966399E-04 1.1161145418041203E-04 1.1063012499639391E-04 1.0965564666108207E-04 + 1.0868797550253976E-04 1.0772706812338814E-04 1.0677288140064045E-04 1.0582537202297824E-04 1.0488449803769265E-04 + 1.0395021717936181E-04 1.0302248740310041E-04 1.0210126693441738E-04 1.0118651421442021E-04 1.0027818763822288E-04 + 9.9376246834406069E-05 9.8480651078856050E-05 9.7591359908833050E-05 9.6708333121054866E-05 9.5831530638512037E-05 + 9.4960912628439250E-05 9.4096440127704344E-05 9.3238073953790456E-05 9.2385775177452654E-05 9.1539505121013937E-05 + 9.0699225153916229E-05 8.9864897142062929E-05 8.9036483500216568E-05 8.8213946541168230E-05 8.7397248823259784E-05 + 8.6586353148818945E-05 8.5781222299240048E-05 8.4981819770126515E-05 8.4188109322966560E-05 8.3400054721197267E-05 + 8.2617619966509389E-05 8.1840769297402964E-05 8.1069466872226581E-05 8.0303677751538140E-05 7.9543367012457284E-05 + 7.8788499825958202E-05 7.8039041594114969E-05 7.7294957948728678E-05 7.6556214392007528E-05 7.5822777486693292E-05 + 7.5094613595265251E-05 7.4371689254598962E-05 7.3653971225426452E-05 7.2941426466419286E-05 7.2234021866783950E-05 + 7.1531725355922452E-05 7.0834504577300928E-05 7.0142327392937556E-05 6.9455161882653907E-05 6.8772976250769066E-05 + 6.8095738864647136E-05 6.7423418840389476E-05 6.6755985114204153E-05 6.6093406834678826E-05 6.5435653361727445E-05 + 6.4782694115849099E-05 6.4134498883899381E-05 6.3491037942099596E-05 6.2852281481861475E-05 6.2218199900573843E-05 + 6.1588763800915264E-05 6.0963943790962922E-05 6.0343711020659852E-05 5.9728036901001536E-05 5.9116892841891879E-05 + 5.8510250453383429E-05 5.7908081544787207E-05 5.7310357884137898E-05 5.6717051930713093E-05 5.6128136205137909E-05 + 5.5543583300860223E-05 5.4963366005750456E-05 5.4387457301027930E-05 5.3815830087147381E-05 5.3248458082306620E-05 + 5.2685314892313716E-05 5.2126374260016311E-05 5.1571610117697979E-05 5.1020996576339006E-05 5.0474507669061328E-05 + 4.9932118297892948E-05 4.9393803138773436E-05 4.8859537051963374E-05 4.8329295081403137E-05 4.7803052391941828E-05 + 4.7280784255941968E-05 4.6762466581127186E-05 4.6248075134606139E-05 4.5737585862653441E-05 4.5230974890340783E-05 + 4.4728218412704883E-05 4.4229292893909768E-05 4.3734175226976936E-05 4.3242842239882895E-05 4.2755270935226795E-05 + 4.2271438489243866E-05 4.1791322104978263E-05 4.1314899393323893E-05 4.0842148212223256E-05 4.0373046422053655E-05 + 3.9907572052970995E-05 3.9445703304165475E-05 3.8987418365048786E-05 3.8532695950034482E-05 3.8081514863246699E-05 + 3.7633853969629539E-05 3.7189692299700869E-05 3.6749009048343648E-05 3.6311783370446872E-05 3.5877995043613114E-05 + 3.5447623799360942E-05 3.5020649481173229E-05 3.4597052093749576E-05 3.4176811801865110E-05 3.3759908705445763E-05 + 3.3346323607404812E-05 3.2936037148820910E-05 3.2529030126602168E-05 3.2125283494499429E-05 3.1724778323405004E-05 + 3.1327495757512862E-05 3.0933417470507514E-05 3.0542525035198470E-05 3.0154800178024728E-05 2.9770224778768228E-05 + 2.9388780795149466E-05 2.9010450383317726E-05 2.8635216067756361E-05 2.8263060332150290E-05 2.7893965809928346E-05 + 2.7527915284418640E-05 2.7164891583610004E-05 2.6804877840787897E-05 2.6447857416984129E-05 2.6093813685030472E-05 + 2.5742730164204200E-05 2.5394590519948280E-05 2.5049378435397423E-05 2.4707077987615730E-05 2.4367673360749062E-05 + 2.4031148796636739E-05 2.3697488680020458E-05 2.3366677538664855E-05 2.3038699895991920E-05 2.2713540742105689E-05 + 2.2391185071504901E-05 2.2071617975617076E-05 2.1754824686001609E-05 2.1440790574215452E-05 2.1129500989708378E-05 + 2.0820941806653939E-05 2.0515098818083761E-05 2.0211957947311377E-05 1.9911505254759610E-05 1.9613726914782176E-05 + 1.9318609159767981E-05 1.9026138651507841E-05 1.8736301993313977E-05 1.8449085923570118E-05 1.8164477315335054E-05 + 1.7882463127127176E-05 1.7603030468621381E-05 1.7326166757610477E-05 1.7051859399570134E-05 1.6780095932426830E-05 + 1.6510864026459127E-05 1.6244151414196806E-05 1.5979946056494158E-05 1.5718236118733853E-05 1.5459009794111406E-05 + 1.5202255405696354E-05 1.4947961406965123E-05 1.4696116294807780E-05 1.4446708857422410E-05 1.4199728000211400E-05 + 1.3955162690485633E-05 1.3713002023745994E-05 1.3473235223296680E-05 1.3235851541899337E-05 1.3000840573183775E-05 + 1.2768191955603704E-05 1.2537895418525268E-05 1.2309940817799511E-05 1.2084318134779030E-05 1.1861017370533018E-05 + 1.1640028903862023E-05 1.1421343100066381E-05 1.1204950439949809E-05 1.0990841528489818E-05 1.0779007083502077E-05 + 1.0569437881923910E-05 1.0362125034633866E-05 1.0157059640393157E-05 9.9542329212201784E-06 9.7536362222522629E-06 + 9.5552609827806518E-06 9.3590987652799964E-06 9.1651413806963258E-06 8.9733806620257285E-06 8.7838085641804204E-06 + 8.5964171637831507E-06 8.4111986175941034E-06 8.2281452563641859E-06 8.0472495886795539E-06 7.8685041741708536E-06 + 7.6919016932311520E-06 7.5174349468682627E-06 7.3450968060899480E-06 7.1748803544440327E-06 7.0067787965831476E-06 + 6.8407854124087610E-06 6.6768936016577257E-06 6.5150968837331785E-06 6.3553888415628490E-06 6.1977632979110292E-06 + 6.0422141527675618E-06 5.8887354011624889E-06 5.7373211571966985E-06 5.5879656539589619E-06 5.4406631848875268E-06 + 5.2954083001431386E-06 5.1521955952710054E-06 5.0110197764761500E-06 4.8718756685143753E-06 4.7347582103773801E-06 + 4.5996624182472447E-06 4.4665835470109922E-06 4.3355168930994802E-06 4.2064578711800449E-06 4.0794020141595778E-06 + 3.9543449604480745E-06 3.8312824620901245E-06 3.7102104578383303E-06 3.5911249512968709E-06 3.4740220641312847E-06 + 3.3588980361173452E-06 3.2457492075093251E-06 3.1345720572677033E-06 3.0253632120179230E-06 2.9181193820693130E-06 + 2.8128373958807527E-06 2.7095142000599741E-06 2.6081468401488327E-06 2.5087325148657285E-06 2.4112685436671541E-06 + 2.3157523443791496E-06 2.2221814532936109E-06 2.1305535251220797E-06 2.0408663150974894E-06 1.9531177363756853E-06 + 1.8673058071552822E-06 1.7834286549266451E-06 1.7014845260846086E-06 1.6214717860211688E-06 1.5433889050964955E-06 + 1.4672345073628105E-06 1.3930073167167920E-06 1.3207061737136239E-06 1.2503300385051756E-06 1.1818779905884912E-06 + 1.1153492230561063E-06 1.0507430680260568E-06 9.8805896349977339E-07 9.2729646779407697E-07 8.6845525971273560E-07 + 8.1153513860511003E-07 7.5653602627359874E-07 7.0345796452646941E-07 6.5230111405359654E-07 6.0306575697210114E-07 + 5.5575229702980064E-07 5.1036126297865710E-07 4.6689330482026230E-07 4.2534918510898311E-07 3.8572979439765676E-07 + 3.4803614599398123E-07 3.1226937620679805E-07 2.7843075391534082E-07 2.4652165860478284E-07 2.1654358577854651E-07 + 1.8849816439302362E-07 1.6238714771865175E-07 1.3821241363224033E-07 1.1597598302703102E-07 9.5679967979399388E-08 + 7.7326610321206874E-08 6.0918287349453169E-08 4.6457502479425140E-08 3.3946885568115651E-08 2.3389222608041433E-08 + 1.4787363212879796E-08 8.1443101296552468E-09 3.4632003676553971E-09 7.4729909408923743E-10 -1.7026714163125078E-19 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 1.0000000000000000E+20 + 3.3484312211186324E+02 3.3185422449762558E+02 3.2888834091361184E+02 3.2594533724941260E+02 3.2302507950002177E+02 + 3.2012742914663505E+02 3.1725225798690889E+02 3.1439943391754008E+02 3.1156882345368416E+02 3.0876029329501654E+02 + 3.0597371033070681E+02 3.0320893650696405E+02 3.0046584623282524E+02 2.9774430734877160E+02 2.9504418757313806E+02 + 2.9236535487628743E+02 2.8970767683900692E+02 2.8707101839102000E+02 2.8445525474429286E+02 2.8186025492031445E+02 + 2.7928588824977408E+02 2.7673202437500061E+02 2.7419853174894098E+02 2.7168527939420733E+02 2.6919214281255347E+02 + 2.6671899293515941E+02 2.6426570105248226E+02 2.6183213882121834E+02 2.5941817603778242E+02 2.5702368581783270E+02 + 2.5464854446043353E+02 2.5229262511038175E+02 2.4995580131753397E+02 2.4763794704353126E+02 2.4533893383597635E+02 + 2.4305863888409809E+02 2.4079693972447592E+02 2.3855371197446834E+02 2.3632883169539795E+02 2.3412217539730182E+02 + 2.3193361672814885E+02 2.2976303691689529E+02 2.2761031511662779E+02 2.2547532963464658E+02 2.2335795925228453E+02 + 2.2125808323111104E+02 2.1917557761708090E+02 2.1711032762819463E+02 2.1506221436260648E+02 2.1303111899416899E+02 + 2.1101692319667072E+02 2.0901950880524717E+02 2.0703875554196117E+02 2.0507455152598314E+02 2.0312678042155085E+02 + 2.0119532641176886E+02 1.9928007420001029E+02 1.9738090802383590E+02 1.9549771240447814E+02 1.9363037737537394E+02 + 1.9177878970708053E+02 1.8994283670480274E+02 1.8812240620988831E+02 1.8631738506975171E+02 1.8452766245736808E+02 + 1.8275313056022054E+02 1.8099367934451598E+02 1.7924919932255096E+02 1.7751958155489214E+02 1.7580471566981524E+02 + 1.7410449534358489E+02 1.7241881511823198E+02 1.7074756821973520E+02 1.6909064842908651E+02 1.6744795008257242E+02 + 1.6581936572883171E+02 1.6420479339654923E+02 1.6260413014839497E+02 1.6101727251332269E+02 1.5944411758024125E+02 + 1.5788456299803883E+02 1.5633850434358669E+02 1.5480584384881516E+02 1.5328648123098807E+02 1.5178031634623798E+02 + 1.5028724961208201E+02 1.4880718185941996E+02 1.4734001222006231E+02 1.4588564653527615E+02 1.4444398743331291E+02 + 1.4301493810291541E+02 1.4159840229500034E+02 1.4019428368710521E+02 1.3880248603277917E+02 1.3742291762851008E+02 + 1.3605548442978818E+02 1.3470009295110751E+02 1.3335665026481888E+02 1.3202506296297580E+02 1.3070523922078445E+02 + 1.2939708988144818E+02 1.2810052420873419E+02 1.2681545202153340E+02 1.2554178369097791E+02 1.2427942876865950E+02 + 1.2302829965794874E+02 1.2178830981908558E+02 1.2055937179374838E+02 1.1934139867223084E+02 1.1813430409054936E+02 + 1.1693800058634777E+02 1.1575240460555430E+02 1.1457743227442070E+02 1.1341299937289443E+02 1.1225902221972406E+02 + 1.1111541767164988E+02 1.0998210126457300E+02 1.0885899330544503E+02 1.0774601262118647E+02 1.0664307817828319E+02 + 1.0555010947514704E+02 1.0446702650461172E+02 1.0339374789528229E+02 1.0233019754337232E+02 1.0127629702583711E+02 + 1.0023196844081035E+02 9.9197134406696023E+01 9.8171717668907391E+01 9.7155640911255333E+01 9.6148830473788422E+01 + 9.5151211012752952E+01 9.4162707694846290E+01 9.3183246196658388E+01 9.2212752008291034E+01 9.1251151668413058E+01 + 9.0298373974199563E+01 8.9354346595038578E+01 8.8418997698794442E+01 8.7492255950548639E+01 8.6574049570033310E+01 + 8.5664308755286086E+01 8.4762964765862108E+01 8.3869948211648520E+01 8.2985190190064699E+01 8.2108622282295741E+01 + 8.1240175410690384E+01 8.0379783250406774E+01 7.9527379512644814E+01 7.8682897675449809E+01 7.7846271688667855E+01 + 7.7017435975832100E+01 7.6196324125737647E+01 7.5382873114991199E+01 7.4577019090962906E+01 7.3778698320451042E+01 + 7.2987847529436038E+01 7.2204403903534612E+01 7.1428303658739878E+01 7.0659486904222476E+01 6.9897892198596409E+01 + 6.9143458517643509E+01 6.8396125284306962E+01 6.7655832132567866E+01 6.6922518557352205E+01 6.6196126942369148E+01 + 6.5476598456874882E+01 6.4763874705537205E+01 6.4057897726820144E+01 6.3358609534234837E+01 6.2665952812376744E+01 + 6.1979872103953404E+01 6.1300311138634584E+01 6.0627214068266404E+01 5.9960525463877758E+01 5.9300189675222761E+01 + 5.8646152404607136E+01 5.7998360324247543E+01 5.7356759642852616E+01 5.6721296976634221E+01 5.6091919347633706E+01 + 5.5468573392927688E+01 5.4851207668289653E+01 5.4239770943059042E+01 5.3634211821467829E+01 5.3034479302621342E+01 + 5.2440522775326855E+01 5.1852291113870749E+01 5.1269735572710267E+01 5.0692806978589772E+01 5.0121456249802861E+01 + 4.9555634685178433E+01 4.8995293960660938E+01 4.8440385130734725E+01 4.7890862001125257E+01 4.7346677415537116E+01 + 4.6807784524029628E+01 4.6274136843866465E+01 4.5745688123282527E+01 4.5222391936576322E+01 4.4704204106723161E+01 + 4.4191079579233175E+01 4.3682973656513049E+01 4.3179841991626823E+01 4.2681640296187553E+01 4.2188324695586346E+01 + 4.1699852806509213E+01 4.1216181659914142E+01 4.0737268628536931E+01 4.0263071424841208E+01 3.9793547669602084E+01 + 3.9328655895068145E+01 3.8868355472469503E+01 3.8412605438723240E+01 3.7961365159413617E+01 3.7514594326747293E+01 + 3.7072252419021368E+01 3.6634300237157966E+01 3.6200698865345160E+01 3.5771409269097845E+01 3.5346392729761327E+01 + 3.4925610842401625E+01 3.4509024888544090E+01 3.4096597808243608E+01 3.3688292354904291E+01 3.3284071346754445E+01 + 3.2883897905368244E+01 3.2487735453389561E+01 3.2095547020307187E+01 3.1707297563448304E+01 3.1322951459725363E+01 + 3.0942473306011532E+01 3.0565827990255947E+01 3.0192980620728239E+01 2.9823896124472270E+01 2.9458541155591075E+01 + 2.9096881736225257E+01 2.8738884169587159E+01 2.8384515037963553E+01 2.8033741013456265E+01 2.7686529014584792E+01 + 2.7342847133872830E+01 2.7002663041036524E+01 2.6665944675118020E+01 2.6332660242625284E+01 2.6002777930168318E+01 + 2.5676266529825494E+01 2.5353095532286446E+01 2.5033234185976447E+01 2.4716651997188915E+01 2.4403318728460579E+01 + 2.4093204031317988E+01 2.3786278460408251E+01 2.3482512863560107E+01 2.3181878000878925E+01 2.2884344879452488E+01 + 2.2589884751453006E+01 2.2298468683705416E+01 2.2010068889289219E+01 2.1724657531190843E+01 2.1442206816399398E+01 + 2.1162689188095491E+01 2.0886077324068477E+01 2.0612343656538656E+01 2.0341461959373010E+01 2.0073405668363932E+01 + 1.9808148374495545E+01 1.9545663894641990E+01 1.9285926239417769E+01 1.9028909248295005E+01 1.8774588072938993E+01 + 1.8522937409961248E+01 1.8273932173285825E+01 1.8027547492971816E+01 1.7783758596766457E+01 1.7542540849602201E+01 + 1.7303870527439020E+01 1.7067723600782145E+01 1.6834076248067916E+01 1.6602904853829827E+01 1.6374185819681660E+01 + 1.6147895943305151E+01 1.5924012588257744E+01 1.5702512942104608E+01 1.5483374390626176E+01 1.5266574516715956E+01 + 1.5052090852793699E+01 1.4839901542170402E+01 1.4629984999580783E+01 1.4422319574283719E+01 1.4216883804914600E+01 + 1.4013656418040087E+01 1.3812616034692041E+01 1.3613742061959977E+01 1.3417013929274184E+01 1.3222411094603265E+01 + 1.3029913196487053E+01 1.2839500052842213E+01 1.2651151331285389E+01 1.2464847626369984E+01 1.2280569345746986E+01 + 1.2098297004945632E+01 1.1918011291708789E+01 1.1739693056351767E+01 1.1563322996974886E+01 1.1388882798847648E+01 + 1.1216353820215771E+01 1.1045717584863963E+01 1.0876955780810405E+01 1.0710050188553520E+01 1.0544982657733946E+01 + 1.0381735735522504E+01 1.0220291748998742E+01 1.0060633183008839E+01 9.9027426787986172E+00 9.7466029109996342E+00 + 9.5921968092594003E+00 9.4395077516757873E+00 9.2885189884160937E+00 9.1392139199291282E+00 8.9915760955705757E+00 + 8.8455890488748299E+00 8.7012367221950520E+00 8.5585032941221257E+00 8.4173728939147274E+00 8.2778297939791763E+00 + 8.1398584084802810E+00 8.0034430951097537E+00 7.8685687463801930E+00 7.7352203108933288E+00 7.6033827549466171E+00 + 7.4730411810349144E+00 7.3441808266408861E+00 7.2167868397007995E+00 7.0908450040815367E+00 6.9663410086582287E+00 + 6.8432606162891796E+00 6.7215897195004528E+00 6.6013143391500293E+00 6.4824203805235650E+00 6.3648944636161469E+00 + 6.2487229884819948E+00 6.1338924758086009E+00 6.0203895695689900E+00 5.9082009948949521E+00 5.7973135054171125E+00 + 5.6877143826086645E+00 5.5793907498185549E+00 5.4723298486914489E+00 5.3665190378830063E+00 5.2619457143002499E+00 + 5.1585974360691376E+00 5.0564621105007790E+00 4.9555275521213380E+00 4.8557816878098157E+00 4.7572125558304892E+00 + 4.6598081967402250E+00 4.5635569222118546E+00 4.4684472407026377E+00 4.3744676237062494E+00 4.2816066494762559E+00 + 4.1898530021076601E+00 4.0991953383989639E+00 4.0096226760525013E+00 3.9211241004298518E+00 3.8336887072924726E+00 + 3.7473056938170894E+00 3.6619643577450147E+00 3.5776539454101179E+00 3.4943641361067206E+00 3.4120845684101626E+00 + 3.3308049310963028E+00 3.2505150092615684E+00 3.1712046835095680E+00 3.0928637638122156E+00 3.0154825495028987E+00 + 2.9390512092332997E+00 2.8635599949483344E+00 2.7889992500485596E+00 2.7153593857626248E+00 2.6426308191103285E+00 + 2.5708043620863803E+00 2.4998707137149734E+00 2.4298206606176884E+00 2.3606450762198912E+00 2.2923348708222933E+00 + 2.2248810546502433E+00 2.1582749055579606E+00 2.0925076345053704E+00 2.0275705355864972E+00 1.9634549852779990E+00 + 1.9001523710250570E+00 1.8376542581849857E+00 1.7759523710477501E+00 1.7150384063688655E+00 1.6549041397798649E+00 + 1.5955414250454674E+00 1.5369421055045964E+00 1.4790982660937455E+00 1.4220020586157414E+00 1.3656456406781636E+00 + 1.3100212446988020E+00 1.2551211772152455E+00 1.2009377168635933E+00 1.1474634349362689E+00 1.0946908923344170E+00 + 1.0426126837581262E+00 9.9122147482968026E-01 9.4051000145187558E-01 8.9047095765095130E-01 8.4109737007010144E-01 + 7.9238219081152006E-01 7.4431842901032075E-01 6.9689916101977345E-01 6.5011751809864482E-01 6.0396662562514025E-01 + 5.5843990142543265E-01 5.1353068317221584E-01 4.6923237285061015E-01 4.2553843616418369E-01 3.8244237154943922E-01 + 3.3993773797415577E-01 2.9801829659505696E-01 2.5667776077195964E-01 2.1590990479431788E-01 1.7570856333172355E-01 + 1.3606758523737009E-01 9.6980934844854746E-02 5.8442701701815147E-02 2.0446955127393411E-02 -1.7012177836318625E-02 + -5.3940512949931213E-02 -9.0343867151623319E-02 -1.2622789705901194E-01 -1.6159819925227409E-01 -1.9646036721460866E-01 + -2.3081993976220808E-01 -2.6468240153770872E-01 -2.9805325091499113E-01 -3.3093779002057744E-01 -3.6334131563155647E-01 + -3.9526910188707853E-01 -4.2672637115961343E-01 -4.5771829452924118E-01 -4.8825006688901673E-01 -5.1832665878489848E-01 + -5.4795308081543670E-01 -5.7713430475073557E-01 -6.0587525335359094E-01 -6.3418080606947436E-01 -6.6205585312587090E-01 + -6.8950507057797139E-01 -7.1653319079013633E-01 -7.4314489928916971E-01 -7.6934483523855435E-01 -7.9513761020721974E-01 + -8.2052780006791748E-01 -8.4551982999678577E-01 -8.7011815896046873E-01 -8.9432720159339552E-01 -9.1815132864981019E-01 + -9.4159489648419237E-01 -9.6466218731951037E-01 -9.8735738682637308E-01 -1.0096846952362328E+00 -1.0316482708818466E+00 + -1.0532522305643213E+00 -1.0745006875990892E+00 -1.0953976498998876E+00 -1.1159470745575979E+00 -1.1361529170830347E+00 + -1.1560190933198364E+00 -1.1755494798483430E+00 -1.1947479586975316E+00 -1.2136182814360592E+00 -1.2321641872250408E+00 + -1.2503894000811118E+00 -1.2682976065226386E+00 -1.2858924559324763E+00 -1.3031776103480115E+00 -1.3201565817759806E+00 + -1.3368329016789766E+00 -1.3532100751687286E+00 -1.3692915719297205E+00 -1.3850808281389584E+00 -1.4005812918118226E+00 + -1.4157962559121928E+00 -1.4307290524536977E+00 -1.4453829795984867E+00 -1.4597613020344089E+00 -1.4738672619917983E+00 + -1.4877040813292484E+00 -1.5012748711125705E+00 -1.5145827658813051E+00 -1.5276308682196076E+00 -1.5404222490190278E+00 + -1.5529599660430269E+00 -1.5652470300553700E+00 -1.5772863787298073E+00 -1.5890809600003304E+00 -1.6006336915991879E+00 + -1.6119474613307432E+00 -1.6230251515347083E+00 -1.6338695759293249E+00 -1.6444835070234927E+00 -1.6548697164328421E+00 + -1.6650309472351355E+00 -1.6749699142536616E+00 -1.6846893331304569E+00 -1.6941918336397896E+00 -1.7034800310132610E+00 + -1.7125565303174684E+00 -1.7214239096618811E+00 -1.7300847204566061E+00 -1.7385415200374921E+00 -1.7467967664078650E+00 + -1.7548529251441287E+00 -1.7627124440219324E+00 -1.7703777453444420E+00 -1.7778512262200652E+00 -1.7851352936766318E+00 + -1.7922322453102324E+00 -1.7991444043866280E+00 -1.8058740701360636E+00 -1.8124235177678978E+00 -1.8187950047645138E+00 + -1.8249907773341352E+00 -1.8310130014530939E+00 -1.8368638590301827E+00 -1.8425455090918268E+00 -1.8480600879815035E+00 + -1.8534097207586100E+00 -1.8585965030244476E+00 -1.8636224761449702E+00 -1.8684896884051556E+00 -1.8732001664756806E+00 + -1.8777559156505899E+00 -1.8821589352592858E+00 -1.8864111804596750E+00 -1.8905145740744806E+00 -1.8944710382836465E+00 + -1.8982824748836211E+00 -1.9019507654866710E+00 -1.9054777901312674E+00 -1.9088653729697562E+00 -1.9121153241253404E+00 + -1.9152294468049520E+00 -1.9182095249989881E+00 -1.9210573236254680E+00 -1.9237746096053692E+00 -1.9263630848498656E+00 + -1.9288244524221914E+00 -1.9311604032982714E+00 -1.9333726103432023E+00 -1.9354627284325341E+00 -1.9374324172202992E+00 + -1.9392832645849680E+00 -1.9410168719139105E+00 -1.9426348243573810E+00 -1.9441386899729585E+00 -1.9455300230928254E+00 + -1.9468103720567718E+00 -1.9479812280155950E+00 -1.9490440926316608E+00 -1.9500004512601483E+00 -1.9508517731472494E+00 + -1.9515995182703056E+00 -1.9522451283247320E+00 -1.9527900055266749E+00 -1.9532355565341706E+00 -1.9535831726438828E+00 + -1.9538342299596827E+00 -1.9539900989847325E+00 -1.9540521220773777E+00 -1.9540216169757685E+00 -1.9538999007946161E+00 + -1.9536882761943211E+00 -1.9533880314887588E+00 -1.9530004524224205E+00 -1.9525267887579716E+00 -1.9519682780587178E+00 + -1.9513261530758035E+00 -1.9506016329207043E+00 -1.9497959232343438E+00 -1.9489102294475986E+00 -1.9479457150604389E+00 + -1.9469035415493425E+00 -1.9457848621919418E+00 -1.9445908174273430E+00 -1.9433225349699692E+00 -1.9419811442666257E+00 + -1.9405677283928309E+00 -1.9390833766938147E+00 -1.9375291675865278E+00 -1.9359061673972007E+00 -1.9342154320652467E+00 + -1.9324580144037560E+00 -1.9306349272210983E+00 -1.9287471899564472E+00 -1.9267958105255694E+00 -1.9247817854868035E+00 + -1.9227061039945372E+00 -1.9205697439679172E+00 -1.9183736552135262E+00 -1.9161187901178003E+00 -1.9138060902542680E+00 + -1.9114364864772908E+00 -1.9090109047439370E+00 -1.9065302532743564E+00 -1.9039954221038751E+00 -1.9014073005343044E+00 + -1.8987667676819799E+00 -1.8960746925780381E+00 -1.8933319413618852E+00 -1.8905393574131264E+00 -1.8876977740915364E+00 + -1.8848080213459693E+00 -1.8818709195204761E+00 -1.8788872794818712E+00 -1.8758579108239939E+00 -1.8727835965157318E+00 + -1.8696651162828501E+00 -1.8665032442062772E+00 -1.8632987453572434E+00 -1.8600523758840590E+00 -1.8567648919304298E+00 + -1.8534370202407513E+00 -1.8500694897421432E+00 -1.8466630219960414E+00 -1.8432183300697778E+00 -1.8397361193323787E+00 + -1.8362170934337112E+00 -1.8326619287607928E+00 -1.8290713055189984E+00 -1.8254458958721878E+00 -1.8217863640158181E+00 + -1.8180933684082727E+00 -1.8143675606017495E+00 -1.8106095726539078E+00 -1.8068200378561012E+00 -1.8029995819370537E+00 + -1.7991488231447506E+00 -1.7952683756137320E+00 -1.7913588424745837E+00 -1.7874208137975929E+00 -1.7834548787987210E+00 + -1.7794616195676241E+00 -1.7754416111688829E+00 -1.7713954258813494E+00 -1.7673236218112394E+00 -1.7632267493158436E+00 + -1.7591053561805869E+00 -1.7549599835078400E+00 -1.7507911657996142E+00 -1.7465994358088419E+00 -1.7423853097856266E+00 + -1.7381493005407203E+00 -1.7338919169460669E+00 -1.7296136616117306E+00 -1.7253150309102114E+00 -1.7209965203532442E+00 + -1.7166586072341536E+00 -1.7123017688988182E+00 -1.7079264776839163E+00 -1.7035332000278698E+00 -1.6991223967519271E+00 + -1.6946945275938636E+00 -1.6902500342718716E+00 -1.6857893604091387E+00 -1.6813129440396182E+00 -1.6768212176787776E+00 + -1.6723146094722823E+00 -1.6677935433020832E+00 -1.6632584299463982E+00 -1.6587096805006925E+00 -1.6541477008025298E+00 + -1.6495728915282011E+00 -1.6449856500147269E+00 -1.6403863668398704E+00 -1.6357754235781496E+00 -1.6311532007817700E+00 + -1.6265200740998942E+00 -1.6218764143263422E+00 -1.6172225897504879E+00 -1.6125589600750361E+00 -1.6078858792457003E+00 + -1.6032036992006988E+00 -1.5985127672708632E+00 -1.5938134262191528E+00 -1.5891060170015014E+00 -1.5843908706025747E+00 + -1.5796683149427786E+00 -1.5749386751106500E+00 -1.5702022718912547E+00 -1.5654594217796189E+00 -1.5607104399637908E+00 + -1.5559556308129268E+00 -1.5511952976741117E+00 -1.5464297404915932E+00 -1.5416592551524173E+00 -1.5368841335496422E+00 + -1.5321046666248110E+00 -1.5273211340224440E+00 -1.5225338159463138E+00 -1.5177429887678915E+00 -1.5129489250673072E+00 + -1.5081518941946701E+00 -1.5033521627375608E+00 -1.4985499889482834E+00 -1.4937456307102657E+00 -1.4889393423230770E+00 + -1.4841313745274809E+00 -1.4793219754666413E+00 -1.4745113891644626E+00 -1.4696998537046384E+00 -1.4648876060734279E+00 + -1.4600748798995999E+00 -1.4552619054892324E+00 -1.4504489110421070E+00 -1.4456361196670027E+00 -1.4408237504483035E+00 + -1.4360120208160239E+00 -1.4312011450529614E+00 -1.4263913343564949E+00 -1.4215827981705611E+00 -1.4167757402201131E+00 + -1.4119703617153923E+00 -1.4071668617836544E+00 -1.4023654366309206E+00 -1.3975662795461807E+00 -1.3927695823774722E+00 + -1.3879755309040445E+00 -1.3831843094937208E+00 -1.3783961001930549E+00 -1.3736110822644068E+00 -1.3688294322765624E+00 + -1.3640513255799300E+00 -1.3592769312853248E+00 -1.3545064179665514E+00 -1.3497399516759467E+00 -1.3449776958633215E+00 + -1.3402198116823205E+00 -1.3354664583672340E+00 -1.3307177902229730E+00 -1.3259739607814718E+00 -1.3212351211375184E+00 + -1.3165014200034326E+00 -1.3117730040766067E+00 -1.3070500175451878E+00 -1.3023326009855409E+00 -1.2976208938075013E+00 + -1.2929150331464019E+00 -1.2882151539203495E+00 -1.2835213893232205E+00 -1.2788338696200339E+00 -1.2741527224609299E+00 + -1.2694780740920193E+00 -1.2648100486339682E+00 -1.2601487681394923E+00 -1.2554943531076772E+00 -1.2508469209677622E+00 + -1.2462065872357799E+00 -1.2415734658693574E+00 -1.2369476688598910E+00 -1.2323293062322769E+00 -1.2277184866421873E+00 + -1.2231153156184515E+00 -1.2185198973302687E+00 -1.2139323342651911E+00 -1.2093527270890290E+00 -1.2047811746357655E+00 + -1.2002177744819342E+00 -1.1956626211711046E+00 -1.1911158082031201E+00 -1.1865774274100334E+00 -1.1820475688991681E+00 + -1.1775263211407925E+00 -1.1730137711819055E+00 -1.1685100035572735E+00 -1.1640151017732498E+00 -1.1595291477117715E+00 + -1.1550522216515922E+00 -1.1505844024172218E+00 -1.1461257672136180E+00 -1.1416763913668879E+00 -1.1372363489943038E+00 + -1.1328057127349909E+00 -1.1283845537370736E+00 -1.1239729417681621E+00 -1.1195709450296472E+00 -1.1151786301762439E+00 + -1.1107960626240090E+00 -1.1064233063984199E+00 -1.1020604241524872E+00 -1.0977074772377062E+00 -1.0933645255245257E+00 + -1.0890316275796259E+00 -1.0847088407255845E+00 -1.0803962209904134E+00 -1.0760938231250234E+00 -1.0718017006371012E+00 + -1.0675199057232425E+00 -1.0632484893983662E+00 -1.0589875014587093E+00 -1.0547369905276516E+00 -1.0504970040166943E+00 + -1.0462675881088255E+00 -1.0420487879554079E+00 -1.0378406475162356E+00 -1.0336432096199286E+00 -1.0294565159956601E+00 + -1.0252806072381657E+00 -1.0211155227750943E+00 -1.0169613012087126E+00 -1.0128179799536603E+00 -1.0086855953820342E+00 + -1.0045641828222205E+00 -1.0004537765319113E+00 -9.9635440973710010E-01 -9.9226611494051320E-01 -9.8818892349698295E-01 + -9.8412286577190633E-01 -9.8006797119863498E-01 -9.7602426811927612E-01 -9.7199178407895492E-01 -9.6797054591438048E-01 + -9.6396057934677259E-01 -9.5996190921814417E-01 -9.5597455946118992E-01 -9.5199855296870073E-01 -9.4803391207730558E-01 + -9.4408065832842392E-01 -9.4013881225818763E-01 -9.3620839357086638E-01 -9.3228942116336178E-01 -9.2838191283648341E-01 + -9.2448588616075877E-01 -9.2060135777668173E-01 -9.1672834342524112E-01 -9.1286685807366041E-01 -9.0901691595407985E-01 + -9.0517853016225458E-01 -9.0135171390797386E-01 -8.9753647928359737E-01 -8.9373283760304079E-01 -8.8994079947509130E-01 + -8.8616037479764476E-01 -8.8239157239095678E-01 -8.7863440141350446E-01 -8.7488886976272695E-01 -8.7115498467760044E-01 + -8.6743275274713316E-01 -8.6372217981158295E-01 -8.6002327096252762E-01 -8.5633603143488501E-01 -8.5266046532153517E-01 + -8.4899657611271140E-01 -8.4534436670109647E-01 -8.4170383918239500E-01 -8.3807499525687867E-01 -8.3445783652717620E-01 + -8.3085236359507653E-01 -8.2725857650433687E-01 -8.2367647475424211E-01 -8.2010605698870920E-01 -8.1654732182903644E-01 + -8.1300026752523236E-01 -8.0946489147290779E-01 -8.0594119055977720E-01 -8.0242916116895580E-01 -7.9892879877511425E-01 + -7.9544009920223946E-01 -7.9196305761330577E-01 -7.8849766846794977E-01 -7.8504392576100890E-01 -7.8160182302993553E-01 + -7.7817135283612515E-01 -7.7475250847174271E-01 -7.7134528225927301E-01 -7.6794966597610126E-01 -7.6456565097508000E-01 + -7.6119322818493818E-01 -7.5783238752267656E-01 -7.5448311996874717E-01 -7.5114541524683931E-01 -7.4781926268819254E-01 + -7.4450465123510468E-01 -7.4120156932676318E-01 -7.3791000480920821E-01 -7.3462994622800726E-01 -7.3136138104577952E-01 + -7.2810429636581686E-01 -7.2485867894077283E-01 -7.2162451493475199E-01 -7.1840179033603058E-01 -7.1519049146487490E-01 + -7.1199060372898149E-01 -7.0880211220903933E-01 -7.0562500167204500E-01 -7.0245925620718064E-01 -6.9930486014879778E-01 + -6.9616179778106124E-01 -6.9303005264989603E-01 -6.8990960800916146E-01 -6.8680044682489105E-01 -6.8370255130975588E-01 + -6.8061590431826768E-01 -6.7754048828264080E-01 -6.7447628507099655E-01 -6.7142327628569987E-01 -6.6838144327134807E-01 + -6.6535076654288527E-01 -6.6233122763842123E-01 -6.5932280731445336E-01 -6.5632548592466133E-01 -6.5333924359037154E-01 + -6.5036406019961690E-01 -6.4739991473753222E-01 -6.4444678757691043E-01 -6.4150465795814160E-01 -6.3857350488230924E-01 + -6.3565330714337021E-01 -6.3274404321142119E-01 -6.2984569103922361E-01 -6.2695822963605297E-01 -6.2408163698949792E-01 + -6.2121589089462559E-01 -6.1836096896055670E-01 -6.1551684837329712E-01 -6.1268350624132550E-01 -6.0986092029145544E-01 + -6.0704906741924614E-01 -6.0424792434926666E-01 -6.0145746764013930E-01 -5.9867767333118371E-01 -5.9590851780961396E-01 + -5.9314997765214916E-01 -5.9040202878979453E-01 -5.8766464700274057E-01 -5.8493780792648553E-01 -5.8222148658562123E-01 + -5.7951565874879607E-01 -5.7682029997413653E-01 -5.7413538534566411E-01 -5.7146088981594123E-01 -5.6879678821316992E-01 + -5.6614305467024872E-01 -5.6349966443909782E-01 -5.6086659217214840E-01 -5.5824381221846386E-01 -5.5563129881561080E-01 + -5.5302902608940541E-01 -5.5043696739704084E-01 -5.4785509755968054E-01 -5.4528339043953356E-01 -5.4272181975180211E-01 + -5.4017035911787692E-01 -5.3762898197801345E-01 -5.3509766127979475E-01 -5.3257637123440116E-01 -5.3006508510236139E-01 + -5.2756377606388749E-01 -5.2507241721635389E-01 -5.2259098136778814E-01 -5.2011944127379584E-01 -5.1765777049038131E-01 + -5.1520594181606172E-01 -5.1276392798039439E-01 -5.1033170164517028E-01 -5.0790923508089014E-01 -5.0549650091915277E-01 + -5.0309347215255196E-01 -5.0070012119746576E-01 -4.9831642041734381E-01 -4.9594234211901811E-01 -4.9357785812326749E-01 + -4.9122294099514702E-01 -4.8887756325347209E-01 -4.8654169700834721E-01 -4.8421531433107051E-01 -4.8189838724730549E-01 + -4.7959088721270376E-01 -4.7729278678005194E-01 -4.7500405807113766E-01 -4.7272467296394227E-01 -4.7045460330461336E-01 + -4.6819382090921896E-01 -4.6594229694333694E-01 -4.6370000399449773E-01 -4.6146691386522376E-01 -4.5924299826378512E-01 + -4.5702822887886235E-01 -4.5482257731620679E-01 -4.5262601470443253E-01 -4.5043851352905934E-01 -4.4826004540233477E-01 + -4.4609058192472506E-01 -4.4393009468273886E-01 -4.4177855507493141E-01 -4.3963593443946619E-01 -4.3750220501215076E-01 + -4.3537733834550180E-01 -4.3326130598417295E-01 -4.3115407947080919E-01 -4.2905563005622754E-01 -4.2696592931959126E-01 + -4.2488494931487170E-01 -4.2281266158203690E-01 -4.2074903766202509E-01 -4.1869404910199320E-01 -4.1664766706613404E-01 + -4.1460986340197964E-01 -4.1258061003982233E-01 -4.1055987855394077E-01 -4.0854764052886239E-01 -4.0654386756013139E-01 + -4.0454853078196773E-01 -4.0256160233509586E-01 -4.0058305407672967E-01 -3.9861285766143417E-01 -3.9665098475924460E-01 + -3.9469740705843126E-01 -3.9275209570994252E-01 -3.9081502316981248E-01 -3.8888616127438813E-01 -3.8696548179599999E-01 + -3.8505295652905902E-01 -3.8314855726153135E-01 -3.8125225530478885E-01 -3.7936402334985958E-01 -3.7748383329234703E-01 + -3.7561165705871258E-01 -3.7374746660197783E-01 -3.7189123376543265E-01 -3.7004293030338170E-01 -3.6820252891828514E-01 + -3.6637000168657896E-01 -3.6454532072093060E-01 -3.6272845816924715E-01 -3.6091938596729517E-01 -3.5911807632574566E-01 + -3.5732450199713939E-01 -3.5553863527223023E-01 -3.5376044847967658E-01 -3.5198991398698909E-01 -3.5022700386736111E-01 + -3.4847169079053358E-01 -3.4672394760065084E-01 -3.4498374682800353E-01 -3.4325106104545583E-01 -3.4152586286805020E-01 + -3.3980812453851478E-01 -3.3809781919259252E-01 -3.3639491980381997E-01 -3.3469939916518598E-01 -3.3301123011633210E-01 + -3.3133038554672545E-01 -3.2965683790184169E-01 -3.2799056078554967E-01 -3.2633152733159632E-01 -3.2467971062086798E-01 + -3.2303508378275281E-01 -3.2139761999024807E-01 -3.1976729194818654E-01 -3.1814407370620296E-01 -3.1652793859755968E-01 + -3.1491886000940045E-01 -3.1331681138241896E-01 -3.1172176609789315E-01 -3.1013369742834251E-01 -3.0855257958758231E-01 + -3.0697838623112961E-01 -3.0541109107071474E-01 -3.0385066787179088E-01 -3.0229709025771223E-01 -3.0075033205981844E-01 + -2.9921036768484427E-01 -2.9767717112767533E-01 -2.9615071643918395E-01 -2.9463097772722818E-01 -2.9311792887943172E-01 + -2.9161154428033093E-01 -2.9011179855937769E-01 -2.8861866605998421E-01 -2.8713212118900944E-01 -2.8565213841097820E-01 + -2.8417869189712058E-01 -2.8271175658414077E-01 -2.8125130734137960E-01 -2.7979731887864001E-01 -2.7834976596749128E-01 + -2.7690862344259987E-01 -2.7547386577992478E-01 -2.7404546845837485E-01 -2.7262340661172496E-01 -2.7120765532546132E-01 + -2.6979818974885605E-01 -2.6839498509357734E-01 -2.6699801616218205E-01 -2.6560725896577825E-01 -2.6422268892375300E-01 + -2.6284428150351308E-01 -2.6147201224355598E-01 -2.6010585666279334E-01 -2.5874579014377902E-01 -2.5739178898594917E-01 + -2.5604382898565248E-01 -2.5470188600792448E-01 -2.5336593598120366E-01 -2.5203595474262086E-01 -2.5071191827354727E-01 + -2.4939380314423382E-01 -2.4808158555172358E-01 -2.4677524175836335E-01 -2.4547474809788064E-01 -2.4418008073039199E-01 + -2.4289121623235768E-01 -2.4160813145800264E-01 -2.4033080300825335E-01 -2.3905920755413654E-01 -2.3779332183265040E-01 + -2.3653312234943696E-01 -2.3527858625475764E-01 -2.3402969070589036E-01 -2.3278641271388381E-01 -2.3154872935842927E-01 + -2.3031661778883078E-01 -2.2909005486329481E-01 -2.2786901829898193E-01 -2.2665348556541129E-01 -2.2544343408622250E-01 + -2.2423884135618222E-01 -2.2303968493936224E-01 -2.2184594205939323E-01 -2.2065759098250901E-01 -2.1947460950519695E-01 + -2.1829697546815333E-01 -2.1712466678191070E-01 -2.1595766137196820E-01 -2.1479593700270924E-01 -2.1363947231188346E-01 + -2.1248824548788783E-01 -2.1134223478980246E-01 -2.1020141854665439E-01 -2.0906577502825577E-01 -2.0793528260408209E-01 + -2.0680992021346900E-01 -2.0568966646444142E-01 -2.0457450003697863E-01 -2.0346439967871191E-01 -2.0235934401487152E-01 + -2.0125931199779679E-01 -2.0016428288391877E-01 -1.9907423570207711E-01 -1.9798914954910554E-01 -1.9690900359378022E-01 + -1.9583377682378650E-01 -1.9476344876142074E-01 -1.9369799898600240E-01 -1.9263740694462814E-01 -1.9158165215664547E-01 + -1.9053071420788062E-01 -1.8948457245672701E-01 -1.8844320697633121E-01 -1.8740659767951642E-01 -1.8637472443335448E-01 + -1.8534756717179868E-01 -1.8432510590479104E-01 -1.8330732036179292E-01 -1.8229419115319989E-01 -1.8128569853156168E-01 + -1.8028182278026447E-01 -1.7928254425401499E-01 -1.7828784334044290E-01 -1.7729770025598079E-01 -1.7631209602768114E-01 + -1.7533101128751602E-01 -1.7435442673419149E-01 -1.7338232313894206E-01 -1.7241468124045481E-01 -1.7145148182878003E-01 + -1.7049270624785245E-01 -1.6953833554118186E-01 -1.6858835082406101E-01 -1.6764273327759871E-01 -1.6670146399782881E-01 + -1.6576452433471336E-01 -1.6483189594933439E-01 -1.6390356029769149E-01 -1.6297949890430591E-01 -1.6205969336406323E-01 + -1.6114412513204485E-01 -1.6023277609609474E-01 -1.5932562824428481E-01 -1.5842266344047232E-01 -1.5752386361864842E-01 + -1.5662921078023018E-01 -1.5573868674193644E-01 -1.5485227391699036E-01 -1.5396995462166493E-01 -1.5309171112697270E-01 + -1.5221752576863826E-01 -1.5134738095501887E-01 -1.5048125886688435E-01 -1.4961914242416199E-01 -1.4876101427693253E-01 + -1.4790685709770243E-01 -1.4705665362331416E-01 -1.4621038664349165E-01 -1.4536803876382329E-01 -1.4452959333741877E-01 + -1.4369503336926856E-01 -1.4286434193116726E-01 -1.4203750215692038E-01 -1.4121449717547385E-01 -1.4039531012854486E-01 + -1.3957992467999608E-01 -1.3876832422803201E-01 -1.3796049223462623E-01 -1.3715641223159844E-01 -1.3635606768912359E-01 + -1.3555944226698191E-01 -1.3476651994031533E-01 -1.3397728449626781E-01 -1.3319171979027020E-01 -1.3240980973897315E-01 + -1.3163153815816356E-01 -1.3085688920992919E-01 -1.3008584718224350E-01 -1.2931839624835084E-01 -1.2855452064937123E-01 + -1.2779420468601149E-01 -1.2703743251970501E-01 -1.2628418879783579E-01 -1.2553445812242575E-01 -1.2478822505099740E-01 + -1.2404547420168774E-01 -1.2330619025893340E-01 -1.2257035772865559E-01 -1.2183796172672648E-01 -1.2110898717394616E-01 + -1.2038341900224292E-01 -1.1966124220853844E-01 -1.1894244184519277E-01 -1.1822700278202440E-01 -1.1751491057175945E-01 + -1.1680615045804943E-01 -1.1610070774675869E-01 -1.1539856780539609E-01 -1.1469971600859927E-01 -1.1400413771800863E-01 + -1.1331181877884040E-01 -1.1262274480314495E-01 -1.1193690146398402E-01 -1.1125427449596371E-01 -1.1057484959616476E-01 + -1.0989861260133274E-01 -1.0922554965097063E-01 -1.0855564672078037E-01 -1.0788888984652083E-01 -1.0722526512442433E-01 + -1.0656475857445387E-01 -1.0590735649289376E-01 -1.0525304531455926E-01 -1.0460181137378710E-01 -1.0395364106439957E-01 + -1.0330852083966428E-01 -1.0266643704226709E-01 -1.0202737641209329E-01 -1.0139132568087654E-01 -1.0075827153672490E-01 + -1.0012820072645631E-01 -9.9501100055540873E-02 -9.8876956189032972E-02 -9.8255756295795582E-02 -9.7637487405079409E-02 + -9.7022136553914506E-02 -9.6409690837322842E-02 -9.5800137408182606E-02 -9.5193463253455332E-02 -9.4589655956600183E-02 + -9.3988702844727628E-02 -9.3390591299341283E-02 -9.2795308758596359E-02 -9.2202842679450142E-02 -9.1613180485941581E-02 + -9.1026310046308262E-02 -9.0442219024736176E-02 -8.9860895142103520E-02 -8.9282326175263396E-02 -8.8706499881681763E-02 + -8.8133404117484285E-02 -8.7563027026809931E-02 -8.6995356609410851E-02 -8.6430380920904479E-02 -8.5868088072132712E-02 + -8.5308466120902204E-02 -8.4751503340884729E-02 -8.4197188152974778E-02 -8.3645508887874420E-02 -8.3096453931158942E-02 + -8.2550011723424202E-02 -8.2006170622127131E-02 -8.1464919304815503E-02 -8.0926246469643928E-02 -8.0390140773800731E-02 + -7.9856590928354024E-02 -7.9325585698912141E-02 -7.8797113742230501E-02 -7.8271164126555187E-02 -7.7747725827591666E-02 + -7.7226787824545909E-02 -7.6708339149958144E-02 -7.6192368889533582E-02 -7.5678865999076167E-02 -7.5167819924593940E-02 + -7.4659219919908773E-02 -7.4153055281734007E-02 -7.3649315359717624E-02 -7.3147989530026769E-02 -7.2649067123787464E-02 + -7.2152537875277672E-02 -7.1658391342536848E-02 -7.1166617135884513E-02 -7.0677204917578659E-02 -7.0190144343883959E-02 + -6.9705425138930216E-02 -6.9223037295687628E-02 -6.8742970682458424E-02 -6.8265215218897737E-02 -6.7789760876020649E-02 + -6.7316597590363750E-02 -6.6845715466063813E-02 -6.6377104755795974E-02 -6.5910755634225410E-02 -6.5446658326371449E-02 + -6.4984803108456446E-02 -6.4525180196861931E-02 -6.4067780063549018E-02 -6.3612593222201266E-02 -6.3159610149760681E-02 + -6.2708821373298959E-02 -6.2260217469789603E-02 -6.1813788935566216E-02 -6.1369526599739210E-02 -6.0927421236982776E-02 + -6.0487463623087823E-02 -6.0049644583372128E-02 -5.9613954992836789E-02 -5.9180385627000509E-02 -5.8748927661238376E-02 + -5.8319572132179275E-02 -5.7892310111110505E-02 -5.7467132718282049E-02 -5.7044031107233120E-02 -5.6622996380219497E-02 + -5.6204020001408096E-02 -5.5787093285573949E-02 -5.5372207596236046E-02 -5.4959354345811617E-02 -5.4548524951861591E-02 + -5.4139710876317103E-02 -5.3732903829629010E-02 -5.3328095416487968E-02 -5.2925277289845418E-02 -5.2524441150566738E-02 + -5.2125578681445732E-02 -5.1728681693580664E-02 -5.1333742144974770E-02 -5.0940751927361264E-02 -5.0549702980333108E-02 + -5.0160587290948744E-02 -4.9773396807166741E-02 -4.9388123679747833E-02 -4.9004760115623255E-02 -4.8623298290986432E-02 + -4.8243730429601610E-02 -4.7866048802251281E-02 -4.7490245622452569E-02 -4.7116313371760643E-02 -4.6744244507424489E-02 + -4.6374031487561369E-02 -4.6005666817935609E-02 -4.5639143050773809E-02 -4.5274452665836649E-02 -4.4911588467068067E-02 + -4.4550543163134060E-02 -4.4191309492596663E-02 -4.3833880240739476E-02 -4.3478248230792792E-02 -4.3124406235263320E-02 + -4.2772347346822726E-02 -4.2422064535830119E-02 -4.2073550819314159E-02 -4.1726799260214234E-02 -4.1381802937504659E-02 + -4.1038554958419633E-02 -4.0697048655890564E-02 -4.0357277277411771E-02 -4.0019234116561199E-02 -3.9682912513290404E-02 + -3.9348305802860327E-02 -3.9015407419899055E-02 -3.8684210939841229E-02 -3.8354709885817510E-02 -3.8026897826945065E-02 + -3.7700768378596497E-02 -3.7376315134481836E-02 -3.7053531849123987E-02 -3.6732412342673958E-02 -3.6412950413271181E-02 + -3.6095139904475798E-02 -3.5778974706035874E-02 -3.5464448671935461E-02 -3.5151555870088232E-02 -3.4840290368046485E-02 + -3.4530646237801763E-02 -3.4222617597006150E-02 -3.3916198609377828E-02 -3.3611383390982803E-02 -3.3308166316949134E-02 + -3.3006541704991003E-02 -3.2706503900671813E-02 -3.2408047295575143E-02 -3.2111166323809497E-02 -3.1815855374831919E-02 + -3.1522109116706151E-02 -3.1229922122949720E-02 -3.0939289013058376E-02 -3.0650204451993603E-02 -3.0362663129660149E-02 + -3.0076659756208133E-02 -2.9792189242944564E-02 -2.9509246437339008E-02 -2.9227826232840207E-02 -2.8947923568524617E-02 + -2.8669533392846575E-02 -2.8392650731565834E-02 -2.8117270742866875E-02 -2.7843388548803614E-02 -2.7570999317411193E-02 + -2.7300098262839259E-02 -2.7030680595166775E-02 -2.6762741651172352E-02 -2.6496276840071345E-02 -2.6231281559264824E-02 + -2.5967751252711627E-02 -2.5705681410215571E-02 -2.5445067507448453E-02 -2.5185905188319334E-02 -2.4928190116955327E-02 + -2.4671917967812696E-02 -2.4417084461909065E-02 -2.4163685366600740E-02 -2.3911716426633766E-02 -2.3661173589759978E-02 + -2.3412052779700654E-02 -2.3164349949490792E-02 -2.2918061099166425E-02 -2.2673182275841121E-02 -2.2429709496704236E-02 + -2.2187639011527618E-02 -2.1946967007797264E-02 -2.1707689719796731E-02 -2.1469803428679511E-02 -2.1233304449889655E-02 + -2.0998189118151833E-02 -2.0764453942763068E-02 -2.0532095393939871E-02 -2.0301109989053216E-02 -2.0071494293765080E-02 + -1.9843244896215344E-02 -1.9616358447959958E-02 -1.9390831722139016E-02 -1.9166661474658991E-02 -1.8943844510025797E-02 + -1.8722377680733433E-02 -1.8502257853339397E-02 -1.8283481994983333E-02 -1.8066047148033729E-02 -1.7849950358571679E-02 + -1.7635188720834308E-02 -1.7421759378571884E-02 -1.7209659482009265E-02 -1.6998886313021207E-02 -1.6789437190248065E-02 + -1.6581309453163266E-02 -1.6374500490453775E-02 -1.6169007740634418E-02 -1.5964828644207837E-02 -1.5761960797516163E-02 + -1.5560401802473074E-02 -1.5360149296190836E-02 -1.5161200966411673E-02 -1.4963554551453482E-02 -1.4767207787907509E-02 + -1.4572158587982269E-02 -1.4378404843355636E-02 -1.4185944494502559E-02 -1.3994775533085866E-02 -1.3804895994554469E-02 + -1.3616303941425937E-02 -1.3428997580541684E-02 -1.3242975108882395E-02 -1.3058234775428749E-02 -1.2874774881292107E-02 + -1.2692593764889229E-02 -1.2511689822716486E-02 -1.2332061557657148E-02 -1.2153707480326997E-02 -1.1976626154367953E-02 + -1.1800816196687870E-02 -1.1626276256746483E-02 -1.1453005067080777E-02 -1.1281001435576239E-02 -1.1110264193067957E-02 + -1.0940792224592304E-02 -1.0772584469603779E-02 -1.0605639897401075E-02 -1.0439957579345219E-02 -1.0275536637788359E-02 + -1.0112376230997621E-02 -9.9504755727341798E-03 -9.7898339324186123E-03 -9.6304506084414869E-03 -9.4723250146463121E-03 + -9.3154565978326963E-03 -9.1598448515589591E-03 -9.0054893262243620E-03 -8.8523896293496145E-03 -8.7005453981748720E-03 + -8.5499563935692979E-03 -8.4006223972803388E-03 -8.2525432466976547E-03 -8.1057188375082759E-03 -7.9601491211852594E-03 + -7.8158340927520237E-03 -7.6727738569419696E-03 -7.5309685444547711E-03 -7.3904183456807993E-03 -7.2511235109169805E-03 + -7.1130843444745162E-03 -6.9763012118330709E-03 -6.8407745662110381E-03 -6.7065048995480882E-03 -6.5734927651568574E-03 + -6.4417387779950198E-03 -6.3112436072082752E-03 -6.1820079948583916E-03 -6.0540327553789365E-03 -5.9273187524826682E-03 + -5.8018669130804152E-03 -5.6776782276271934E-03 -5.5547537427336870E-03 -5.4330945840824589E-03 -5.3127019407898301E-03 + -5.1935770596443004E-03 -5.0757212526259072E-03 -4.9591358972348011E-03 -4.8438224309071088E-03 -4.7297823710457185E-03 + -4.6170172955175082E-03 -4.5055288463474522E-03 -4.3953187328392967E-03 -4.2863887319423283E-03 -4.1787406860400089E-03 + -4.0723765132689039E-03 -3.9672981951394256E-03 -3.8635077819016883E-03 -3.7610073932663490E-03 -3.6597992190057602E-03 + -3.5598855209908542E-03 -3.4612686285161332E-03 -3.3639509423058957E-03 -3.2679349346204437E-03 -3.1732231496653619E-03 + -3.0798182055559696E-03 -2.9877227950413795E-03 -2.8969396740164896E-03 -2.8074716774907668E-03 -2.7193217145391846E-03 + -2.6324927687015201E-03 -2.5469879033560290E-03 -2.4628102532559936E-03 -2.3799630185649795E-03 -2.2984494841227277E-03 + -2.2182730115208014E-03 -2.1394370395889152E-03 -2.0619450946281971E-03 -1.9858007656984133E-03 -1.9110077157872534E-03 + -1.8375696961361525E-03 -1.7654905375815498E-03 -1.6947741510671120E-03 -1.6254245445518915E-03 -1.5574457747856839E-03 + -1.4908419871572812E-03 -1.4256174168409731E-03 -1.3617763816940150E-03 -1.2993232827254663E-03 -1.2382626291110701E-03 + -1.1785989600311189E-03 -1.1203369237339556E-03 -1.0634812580326339E-03 -1.0080367866066684E-03 -9.5400842076401131E-04 + -9.0140118793710210E-04 -8.5022012924092000E-04 -8.0047041617514855E-04 -7.5215730894083140E-04 -7.0528615703063216E-04 + -6.5986240833289570E-04 -6.1589161180824158E-04 -5.7337934617433719E-04 -5.3233132268808961E-04 -4.9275334489641825E-04 + -4.5465130924078601E-04 -4.1803122336462527E-04 -3.8289917505971571E-04 -3.4926130474767855E-04 -3.1712388540632973E-04 + -2.8649328609160160E-04 -2.5737597258467665E-04 -2.2977853658448654E-04 -2.0370762342668324E-04 -1.7916996052592366E-04 + -1.5617240581148456E-04 -1.3472191728999613E-04 -1.1482555374110526E-04 -9.6490516451555139E-05 -7.9724028435615066E-05 + -6.4533430652102954E-05 -5.0926190526629250E-05 -3.8909879791844062E-05 -2.8492175228713986E-05 -1.9680914484799163E-05 + -1.2483919917062078E-05 -6.9091738703023757E-06 -2.9647791926142165E-06 -6.5894750892967649E-07 1.1936520306921770E-16 -- GitLab From 3b7ebbb8dfe808265ab29fc30c04fe79b5ca0926 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Fri, 12 Oct 2018 13:26:40 -0600 Subject: [PATCH 088/362] new hyper examples --- doc/src/fix_hyper_local.txt | 15 + doc/src/hyper.txt | 18 +- doc/src/prd.txt | 5 +- examples/hyper/global.000000.jpg | Bin 0 -> 72470 bytes examples/hyper/global.003000.jpg | Bin 0 -> 71795 bytes examples/hyper/global.038000.jpg | Bin 0 -> 70395 bytes examples/hyper/global.059000.jpg | Bin 0 -> 71492 bytes examples/hyper/in.hyper.global | 24 +- examples/hyper/in.hyper.local | 41 +- examples/hyper/local.000000.jpg | Bin 0 -> 493761 bytes examples/hyper/local.000700.jpg | Bin 0 -> 490185 bytes examples/hyper/local.000800.jpg | Bin 0 -> 488885 bytes examples/hyper/local.001100.jpg | Bin 0 -> 490525 bytes examples/hyper/log.hyper.global.g++.4 | 1243 +++++++++++++++++++++++++ examples/hyper/log.hyper.local.g++.16 | 993 ++++++++++++++++++++ src/REPLICA/fix_hyper_local.cpp | 8 +- src/REPLICA/hyper.cpp | 18 +- 17 files changed, 2292 insertions(+), 73 deletions(-) create mode 100644 examples/hyper/global.000000.jpg create mode 100644 examples/hyper/global.003000.jpg create mode 100644 examples/hyper/global.038000.jpg create mode 100644 examples/hyper/global.059000.jpg create mode 100644 examples/hyper/local.000000.jpg create mode 100644 examples/hyper/local.000700.jpg create mode 100644 examples/hyper/local.000800.jpg create mode 100644 examples/hyper/local.001100.jpg create mode 100644 examples/hyper/log.hyper.global.g++.4 create mode 100644 examples/hyper/log.hyper.local.g++.16 diff --git a/doc/src/fix_hyper_local.txt b/doc/src/fix_hyper_local.txt index e4cbc42c7f..b8e5cf07da 100644 --- a/doc/src/fix_hyper_local.txt +++ b/doc/src/fix_hyper_local.txt @@ -216,6 +216,21 @@ each pair. E.g. something like 2x the cutoff of the interatomic potential. In practice a {Dcut} value of ~10 Angstroms seems to work well for many solid-state systems. +NOTE: You must also insure that ghost atom communication is performed +for a distance of at least {Dcut} + {cutevent} where {cutevent} = the +distance one or more atoms move (between quenched states) to be +considered an "event". It is an argument to the "compute +event/displace" command used to detect events. By default the ghost +communication distance is set by the pair_style cutoff, which will +typically be < {Dcut}. The "comm_modify cutoff"_comm_modify.html +command can be used to set the ghost cutoff explicitly, e.g. + +comm_modify cutoff 12.0 :pre + +This fix does not know the {cutevent} parameter, but uses half the +bond length as an estimate to warn if the ghost cutoff is not long +enough. + As described above the {alpha} argument is a pre-factor in the boostostat update equation for each bond's Cij prefactor. {Alpha} is specified in time units, similar to other thermostat or barostat diff --git a/doc/src/hyper.txt b/doc/src/hyper.txt index e862af2235..936fb665d3 100644 --- a/doc/src/hyper.txt +++ b/doc/src/hyper.txt @@ -17,15 +17,12 @@ Nevent = check for events every this many steps :l fix-ID = ID of a fix that applies a global or local bias potential, can be NULL :l compute-ID = ID of a compute that identifies when an event has occurred :l zero or more keyword/value pairs may be appended :l -keyword = {min} or {time} or {dump} or {rebond} :l +keyword = {min} or {dump} or {rebond} :l {min} values = etol ftol maxiter maxeval etol = stopping tolerance for energy, used in quenching ftol = stopping tolerance for force, used in quenching maxiter = max iterations of minimize, used in quenching maxeval = max number of force/energy evaluations, used in quenching - {time} value = {steps} or {clock} - {steps} = simulation runs for N timesteps (default) - {clock} = simulation runs until hyper time exceeds N timesteps {dump} value = dump-ID dump-ID = ID of dump to trigger whenever an event takes place {rebond} value = Nrebond @@ -73,9 +70,8 @@ that each timestep is effectively longer. PRD creates Nr replicas of the system and runs dynamics on each independently with a normal unbiased potential until an event occurs in one of the replicas. The time between events is reduced by a factor of Nr replicas. For both -methods, per wall-clock second, more physical time elapses and more -events occur. See the "prd"_prd.html doc page for more info about -PRD. +methods, per CPU second, more physical time elapses and more events +occur. See the "prd"_prd.html doc page for more info about PRD. An HD run has several stages, which are repeated each time an "event" occurs, as explained below. The logic for an HD run is as follows: @@ -146,14 +142,6 @@ As explained above, the {min} keyword can be used to specify parameters for the quench. Their meaning is the same as for the "minimize"_minimize.html command -The {time} keyword determines how the {N} timesteps argument is -interpreted. If {time} is set to {steps}, then hyperdynamics is run -for {N} timesteps. If the time acceleration provided by the bias -potential is 10x, then that is the same as running a normal (unbiased) -MD simulation for 10N steps. If {time} is set to {clock}, then -hyperdynamics would run for N/10 steps, since that would correspond to -an elapsed real time of N*dt. - The {dump} keyword can be used to trigger a specific dump command with the specified {dump-ID} to output a snapshot each time an event is detected. It can be specified multiple times with different {dump-ID} diff --git a/doc/src/prd.txt b/doc/src/prd.txt index 43c0d309c8..e1d6fc1b4e 100644 --- a/doc/src/prd.txt +++ b/doc/src/prd.txt @@ -70,9 +70,8 @@ an event occurs in one of the replicas. The time between events is reduced by a factor of Nr replicas. HD uses a single replica of the system and accelerates time by biasing the interaction potential in a manner such that each timestep is effectively longer. For both -methods, per wall-clock second, more physical time elapses and more -events occur. See the "hyper"_hyper.html doc page for more info about -HD. +methods, per CPU second, more physical time elapses and more events +occur. See the "hyper"_hyper.html doc page for more info about HD. In PRD, each replica runs on a partition of one or more processors. Processor partitions are defined at run-time using the "-partition diff --git a/examples/hyper/global.000000.jpg b/examples/hyper/global.000000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b462983f6a950954a8606f3cf4dfdbcc0ca6ff96 GIT binary patch literal 72470 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 N#@y?P-yAM~chyxQJ@ z9qzp((~jkmgH+wB3CYX!%Ij^eADp&p@5|av_wUaCop<=xwX;h3@dF^`G2IjLzJb9r^+xp89^~&)Id!Ja>MZ!a3abc~}Ux+vK|C#D591poKuKu5)vHp|0i$%4? zA??dY-0UV#`pJ`!>%1-EsOq!_m-4JH8s82~QvN{Aal1m;X<1pY6`8 z>q8#uuRH#Cd;P~%ld`R5_4InZ|M#E4{KvHq4}0ow9`me!5dUZ5)1(bQm)=?#Kl|Uk z$$u_>?{E8~{o(fEX@NIiY(JgJQhB54<7`Qlc@dMZ%(}dL>xbM+IXkX3uU~$v@XzXp zy5<2pep}Tp`}E4waGHHa;g5o>$MJFslzA2_q_ z?cE#y8Me3oXOKEKKYSlMXMLId+uilO76r$wqLUy&@7QtZxk>2K&Rzc*WcHuBvGWh%Cx-X=-2w8e~#w)-74AGFxz}FW#`*G%{JxJe@~Sw`{z;pUK`WNtg@-KHYF2xM zHPv2OTK`w&*P-VRuOHH$JoBEp{n!5t3jcgVmj3Ym;1|DNCjH-|AW&iY$@J`>({rbn zC;z)A|0mlhH#*?%r!4V=`s-!?8KidA8242tJ=qTmn&-z7KF_KOIdcEs{mFm%xBRjF zaQwmj_OGjJ(>*@DUH`UQV(GsN6Sut!THcn#&(h~w_BpnqC}Yn`8>cmM4WH}(2!DRA ze^r*ytBFg#UoUcEG}51UxTo;K^L5(G%*$?9WUu+paQ)8yKcS&M%?8WfeBAu|DX7qU z@T1)D*ug8k9;>ah)&Db`m>>VjPUJ`S3d8KvSEkI{|FXw^;+oEV;(w%OOjhXa{LiqW zW&WSgn#si#Ze=mC`hWMF{LgSSEcM#Tl9@NFVO32(@8h)p44}Z9T>r^EHD|N+VW;z= z%Tq1uCw?=L=laKe==P$BE6?pe2~PRX@aF5q7q{daOp5qsuT)_v`On~W_s_}oExM)I zm!5dmm(|+W-G3at&3wgy%FVI%fA@OWPY(5OH@tH9-*){!v;Q+pGCusY@|clKx6s;~ z=i;aK@7B|=u`Lvzs^2knvc&OOi+_b%uJ{rBaNUBV>-B?zs{S)9Gx+DW&$W8B?taak z?2rgwZT0HCvB_l}k2GuKywapFt(xzx8vC{$8&=$uBka|8DtpDZlkU z1KTo{6UsUN8Ll|_|I=FK{h|6n$^O?0pls{~DvO+UU3oXzT0ak5=UipKW@>mjaJT%o zoBNM#TYgyL@8h0H{}~SK|EYZL=)>ZapIO(R{b$&|0JN7Zw>oTi~jtZzCMoOQ1$JVd=-Cx z_t`TC`LDn8_29(ZPE(B=VSoPptiTPxj+lDL+%=m7b9=-)ilC@nv&u z+0TjYlI_p^3^wn&?rR$LXZuh2%9r~XfA}xAsJ2Y*Y*+ZZ^Ze(m*ExDM=E)pg*N<>Y z@fki_`7dc7$A&8@MK-5*FO&cJ>G7{?PxoG(=s)MK@au0U>wm2Jv-mf&tmn&aXh43s z|Fzuw_))7F9VaVK`Tu9gwY%RQ^5N~A@=43KvP|-qli0I(TjAwb*^m3>V~?usUttoY zz1Z)JgdE2j?cK9;1f}ov|E`|$pTTU+?AK>+KHK%_%(P`vdsh1`o;|(vdF}1odFxy! zgr73Z7wuRno^r`^``&5Wy|YEPYF5}>H(gbnY51QZ;Xi}cr9JbjlT9bC@ew-bH#2by z&#&t@6Ek;g>9hGQDYaqF>`UiArQ5T#nV(O-wk2r?OX-?bp-FprYp(^*yLS4z);0Af zrka|w?dtcseGV%+bN8%;kM>J>F{_PR-=x0LiPE1{BEIaFWAnkcA+wVEr!7*MJo(xl zp3A1oJD0qSo@x7^Vcl~-so;fyAhUsbGFx-&Fpa>V`YoYKEqlIrR2qk|7PW(P%;MeYA&yng;E@4Ml3 zX=kUcP@X&G<7DvpxlRVaaJEp2z@2U>dxh~}W zyN~LVtuT`7=zMA+|v43xj*Qr-U5?vc* zZ^~D$o)p1x@5R>_A5+8SB4t&!w>cktv|v(csLBL}HOaM&$4#TEJJlZciC9p?5l02LAecB#b3H^Ix98^jyRwnP5Shdl<*J_5u$-BZWkGj4jpSXC< zdqv&@sdbm1Ps--Z_mI`x6t|m4U*uuq7q_W9I{hQ9HwQiYn)GvfkyZ88)4H)PaBXVKQjJev-~VS|`24bvPi<;k#oHV2?6(}V`|4==?;YdWqKS7r_D0N_ zneQQbZi85r+~!9!uY^tBxC>;N-M1gwtF(*f)vmUSJ}Hstr?pXK&b+PHo%y+ff~L;h zRq}J5o4M88h)+S6&;RLbyB?<5@LcX|LDnkwd+U4*nPvBCzEr!{(xvraMaa~bFQ5Ep zIJ3uG@X<^6X@1Xrz90Q1)wzyAQfCVMtE$ChhDVBqH1>R&&9&bi_9pFzBR#nbBLm$xsx zBkLjfebt`pPj|5G%y>7aG$|{vw(-KON59(jj&J#~EHre>@dCzsvI>X61%5%v-8US3Q_e#HStF;v3~YKe!{yDJx``?3bt++TT~ETw#>2+EKCYS%2@7t_{TxYiXk^S;Bu!;+v6x;=TH)CA@CA;MV``K||r>n286AzSw5%@qasQ)5Z;- z8H{`rvZlvpOwXD>v8wpWm2&f$<%PwSRFvdYWaQ-KK!z}~va+(XvGZ|o z@X3h?ipY@+{vTiv|EDQ{cwTw*63@n1ILW+itY{G$w>`H|qMvW5}awt1(JSZA; z@q>zSQc)8pmzcPOq?D?fx`w8fiK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxV zNoiSmMP*fUOKV$uM`zch$y26In?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o z6DLnyx_ss8wd*%--g@}x@sp>|p1*kc>f@)+U%r0({^RE_kiQrin8CgR5fG1|`Ad+2 ziIItgg_(sNL#b+cyaU(qqGsh)1GEAd)ozsj%5_fL18dU20+Q>);UhC3%Lb@dfKHh=nZ z{JMSAe*4xfU*dnVNBw8GKlMKY*DrhLA2}(PkE|8X`LfRW*gOfTYJ=N7;q#+khdrM% z^Xt#56Egc&JN1-&^8f7nPrdQgJ*f>7ImAv%GCVkD_W0B5AJ@g#ybOBzeuDQA|Cl1X z{g300u5l1NakNP4?k-PhZ4HI4R|k?;sb^X*KKy8($iXYip1Wxoy_>r4x6J(Z8r$kM zUS_ME^Lu`tX=%RA{rbcod#^9D#s_}Y?qbTVd3KO>+0V`As!IN}mddl4ocQ|NWqS|5 z*_DpD#wQqRmP?-Fc>jujY4xfavrk{%n;gA;X`a$PZ9%iei()%YZranXarpAeNUf=A zllM%zd{Q@P^R8Qe&(C~UW4L_Le})rQH|lSz{%7ENZn~Z)az|R5z3SiK#>*M7kFLy25TI+wlXr1us%*R=$C9Mxht@wU@^{eUm zd*>BrKe%fp(Y0IKZDTk#4nxohxX09S|?jO?RaIsOjY=l ziuqn*n|9^CjB^d|T=HJie((H+sb4pc@A;c!W=4}+LnU?meX6dn%PM5tk+icZanrTj_bDAaI{Tcy9%PZJD}9x) z@vCK2)qM6Nd(>M)A6wP$_Fa85GyB!syMh(P2QJ^qogQ>&&wqxMPS%1~+t=Ih=VhVX+J6-G_H<1YU7yF<;v5yT(MD-Mefn|KmHFC6LX?ZA7fuy z7`n21-Ok&ae)lgw@L)%|_M}6HW=+|(J?;Lz`41-9AzpZnQ z`EaAXWLis4{b}P9_RewVA4xMZ?|Qtnuxg1zlVNb{v1`k<&GP4eI2Yfw@T^p3S*FVM zI}@LlUAuheuId&+<1=r!D9Akj6}})Nj`S{YZB*U*8g`O;2WLK>5&}X~G;;(Bi zU7mc?cGBnA=-0Jkr*}RGstEQEoV*;C^-f)>v0OgmrrlAl=f78o{7atoOZiwFuT+uw z$)4))$*-p^GE40GoEo-QGV&Nb@JOmFPzu$JHZ zpW*tdD!r+dt7B&53e+std3$L6GXMQQ-^Vqtc3HEAW37G5wTbbsj58fYyq2Gf(Z9#i z;Q4rk#q0BSSKqiBu6`r!^~v61^}!wLvz+EUJ?VSz_2p>wOaB?{m5rS~sBYaM6r;I& z@-^3=?(q+Q$^CqJYs>Nv+vatjo16Wgp)UN7_KUy#4>wLa;B~R=%Q|;R0dlh^d}idM z{|ud$#_x=7q;UQX=6AEIRQvaB_8)(yt9winl>~Gr88II0$vyt``p0$pk(ZWUzOOL7 zW8RJ@we`pLc1JcS3wAwypCk4yk&!uDe)h|Iy9^>*9)8@t`1qqb!9$NkKYR$Bee2Zy z+CJmM`{edsQ zPwaR6M3%q_T?<1>4=^)?Z_q!SukZiaCw8yK>aHV?ZWmlqY&h}BPrfI)%WG-)?yB1- zbtnCd{raZneDT9xTk(I6*AD-?ssAI~a&1M@*~2D=KlxwH;hQ&C`_7*Dh1`;nWsgOl zSFKTuY}4+WrnXn}=E?c4y(d1MsS}@NvN-+8^d}P^|7z{|7BppQ(au8~USyXamJ{4{ zRa8&U+d1dKRPOJ$FMKj!|55#HYw3&ttDU_nw+_55JvB$JrCjuFJeQ5tK9$RF*C+Ta zSxjWPG40y#o6p7UcrL$v+ftv@<@a={!y7-VC;u4~kGhvWTx-ktpP{pM!+(Zt-v30u z99#L}^_y+hXKMFqpQ;I5${iVN_GP`=mW?L&O_u!oR@Xc|_+;URZzUSXPP@Ka|H&pe z=EE83$hYCA>O2_!Ect6)Cwk(}LDfBHMOL@TudVvFT!6JryW^v5*BQs-^}?JdoHLeh(krN$*Rli+xgQ?T^b9}s`Pcg5C3E8Il4c9 zt&*=UBuRkp#tYB?403Z{M?ak27G{w&_2GX8uNlmWwjpxeZ*MDKf1&-Np1sDp`n2nm zqqi^Z;R&-^o4G5*#CzqhXU>Oi)a31EOY(BKcf#Bmlx+xmiV?_^SZ7}&S6>Y(^I3qq^7HX z-~3)Pp=iyi=BZYJ{}~P>|8wunwqn^(wXc|FG;1?yH(u9uG5*=X z5N2WVb^W3PkM4$MzN<4o8e{9PKYOKPlx=vvvsstMdY2!Y?)5H@do8th+T>*i^7Qlb zgl^qZI3TG~#E=YOP7 zt#U?U;g$^*(#4*-m&*5>&DxsVH_POq#!io)`~OKQKU)6hPeu8E24HoKKZ70frzm>_^WnEY$$uvPUi>dLnlI@;1G=vMA1VD^ z^FM!lc>fR2X}EGNepCFBAL|t+ zRn}O2ROvdmKYPNvfJzC&Ys=yK{hPmS{%CUfxX_Ii=?M!a?0E8M%Ic4;b05m@vVWH8 zePh+c!mD?quf00Hpu+#b@}4iVTPMBJwLM^I7xUylgMs#)KZd#WOC#0@X9jI%>{+ZR zzdHPE+5Ii=lsh4 z{|phv8LCmunPpw^zYE{knSXe;d!06SG^1So^CeyO6HTA|I)6}JCT_FDWWSjCk9OGq z@eSPZ{(Ig2k89xcZyg`k)Fy1Qcl*!qCMzrCk=D6SPyREUtUvSO;G-Rr zb(g<+8IW0d)c)^|?7DOR83cSDp1fqh|L4#4{|th$=NtbCSFCrQXQ{9I<_Y)pQ?u>Q za6PbpxU?qu8Ov|eb^bg4Gd#+AyZ$Zvy}|Ig5|c2%;)v?Z0PC%?P@ImaW%Yi-Ortj;(7XJGwP z{UBfXPJC9g@4Q15Ok2V(=M^h$(5g$7VTdVxXYu71+uQZ2m;arYn{1Jjth)I4zt(u2 zm-buQd$wvH&gBs++~D+c!h>Xmvf$Uz>W|C&o!;GDQh)y#DApG~wwO0N^OOFR`ZFIN zH=f+6 zr~7}*O8L(qzo(G%=i5uNWUn`$B>u&GV zL#Kp<$r+X>&-wclKjZ!FSFzXMY}$W@8UGo$E?l(Fh?jnKTKO<< zk5}(@qkTrT87_i!EFcIV0iH zQa5GEatC|2_3|I>5A}<`nrwZLbr$pGnjilhuA8eL`_CY^=*hN8b(28pAte3pf|^3X zpNlqtqcB_QMxXNfk45!Q_CG6sdgVv6*0ol)y-D-`-7)+At@cNwwb1^X%68jz|1%u9 zru+WQ*^f$Pr}lN&ZTJ7ra3rkd{+9lpMZd3IYkyJyTWZbyE$_RhuU#U){6}cee}>59 zH6rz&;y)XoG0u6nZ$?M`la=*vkMH>-@?m>tjqF2dUj6tjeeXWqIZvZpI6b{|wXmntuw%+rN~TuPI!4bLkcBWyjXf(dl!1F!3h; z(#YA5`}>t7)xGT9?fRwQwjKE^{hwjus!4U1<{9=p zT)VcO`9H&r>n6!ZeD7-fXLz#zS#{{=eJVX7T0xuQ@5KL^cokB7t;Sk>>5x)My zYyMto_u@ap%;V$~UqSO9ukU;K`>=QZ_n7|-A4T2bZz&(!`1gfQ|Hb{krDjdF=-Rwz zr~Rk+&sGK%^Hfe}{?b*e-s~RhP6lXB^=D+xy2M_kUFb@`&Q5TUE#qgL_h8koD;qxTp9S)h`qes?AMakC>@7Js|9y=7Kef%e z{~6NfcL?68?EgE#ee3D;{|pYxPXBiOamj8&9}NQ^&wykX|I!#{~5N|pZW55)<-?D{!QP^`hSG~ zXHW^;_jlGlW&gSB7xk~b3`#Dq=5Ky}*k0_9-R3=8uD!`wCl)>5&Qe#eeDc&#g|^UR zX3cZvJo$3mF5&)`=iOI6XXgLx|FHU&`dh)rxe=$I984AHX^0ALIPy&*`0}r=SD_X2 z=HzEYR=WQ=&sDlPCO0lV?atgUo;APb`&2a9ItOevIJnenNl)rshQCsKs*n6<;HrsV z<@26JEQ8+^Ui+wNp5?b)n<> zh~@tow)5`&JHJlB@5u6R9_K-6*|fX*w{ea8+)e8j@k9K%Q2(v+V~u@Z_bz`xY`JAv z`djr+z@&%wEdSVu_BohOO8?K`dL{nDNqJHG=Z_EX{~@XVpFw)k38MkxlZlF z=R-1*B5|IRc0S?1`zvfao<>!Bd{54M36RN#!6BB{_13-q>|X!SzNyam(mFBk6IK7U~@hPvB`Z)L7=07t}Uv$lV8KpC6N2Yk;Ij27N$MJ=eo; z?9HE|r4g6IC*G<%)iD1S`=J!3!eX`B{Y78Dgui{l`Qg-q^r!xRCAL1X-`v-4I{#Qc zk5AH#?xMRJ*pll%u228F{d!qH(|?9d`+rHS?|ZB#J}vgx&%Ai8Ip-EFUlpa7>02je zW$^Xqhs$%f?SD~Y?V1}GwYYie^Xq%l-BSy7FGV{_d#ki_h?JUsw|vg`sHoFC@Sg2| zhVvU+Ie(WeW-a?w{zW_FL*(5%iWR!)QymYc^lUi4T=eBXp${$rt}>gQHs3APb90)< ze~RBHd42rT*pOM=$7UK%{1JXA?A$`}tit^>f6a@0I8SM-sZDAq+rLxc*;lt`f8YAo zpKaEuPa;O%nKl_#o825lxhAcV^kk7~vJT&pB~=j9wDs7JW{2%lwoF_;T|M^no!?!T z`DZ(=-g33i=lS73ZfrI`s^(mKadrO5wf1X|Tr|x$V<|ddW^nkzwJ%nSSs(sqhVonKbC zElZsduxGkX^5V&_u6_Gk6?1gjr?8l}Mf@Ar+`hdnevd@@GS~8QDQTBI3*}prvZShd znzkPH+9P~bKD77LMx$kSv|=7dCGW1QT+7YtEq^rBbT_AxTXq3+mE6?%57&xETnURz zN_FLJF%oXidGJ`a-R9TF*ZrZ#ro1dZxun0Lx28^7X2X}2r-I6>D(mAX-cVa{yY4^3 z>wxns#MpIX);>M^ZEjI+DR<`DWz5zoF)1lMeMeH{+(qTTHQQIUHon?swft!Hq41#S z<%{E1&Mpt1y@_#^zIsvCq;ru?>mp}7U_7ZdIe7biZ=**>E#K^`H=L>!a`(~Je3$jlpFfHEcX8q|kg3xytgp6c~?-&aGXR!>$?UlYP*(|3cQ&88a_mTC{)S;h312{Bc@q`X`A9 zPJSJIYulV9LTvnN3$Jhc)p_Od_Qoi;q%Z9o633g6gPuxd-0z4>|N&I6||cTc?) zRXKNS+rlRYCMwTevCz#wF)Z$1q_}c1e`0V&_MuN4B6sS3g$3^JSz&ko@tv+J8+ulXmNwR?r4_|j&$}zQdjxspLm3w@~ zk5j9@{hGH!{%_U(m4{cqxbg4e=4lo)-g-8i$*DXhz08mE;KAcrZ&tT1*Zj0>{f(b* z_S+r3ba>b2<*L4BJJ-BjUU%PCf9boD&snPNx{=qzcb+#r|DPdKTt>=&OY_OBfP+Qv zLhDq&ow}ITGHII1h~pXTUa`Oolm|J=Zge3h-n?s8X;pNdy5-|75vp>bSLCt z=9Ta_eSF_uHr{e%`DW@8BXPg3ZtK-oQB?xY3hRuIm`xY^Xt-Tn_IOQo`101dR{P!^ zKl1!WP8{3U_&w8e&%WmMekzf5;op^{9rx<3o_yiukKJ{d_3D=BPwrC%6(g@-S8u#6 z`O5h147Ghbw#{ApZo#a3CC6Soby~AiQj&dMOQ<&|=h+n|Z<5_R3N5lko_8+S&|JOj z^5&oaW?5(F`Yn6(pTY8USnS!GMGmGD@@M{O`TK|3^Gc#FPy=xOO)?9=(!P_kv^#U<}WS68VP-T&4yN%Qv3jn`$aYOh{t z;2HjB^%j4AD;NGL4$PM}um5tO;is-LR;9PraIzF~>Me?1Ik({U6(j!d zj`AzNyqyyst=8~ynNLccNZ7eV_N>DFGg9YCJt`CkHQX9%_VsDh{@Hu?8y|eOX-_N9 zhsn3H*IdGimiGKiD^x{lxR(pKrY;cqrD zH5NYGDH$3cU;M)U*Vk9G)LRcJXiD#{uiR;Rw7*v>=;Gad?Uz1GjX5vx^r;_IpImyI zpZBj;uU7uI?3v3yxR3bV{Lj#T&iFq=%(Q)lKTcY9ANzj#)$#ufPNrYpzuB0UQzQL| z!|Scu6Epj_pf38)>yKJDoqcrIvE!U-;;&ghde#+2Uad4;I{#U})I71Ze#+~;gud^6 zTmSaPym*zRohsM#b{9_-(0qNmR=YlW<0O@|?F{A%U&f>yJ+tvv#x%9k&$7xulD$i0|Lvrzph_k$6vu)+NqrG)7*FU;Xetj)tm}E8`VFr zUunnwqwBI?pY59kUH@86Wq9j8JYl2t{n^gh@9yny+GKCO;^*t?X%l&f4k_m zPVS8V3A>W`i+{a)=kZ>z~Pp{0BNGblfPz4WkPZ2RH6k{q7% z4AN%Lc|2im``7;rU&Cd~eimh4sS*0FL+nufOXb`JUf4kEQPy%f!d*{a!aeZf{z!acj~FHuj~l zKXM;sXIrZTow8W`h`;N>&h4e)?EO)H(hL@?sGOe|E;{qdS>5%z=jZS7Pup4zg%yriO$Ylx+*{B?Yc7}iI&>~ey&qn+jaP1 z=H-K{^_81`G(Ysn5&X75V!g;m)?LTmFuaU=`BDAI#MpMO1J_%AOnMpTcJO^f(iPj~ zJF4zj2Md1ne#B=V>JZwRRU@Za`e^Be=PKPjTlWTJSeB{VM=PW*gxnpQ6r6 z{k|8HSll=BXu{S-ckU@!H8nhKl&xL8@OmEei5sT<%Xj>at36t|<*CY?^(((i+zL^( z2zu%npE4=F$g_@p|dObINd;Y_xd$RhKJ?Z&NE0-Ut4db>{PE+1mZMO2U zbnwzQeEZ9kpWHn^jn^!@T{{9_M3HS+vNx&?Y^m>pZAus%*vEj+WGP0l6}nA9!lMKx$PtS+^i19MBfkFW^KAB$<=$V zfX|Bm^Iy$fa~4dqT-(ofs|CfoLG zx2ySRJL|Ca3R&&8D;H|6-i2q5s40u*WuIQM_b>nM_UbIYEfc)8gdU^+_fxcdk71=g~HMX}^{aKhl@J|Nj2RywZ=-56xTF=BhN- z*e-WkzOsq6vyHDJ<)Ey!)F<0ym&-cK^>dfsa(X?-q+r#=AC2)2HJ%?;%(H$+gtt_H zGS#ykhLgX)6?^;Y{JMv0v?A&=oX}Pz*Y|r#ZZo5T6`DDGbD3{^Vck@*zCK+q(c=qbvb({2< z4&`~;6Rs)qtUX#f>+69`X||oZK@N`VWR$YpuNJZ_)bcgHXvYv)f5_!?gvZQDXD8&{ zZV24G{iC%1!@fP&FG|fnbXMuJYsi(7+tDYkybqZtI?*|yr@`?#%jfs;26gAE4rS~Y z)#W}So3HzHyY6neIEKmPe)U%$%aoqa3BOS_y=Sf8^bJ;jZ+%tt>WQ9w=Z8#~y}^3F zxf|YnW5ydIOd_CQ{xY= zul@4i9K|NFUj6EGUS+9IS|?8}oqXZ1FteA)hOD5bpzKAS|2QRYg-)0sB$WIP*08Kz zf9O90yV|0FO)23$6=kmC9{%4~zj)s&^>%Mh=FWzrxxSj$ysBj+ZeBT@x@nqd_1RY? zaS9)J_b!_keVX~{m-T!f+h$F>ysN?L`h|V^A8WTKDX6{VZ*w#$a}{FyWSc29s4;&CO_`=kL#{0PjM#CdS=Qbc~-*p;+t^6 zkj+8OTPE-N>VEY<1DB0-_L`U5u3uzSF+R4*?Y76AHAZ~=w!Ha2t{)7DxV4dkjeTiS z-5EPoZ~eAiQL#RkJeopJZ}SM$Zk74Qz`&lsT52y)6UusZx7H4u@ZhCRBC}pqXv@z^ zD&{yH7oJx0_ffTJTX=w#)WfYN5?SwRA}cm|J&{|sBl;xcl-lf*OZNU={6(f@eS6@% zXYU)gq)rO$4WE{?eW&S{_Qrj3M?u*s;Yn3^%O9JaecDsfl$+yye>fkVw(VBbvajs9 zWeJZt&+ckJTd128Ce7_Pk2kVX>L2r^VAuZWEe;GC{Xg5}FYWXF(a`XtJ1GBGMPhtR zg?*53;MUzUPAIr_{%2Sy|2kgjkMk7uj;$*H8J4%1e*7Zz@AeUmx9gwvPk9)5{%^vR z)ip7j_y1!SZn_#En)T51cfgu-2R1&b-E;jMn`8E^S-4hBh56Iu`10u|4=!Ha{UZ2? zoA;{S##=g@oMzapwEXjW+XWj>(^(Dc+-zT;%T@a{pXJZ8Esu6QZjQfDqkSY~X;Ulb zd(pJL_7CJc!x#Nr*T0~SqheOB_oMf1Z{wT}zU!C#;%0woul%?Bxw~w5|DF2J@FHoC z`L~R%`{bo-3~jc3Qt>W1*xi%--T%htdwWlRyWbVLr9!#2+%ojQ`QJ(V#Xd5d9t!=) zu5%=CPG!Q%yUW(Bwd%dQJhwlYzv)Qu;a$beLDNnyo4v2=Kj|Y3sxn8(1E8^4B zAU6l49ojpVH~CIJcB1x|{IPYJQtgvFW^O!xIzIWhpXEL|iLSgqy>CGShfNdT7v!bu z%$L>*4c9l_e(7xe;mxwIq&B| z_ItZB0^HkYr%e^!>?=F1b(M5E&)V3d{oS#O+|LA$udUd+Y?1Qh)4C_tR&3Ru{{Bkn zp;LMATwerEzYPcekR?>`Bpjl<>-K<=-ToN&hGAEk8@lhelZ=r}RoD5A@_^@eDs%mfWiff(!tm<-;=whmOZy>9 zgV?dE;@JCP&srybT5VlYDD&x}-08(XmOkv@H|Re$cjb?T%baWu)k}T)o$IY-a8>)2 zrF_+ndve*%FCNZ$_+;msb$MB{I;VE(&U&8zu6P2kV{z@guTGxZWhTdl6x`Xh`S6*~ zOT+JWbGIFuJnNf1-;drcZO_q~Cda>7YXV%@R+iwS7Fs&Ed@~W<=Uh2tK>BovHTSHTKm!6EN z^-YiGUc&xFC3(d0x^5KTr@yb9 zT>r`LYf)`nzFRH-w{vpbv&`Ij|2})TH5lexFO`y6emX63 z)4F@RWZ4^@Mdu5<)*L;!%`H{?a-noVJ=6WERde>~m9^*3x@((#v?TjTXXMm_=?72P z?hbnseCO0ok2^i-w#E@jD^H&LzR5PGS=`McRa7q1?0)@gmy%z{HeH_lxiDt$-)lw1 zu7_e1=A><0FPEC*(X(jtLPztRmuIDwDso$F{bX9Q`|LWtDyjD-`a*kmY20&v9OssI zguOC>y~sD~R#w7_!(m%LtbgRr7db!J`({Y`n)?-Nm-e$c)k{73nj5%0$vfPvRHlD# zXrBHt{<9J8ylP)V)yCJ zkBfPZhLz`ht#9A;XI6UK+uX=5QJ%x|&KzxjksTiV(b}h_vgM!YGqdm~t$m8~3`E`Y zm&UQZbDZ14WPG;rYUb&g+ujzx`5W&3h{%7F-aBYDR4r}|ytg;~pd7D& zQ_l;voic_}lGM_S&rDie9#MhJie?Qx|{D=F)41F(? zE_Pn796b%NuI(vGJe zo<6;|Mq!&pw`C^(pUv`De$`Ko>s-|!*&6kswaL3^zs6~q$**6=r?#Kb4p{P7eDTW* zzjbc68C1^G(^|DDYTK5wxApcva=qikKg>H_(#PR>fMKI#+IRJxYj3aTIm=R+;UVw! zJ-@Y1VC#-8?h{3xgiSx9&wKM$)V8C6jR7Bm=h!ZpxAb_I!Ht-pg8@yRnHxVXTe|#b z<*Do1Ya_H5CnWsp`tqMa^!Acs5B9YMQ8VOCixZz~_#NLm`{9a51%J-w^;sYOCow

wUijsM@}OK%;Ph;Gy=n7{MjiQpy+TYlxP*|EnoGjIN@?G<(R6V*Po z=-K6aU16Kbo_Oxdx9d*w@3a?QSCew_bh(o8l0>%q4%$(dkN?{9pMhJa#%SBRZ)LBi zPB_MB`SJv_vJ8LT^R@a%-%GyOr?R{6-C?io8-ux=j;SzghjOTXgJ--=~`=bKIxzX1wWF|MAwwhrGpy z+7Co+o4YncOng`4UZb0_XP8e4ZPI(fu>O?Mf+upGmdwoNc6=4>hoa;bukc=zIWgAl z#36}~tzpV5MDs3G#r^=T=K_K2E>1rhFWUX=VZxL}Z!+R^| zaoW9h@&gTL6}j(_k(-)+^w#~>{(iQNOEb-;Z97}|%*b6Lrm3jNJ?6^sX@=dK_k+45 z=hjADObOk*ZoVnI&NL-kmy5t&-~79W0o<&Yt_VfB$=#RUx5@ zTrw-&%r{@3?6&3Uz1OGLp7^8w=)SP~gX*(f$KM*i%rE)$_WX$@4ID8adzvcV`PW?S zXQ>I;`(fJjl`mc?cfNNNYGbxoo6lY2cInIew(D}T|ITgCT$VHQrrXE2vkv{pel%Cx z`})`Nt6x_0M*HvGWUzJV9d50e%x&(6nZFm@?_}R_RJC%u_R`OnPaG;L`S4-6>#?Bx z^wXI+Kj*HwI=}4RypGuq+mBTI(SBU~h;2*PgQ=;3>dy0ae1EptPO;+7>wnt0g>u@F zQBTvtLU}fBNN_y(;KAeOur0j7hl77y6JCAeu-c?0oVsTGItvuu-oDJt+@Cf1(b4xU z=~ti4KD5hs-OQZ(udZ<%68+=w?W~Woucuvj-TjpxX6|SFTWvZo))Tq+^29zkuAn z)x9^5v){kBzQ*w*d(&5IT{~a-!%=Zl%QkB4nsiU~&L_doLcbkzCRN&IM<0!v-WdMy z-|WoAw<@ce-2Y8@^1*+@qF_&x_21wBkY9M=@Rd0WwdSlkxnxT4le^2_Yis}cn!WW@ z9Mi{pjY}(-{xf*a_u4+|+v|ze{4?vOc78a2JpIr=lYLioA4DF#+cWK6pmd|^l(yq5 z7#@5(`E|7%^R^$QwGZ}&?(to|=hl(nO*c-;yq6PbwKoWp-g!dug;n|LdiJmOtS@HW zeVrX9pSe|VLz~i*hU5F~pEthr{dDlf*FRg0`nMekj`jIC0#DOrggEu&Lsah_J`gd)gS2|@6ng~_AMn-vLM748-ng}Cb=2C7W2<5<=Y-$dzH7ee`(=C0uB?5`FMWQ+k7%b$?{coGUV5XrnMe6R zq7>_Szv8Zo*Z*nWel?G2!v*E7+j@1Ux4TN_{Qkb8&LsPv$s@T1z@ zrK^8`H?CoQ{ClnWfm{3Abaf}C?Ac>(WV9^O(>1{O_PdK8UO%!u-}HW~#+Xk!iYBY*zPe+F05u6^nD zjrQNUVUl2WvBV@}wJ#}2%bUX4p-tCOt z4{!h2dAx6p=?Sm*+jm8t_;k2U@`>P!;_dctd5XL4{+RoC+eiHl;h;TR1o8^JT5ega ztl?c%;dT8H!;UK@FBV^B7OSoZQJUakao`vKiBSEns(sz%kJxu!)K&H_o#Dx&l2TB_ zE_3O7%43l&Z?9j^zjFQil;p5I%jW!Nn5k>-d9?cazUj9YUAgz8{iD3k^*!dxGr#Ss z-Mao}qTst;2mN>1QumJ+Z9nu{p2v0%o3>_J$|Q?|1J;`-oSnSmX}?W@!*NL~dC{jo z%Iizh%OBpA($;j*mN~P=q3pR%xV5*Cze@Ti(an!$pJ!U%VDe+jj@iG1GtGmH(+gKl zSv1)@`u+1KTmCaBy$D*Zc_>tYBJyWHDNyQ}}Iajsi_VtWFE;O_=)Pm6=U zx9@-YLuSjuaADTBJ7c1EduCg!tY5P>^;21NR&m%plcwv(KV*lOeVjY#{ih`oEYB^D zdVefG9`;Z7%G15x6$zi&%-k55R{kiCy7;zE@m73RnArDQX|Z{^&tg_DWN)&PE3p3H z>;3qx_o3}}>XUvuUU>86hw2=U4UQ6_F$@L^N@V!h*ovwqdl`0lyVt(`{wg+V>ngvc z%jH5VK3l(--M?#6)&1(*-cipTKMEfWzo+ow-PGqVvt_Pb3p{Fa@sP5x)e4>;419k6 z47J+jhyEEvzrT4r>atps=w#Qfd*%}Zm|m-16EL%S7{VVPmo5H?{m5MFxDV&%E|0zu zeYV_(q8>B zKW}#ZXGqVBP4|EP{_Tfh7Hd||K2S-nchQzehD z^G&@rzcWm6m9f*p&?z!}bB}*nbLw}L*tfv#$)9+xo_w6OGye?ujtQF&u=#Tky*8gC zDmuPm+M#P7PdR-0^F*eA(f-n=tat4qlV5$?aMXO#dj-bNm$oczU)?z;Bk;$QOL6O6 zf6SGLy7D5tHEQFto~Yb%&t=!o{AzzJH}PSt{=>S)^oKwHT};W(TQaeOSy&=>JL8X} zo!qh953k(k+Ojv|u);@)yD}%za%Z?{EopF2d2G{sUFOl2I_)2E`P_drKRlaOkC$v?q~Ut?*5~2+5PC(+@;l4!aA|n@BE(iv+4(r zTfF3|UFMo=y7hDR^=kPwPb7NmvcrPA_JqvdGwJI7Dy^{YO`dkAQ=gbWJU8`$ z$OpgGYDiBe7=hCBm3-kU*7t1!IsOn&Us2DHJ3eAVBim& zdwls)_lNxL)1}@wY>gMX^`kLo+NmG6XQ(iqX->$WQs911=E)bkJ#jyLKiu;duv=NK zwpB(xxwBL6p!sjUpMSFKIOD#Tect```qvj#d)^DWI!~T9t7?DgikE4Nc2?bcf46Gy zsc&&SAHFSq{KCY-RC#&C`x|+SmCG*Pc_Q=ib;Lfq53TKOrkc6(u~xs1EBt+v`9!CC z;xVHm>GO*3FO9mi$J}o9N51n8o364h*fpc7O6d5{`k88%Q+T*7VEF=o$_zR(nxJ>)!au@ z=AHHx@{JB(Y`#zPhyFn+mu=@C&dm8a%O(NjaCw{e1zdBVI(_4T6bS5(*^tO`G@ z&3!u7CFWJo%Fm1Hy#9K=4*28pqcZ*BeZH69b=RoAxo*HIq0%zNu6@XvE#IE}zWk5E2etk+(b?iw`}S<8oo96M*aL<)><+fC zg%983+wxKUNOwM8be4Ydx2025RvpmLX#IJfAyJ~_m1}Tb@Ke9n%jZ|Gp0x5fe|u>v z%aU2ouAS3dHeF{*&X()mTWe#FT(f^Ddu5-(%W0q1oz=>9(|D%XHMMn)wtyqMf>1rz z^rLo?AIf?kUD-4nfY+5a{y{<3!y9&v}y0#boEQ$FGtJjALINZ{4G0UkD;Vs2gCHrbI~%_`2Q&VW1akP-^4YpwX1Gt zr$*|n*>^!o?A9CRKc{!(Nm#Hja2#Jb{ZaT~=7*XK?>=h1vS^-YiA&&&8;yqz9(;de z?^j-`&-A0-=SOz(YPAj1#V4;npTAp`O><|ps;c<d#CmG z_a^I4FTQu$weGN;e8xV8?gLVD|9*M1>+tq>!Ime!t8d@_;~M|rz3K<8ws)GY&KFi$ zDRg7z+tjW!AFmz}Med#_c2)lw7#@6Vt4M$N=hyLuukymt6_czr-n^f8b#02Hvgapd zrae9Uvt^#!U0wcR`@=m^_a?5%nqKuLuy$gFTkho7rUVL?Lua`Yvjrv1b_v40M<5&F7kP>g|q=$Bf*4{>}OF zGIURU_QSQtN3#+;^-Eslv3&>-R&n@qn7!w*#rdlB57+ZJuKwe={X%%Wl-1q5(4CWv zwY2#vCFKuE@Ax;Bz3Y#xZF|SL$?6@7d(|Es+k9ZQW9%Pu%Y$0ReMcUvODg>~p7Ni; z`c0@`>f3@V8re6CKCSkQyu0>WSo!7XypnoRg&(DVm#BVNHdS_w(VC8Z7j<(a=`9Z{v>9Xz?3$yqo5j$)W<~vw(o&B-+!+Y-!$EIf}UwO1=QiaQsG|-f zpG1Xj`0n)V+q3?BZ`!r@-nQ@!=Q&=;v0VKp_iDP;-n(z7?PUEJ9h|8Vs1ogXxQ#_F z;uC|tR?pXS(+}?EXI!^?#o0%?Cxs4$>8|lqDPr^Ax%!^$hxpb#eGuo_VzfuJP6@^`c+?$iE&uGx1^b zqE(-&-|pVJWOCqdxwpG+z0A6OeWlm8`;PlR{+pk!WOzA!ug9{K+%*%88KRXZZmGFb z#!{lTw&L=kI*|)|{B%uxquvK^`7EMyeW}djeGUQqkF@Mrf5_br`1nT3_1nHhhKjs} z+mjwIUun1ZKf|w2HGvnl%w<2Kc8&Ymu5C@JcU9a~FUS?1k4alT>taCj<^A`6$nrJK zjhZpX)nwV$z_P9DMQ&$C&px^R>XMRp;V=9wFQa&yGRl*lc`EQ)XfcGn?>cB@-yr|6 zY;xVSck>kM4f789y_OTb8PIaK!E4pz#*-=+KPn##ixRo8Zti2l)dw|r1a4L4O4y2Q z`y|mf^T7E9FQcu_AFkDR|52X2dfP_XGuIt9w%DJU^L$QHyPn5M*S~koKL2Mhben!{ zRnXL^DwRvmw?6rrX|i}x)U7|emHat>cpvosaP4u#j(x6Izvp_C^-TS4>s$PvfoJVM z`QGZV=3`QcySG#@Hn=Mv3q5En>7jjlq2v>puI9t{xb|PO;jCSoS*O0S$y<9f%QW-d z6Lvk=_T#4GIiqG)_m46k7%%^@d|1zY|Hq`aHU6tMxr(@FCo^mhZ2Vbu^)>t1v#b9z z*xvnS`S(nyssD|A9@}fhx~E4Ro*EbXW%us#q#tbZ4AC`C;a74#E;$l8wR~D$#qTqo zFaKsMKPtV}YThCFWp$wHqH|If{$VkH@3pUZywp7Ml1cP>xtG6E#Pf4Ai|b`K-*GwU zrMx5PPZOW_IK`+uP8fwJRoCRoWjn%TPvsfo>{lJr+NMqu8vQ)Ox6A~od0~| z<;u5}uO1qFxpsQ(qN$hn>ubl{HQinIMqc=j`G?njX2n0ks;|dyT6I?BI_u>#uVT`5 z=iNAGcx!v!k`JQ$5B=82NzQ*e|7Xt8O@N5^(-n#BdG`2d^$KZ*BcK zDf9l+)3vGxeZT!2;SUnyz6kmVF z++cah~>rUjUNS7BbVUh`AD-`x4t z{~2QK{$&;RN%MW=llz@L>#U~R_oq)U-TE2(dUdSWrNf7#wja4`b~&(K+dK1)x6&L@ z-``F{`iHLRmXOA2yCBO zO_;gI@^8UF0422iN zc_poO^th^?->-e^de_yZdAYi2_oiQX^-m+>huCR{%a1<1Sr%^g`1~C<=H%^LlN}$v zXY~Fs+xx2D!}S}dSuXOF6wo?xs-5A%BnFk=SM@vR^L|~=erM^{Z|f%K^~NSM2%mTn zAyYSXyZvF+%XKnQuRmv<*199SP2M0s@Ex0``ANyh*VnFJ{&@erOwz~DOsffdg0{rW ziMP((vTo7eyR!SFBV(pNtegEn!bW!WomZRezs;7p-B9tT_-({Kri~xW7C*WhbpPnI zqi^aCeY(9RXiJ`YSioW}cNXImxgGIdDO%jFwO2 zy(S;8x!@(tI*-PQsfzcbez@__nfNf48OgpI`sjuHH>~^>AgN zckQev7nfIqF2&M*pVw*Z{^(lshu?nt&bRnpj+O|?o%QfOkMSfU&yy$K_pvcNw`J>o zc%Q}b!092N$|9O#!+c%xoP%_!vR?Z3yX!;KtP0!smf9!# zeZLrW=j_qlD~nw-er-)nU6}oFTK9+l3;}Y={~21=X__CDvYY?Z=i}4c1qrt!Qg~N4 zzN^hHf7r91f6H#)+){6QqqLxH?S&7%sm$|_I`O0Q!?D+KAO5XeH`h~0+x6$fIePyY zeE9b5{e7+e@OcL3N9$$oW)x*ldii47*#Z@vg$3;_Da|ME7=AG=`u_Cv*`-@9yCwSS z=xT<2%k(^bZ_A{@SCg`=V)Lfn-tRpjqfAcz`aji|*P>Q$v5J|rVaHU-DU05!$gGt8 zVEJ`*oWh6vmM#AoB$v%x{#yL{u42E{-@0dtY>4^%-9hF*!>^5DHToYO$+|z{$`Jc? z*+ul+%O|A=nXf!v{`!67e+Gd))|m@`OwEZ7(H05knsjHOo~U`^YzdVIDIa)!vP>3B z6=jxxcH4aD_^r?*Nts8_*F~=`+BWrD)R(K@FTAibda+O7(md;W{+R9+E?(Z7dfJYr z{g{8?pU}n+Wvy#&WN+UbcQ4Y__Uil@JOMi$BHbKw(rqKI=6CMr|0>Uw^hacvA3yzXBotCp?>An}Q>Z6|SkzZO7AGhI0F%iEUcYInZ$_wd~E z_r3r5GpAy1bQ!ih&hoswFa4rw#_CwNZ&CSc=LZWP*d`~|eB5m18sqcJkNhlFWbHUt ze7X6ZVbpv{JsV@a_2z$+H)`E%V^erwW_Wph)cS|#IbTH0Ke9WPJ>bgHjazno7JjR7 z|J4o6+&jOSta~ON4ftr^oU^7TEP3+SILEbM?B{{bx8*&sk%CDQWAj5AT-Oms~oqEFyh| zNueE^*T>x(U-<{W?d^W{qdxV+ZvQQp7HF>0nr|`rXvmM95Bd3jl%2aJYaSZ?>4UcQ z%HM1IrcPh>gWX}*kMQ(I$&Yp)-Cr4-wjp7DX}RVxc6kF9;dvGZ&N-EX&V2s2<$BS> zlg%qV6Ep9g4tbyU?%t$5`KO;Q+7#!J-@Ijg`>*K@U-!SgztwRq_xdlKZ&N>=S|%{3 z&pD;ZE}?+)n6~qSH+GC$ua#=CBXMe1x7_|)_S!qTTDg>E;-Y>Y})s3 znNxkC)6}dZ8)bSIO#5Tiw{_u1dFKzJ%R74aw=JHKdG27b&UwY#6X);ob$-y#9Fg_U zdfO$vugCgC?f34e(VE;N{EB^By?n$!?TUJ@i(6Oftku64p)`frghfnyo(Fr+qbX{S zPfK_%y??&$Kf|@Qtr^9B+mr>p^vd>YZw|X?c3*e>-TLKE{h1Y-$y!0BnZH;4*>lz|z3kGDvaN5Ilz5+HZ?$23F#A74d-$$ni&wDh z_bhkLlWjJac*R%Pch~w_`Jq_r14R}4-km-=?ctkAH2CuGoEKa@6_N$8!>$ zVy4|{@0mDn`MkMSby4e5_v{th^`9Ybn?>zBxy8?0S=Ri0d5e3h>Z+ipxwmU)@7Apd zcK;wFFPPNz&Ma0o<>cw<7VJG@>g@Mc{fW=#tIs)OqH%T2C5H>`&lO}I{OXTdx$;NU zIeXa~FZSOucA74}GAq6FAXjWtoAu@c>htqYt^2X~;m!+xV)?rDJ0D$*T;?i#RD9ap z%JXOHXRMjJW|dd`^OyUMm-=Tcw~^)2jLn(#bX)(-b)oOe?yu{({-gDwetVSPK*KNHQ*#oEhu*1rCnseLq3f7?q-B zVV)$?^Yy^F!v3lYKdhHmFu%20dcMQHEKF$IL#s(vDf70bAKJ(Nq2fn+@tWAIgja3; zlh~dsU)#CA{U86uKfWuor(Ks*o9z{M}9h0!q%9{JM+AdaQ?$n*qeb+Agy^p=gB9+#-w#M!9m)ARcq)IMNofew3 zG??YN^2_j=V_)3nKa~6di)>`M!o9tYhzw{CIU+|KFY4 z`O5EX6ZE&6^C0=&{EyCuukDk)KI@XL>vIoP#-$zabap<^^E2*wG->jdM9$3n?@db- zwYC;oba~IrK6R@qPIK?t((L^Ee!usN+o(Qx%XRObtOExQ_{_@2q2~DBa(OGO-B2!hWnv74Hx<4v!EIrSi9e?w>)xX&*qu&Ni zc8V}O)wlYD%*XHjGQY#!AMv+G#r1#q?RPagqVHApjAJic+KZB}|7Te1GJDyqpx?7E z=e?O_^0<4YU(xcVTb>2ReEL2s*UehB+E(mnuh#nmVe`4BU9-;rF<0#5WMzq8;kqA| zyL{-||5$s4O`v77Ukb}6p|um|wGm6=Z80}EA>Fs1i`70ORa%Q}{e|mka+s=<6 zmsavc73Tf=oG)G7Jw5fJYRdapfz5~KvB!6OhduNUoZdqeR}AQE2~=%U%Gbf@>JJ9cAt0M z&HeuJe)yx~ZFaIZVs6XxY~C@+M~-8|hs~;M_pO=U`;`5&a*=~d+N!Mmyzg`O$z|H9O+Gs968G`xag}_yyj)7;=gz5@V^+`mbIb2zTzXYfgDQ~u=9cFynceVAy?E}4!?xu%tYd`Yg z#m1XQHnq*uH?S*Db-1(KhOhWX=uWRCx1L@8{PoJyUa1HxuGPyc_xD$w|FLp$#;>rgs@vw5 zy=Mt(P-~Z-S$xj;SYg1Dzc<{X%0K^kQ*vdY$g4+M7h`^Z+8yckdhO1T^>yq0=Kiwp z6_?|gf;U^1DtvG5n`j%W!;u)V+`K&3{yvRIvN*-gM>CvrieHO>ArS z=UmjRHhC<*K5p9WTz9YTV3RO|4#%)9EqIDt%@6#_rGj;lG} zsH&Ul|2=3|)&AG9K1%=gdb*X|S}wkN@7t283#R1fPn%x#)uLNh*|Gm<*t8;looU&6 zagp(QhiyML{z~Y(`+Dn-%lQvhoVxuZV`grTgV`UUXqoG#OEaYGHh)z2zxXbH-lj{_q#2P64AI{x;SQA&C24~tgBzH?v38K^N}z2!>ikyN_>MoI{!0lOW)#| zKjq9*v9Op8p*ju>lN)bs{W@RZhf0mv4jlX6)8PNrl{KYxwIh5UWu#~Gs zpbv2iANg;0mtDfYHPKk$_~a9k&)2`O{XF%<>jSg$JGaK>`|kK?GRx=MG~eRf9c+;X z1&$JLygu#_;+N%Ioqx;g`lVa3nfd#FZEOj@vhwpMb-nz`W8O2pOC~?PXu5RT_wuSu z{_Vf&o3{3Mte5X*?$wF5PBYiIeOT{~fkNM3>rj>t-`f&D?h(se8GGktThN;Ct};_z zo)h7@dY+|1>Tu|fMzIOMPT#)$wE46)Px74xTP^vnIQh#Zyrpl~yq^{EU<$K|gz9wA z&2wkT|r3leoH7Haa*$Pf`BG1-bJ2`EmP~ zCRXS>e5l*_==ERy_GmC)i43zAe)7vgooqJ#odd^}4#!x*@UazF&7=eR;ur{yq8+CHK_m zl;*l6FI!jcYZ#VfuV7ubY{eh{%^#kw?}*YCuPpiTJbsp)%rS{{nZCkzT1)0hRqn~p zU34?c>E^rCPcG-mmCEn9RZ6h$c>P1xU#`Y-^5K0d-9Gb=8fK}^bf25g;jm=ltFwV( zTR^qi7xUGU>cQ-8ee0J#KE2p~*8AvJ)7F1g`!V;ye+K4^NhC@{jr@^IKRiYNnmvI%nJ4 z2hX+K-(6qvPi<{~bJ;$o4OhNu+PF;e-NrOQ=+Cs{EZ<(AJZA5;`NRE#R;WS{Ac(uv*MdC*Xh7)#c$aka^r{21yd&~Fk*1D_j)_k$eKEBP&=(OqHp6hJp zv)C9PJ8|4GJ}z5Oe0kx^s5;XR#BYU0Cd{X85q%6jgKFOXdd`mKi zx8J|27nxdGp{tS#O{QCIe!6SB_S5gXV{_Nfo9j3G(fsB;>I*W%JeR!Utoan(HnBZ4 zr{sLpv3%|ycJ*ylc{{~6u5w;|es7*m&C`sM^)HRg zGM}e#NpDTwBfcg{nREN~-JA?8AA@dsT+5sNu=iN!18Lc`=RuKTAH9`ynv3d~+SPrn z?d`tB8@kOYELC{QEBa`C#^;mq{-rrv-)xE6?0k5Zd&Am)626rx&wuCMZ+W}@&b;io zKWZ2LkdEv>Qt)Hevv;RF7WckU+dMh>y~;aw%OHaVMf~@266RdC5&rNz_@jPvscqT$ z*uHbTW@&91&jOA)H@KY`^19xWF7Av7 zhd1TM+pK;Szp${Lz^GaIbY_ zzkl_yl*qK8ms45hJ(giA^3Tfe-ostH@W+go+-r|km#GOZIVpGb{5qrJUm;O1ea}B% z`=4P+aoU%UrXObX@Nv!8b=$JJUnlCKXX)-;;Z<*b$xc5W&r>1pB=&8d#GdFKXRMdx zG`HJ+vi=+^+Pl7G;orHXnkHe%#b)zUN=-@?R2G#o@ZOm?_s*Q>>->u2az8RZJl<`i z^RYfJ{^lN`Lz|8yCB-~pZj0-_zw_;nDzk|XYqkCU&NHobx*q0z_3Bz(xez{Xr=U{C zXc@MX3XK<<o89qIFHEjEy zFF#vF0;6OcT}1*IVL0qdg`QrihQij{&y8!A_AxwG`NwP;wC+Xm+5FXxI)Ym!*pwcZI$tAPR+m{*Y54L7p~FC^xLBx{UA5)_N`yHpVYEHn$MbLR?libCHn&Cw9CkeRY3|R; ztB<9N*6mt-JKp+T@A~$6ydTS!Ka}xi`=g0`u3l}ZTqgihijuG{SNI{Hc+X5y#IMucjV5qnb-3Ve63w>YLWQi zQ&#wc9M7z|Bv9^UEFXBK@c#8bTF;NxGKYNl zwo!NMy#<@@9{Q1TISF23ScjnKn~=kAPmTYC1)&f3>& zg`#4k%d2PA3)+}JKF@cWciLVCK^rBHr=J_8{R%j2nj5T`EMG_6@^9J`&41Wq>*|?3 zR@oc5x_&ZDo_~C8$dARSxIQr}$C!$;lPbxBZtNIsZ(jCAo=@ zlX;`E+}HUZ*6B;c9bY5McJF1^!UI9ll)nI%LhdKjF)>C*OQo=xg&?Q*Xlt zcII_OwXeOV2N!I*9Xs{g&3o`#h#CC)y+fyJm*jl2c?f9JlcMUCHzlzg(}LA3UAA|M0UPZ5zH;?hIY>;MSh4 z7qc#1UtDXlZ|Qlq3hpE3_Pp=5zTdXSj43G2v_>q+mVbljxgXB%AE#|zeLtg4q&I(^ zkiPYs{|uQC^IXqK^d8Y;bF@@mzmjRe<*ob0k1vYN+%~QJdf2pgVu?A+9CoraIelV0 z_@pN#bU(wbibJ;p_g>qw+jCLHB13PZ$)8p}>9cG8^K8{A-E(EzPsjUDT)$;%gj1X3 zNl)vzOEIgiZJB*>U&?*&m!J1PkY|a16=%2ovguwYS+mFU4c@b#vUnmUlTu{y=hgh9 zx=Ot4G1H`d9oO*)6&lUG-B#5z|8=BMOvSAK3`d!yHSR@!KY3{5lX9ElpM3urdY$W2 zAF*CvyYPxG%jTI^Dt(G4&ws>YDYs~;_DM_A`*m~I6eJbj+07gIv@17s?xgO!r(WON z_x;7RdEusi${(JWeKBkOH~WqUed?jHo46ZZ++=S26Z^aI!teBjAKeen4L@ARb$Q); zQ&z*fuFu>$9=tuT-gjqmKuz%Gk8^xQpLcv;dV0}`MLtjZ7VTUc9saTPUw`_y-O|st zPUN4c_|&X%-d^@?g|nj0R8IPokJbKs9rL{9E5B&OkF82sBZ7wI`jS7FVc}u zLL_%^cpi8^!Jco&E3H?jBXxDQ-~Pw>^t^P-se%i~lC!+*Piq#Nisr6)TlRJPsgt)O za!PpfgFn7q*S_Gc;=Wz!9xZDe(zyJL*k!GLrLXsz9{a()Yx2>|hkv6UUCo#C*O;+H zkGW1ER9E|-kgoahu(ng`lY@jr8x|){?NInQuR^_X{-yOlu01{)RkmgNt*#CGA{i6j zZ)x%mie{+wRaKi3l3Vvnyy4h`&snC0Tb64ECC&Z&%TuC1gdaYe_xj=2=bcjjEZ&Ow z&oZqMDzGkp8F8PlhQI#Nd-1!OV*6CKUOE#nv-^(P+gDZ}ca%K-EE?{<_v7x0u;;(+ z{r2y^v_SdHq&xX>JAN;I_WEt8jsCJ9>mG;iob9z`LX5kl&;)<3s!uy*+h2xDAM*3N z^(*_Io2V++m6aElEiL(y>1nZS*Y2h2)q5{xpRSBQ`0L_F-)$3lzl2wHPT;?De5Z5c zA4`RayCrPoeyo5*r2!5I2W+pEuJ7QQ#ems_(=Do6(w^m?mOxfMn@l)-F3?E zp_B%fRq_H+`OZD=k9oa)wsr??xYE0$x297{%}`W9AoTbtciUd)z5Z?2{C&54wMsnM zym{4=ry9SnKP$iZQf%Ai_cz~2$+y*%%QvZh)SJz8dg+$6k~cMjJS^-h7(A>ue|a$H zN*%|C{%#xB((>9wM&68;69>yhS&E8pUv8@YXLV2J+MmS#3|tRORw&FhX`Of@pN02m zr~21b^8`Mg@A#v=G%M|zbjMm1HS3uZIbBaOuq7TinZQ={Y~{A68b_<%)_<~m=oz%w zYiZ=}yvapR!?wMMs>-u(^{#xV zFY5lNI#)ZW@6J7wS8Ym1`u03mp1-_4%SQE)ZK4b&U~b0HI3EJ-Z;w6 z__~ePJtg0;cap4+y`(J<-tm{sD4LQhYq`%gc(K!_m2sa-CSN+|_wIFc)Y&?n+dqyj zsF>|KHSzlTn%fH{^7qa&ylmQCxwyv7pDps$rp!yei|)8dNl%&Ul75@Vx#Zx>zO4Rk zQ+x5(u4-3H&IV{ViB&!*?QQr{WZ=HT-s?qp$j7b653iQiTrkU4i{p@s$_Zv>*-ctG zE05pvKJ}kr<)%3ww@%+YWpT=sIl-PccduBsws!hG?)kNie{>gA91gqweoH?OV|l6U<~v)|e0xspU}t~#RiVf|eyx7{p5RBP zW#yjxTz*n9D<-r`-8ZZ4egIFsXu z5Xb93a#KB{{DQaci*M{%rFp59$9mG#FJ-ebP2Qh*o4#&W=JuI<%@5v-X4e^Sz9fFC z>zn(}<1?rES;qT(JLmB_sK)ohzLgK>x_MjAK5*T@f_Lwx1<%(xoK>k>-udQFqR6y@ zQ@?uFxFnfLcfKl|QygOBTl^?DJLu+$m)AeWoK{*W9n5KNlBkXU)2(U77d&#tWO`hw>eE@>@2=CTT<+d&X}j-MW+2Y0d*t zdxIRt3xX$}uT$CnLB1=ehE;BJK@>Ola=jT(#EuzXzrcTL$;Y1`m+qUJFSq+y(?n*O zqLjqK+opb>kICup`mjVQ<(k#x8%}J8Hf%n6;ymBZ;2%rr+K5zHa^pzNs9E ztB#dE*R;0%IqPZpC7bQnUDn+%{3my*rt&`nN9wut3lCkN+3?(D#>+F$#3 zJvY@&mV}+;<(l+06)SFJ6fQls>cp81o!d4y-t;_h z(x%AatJ0#Yd#oRG&lghbUwxx?-p^-(TY`Mnd7igfXn&@3>4*6prc*wy5ue2py!XrP z#XU!s_dJ+aUG`Vo|7iIH@Yc)Vz<$h`EDA2{MP!Ouih>B0vW%~Zn>nOm7lB9F|q&Kfwdbm zAJ4XLzgC|Ux!|&_eM#@!J^XP~b*nXgpT6|hHYZ!srZnVbNT$ioIeAmoR+8#3zCX4;xKHY1*veI}W`(yt_k5?DEBAIm zrOl>~D-S2`dsh^a@c4b{qtzL^-uLKk;ok8kr<8NcNB!yA(fTtMZk#_u&*Rs`J5^of zhdcL#ns?>3b>^1nr*6HecK_!yaIUgnZdx|=&hk}1vtJY!Un*?Xu`ZnYCD+qp+1#J= z&WGH(nR~hFpX`VI-CNI#-+H<2;*#)pZ@8xOoV=3U-2C%DL#y{k_QO%<+qc$lx)ZB) z_qamX=V-1ab5iDeZ59RHG-v+k>dtL_nffOc!$j458ax?F)tfJEwuxWyqd(@#jrf0>*MbDbD~h$c+S9&HbwCkZ~@#`;uo^NG+W{hwcl znrB+5?D_UOw`ax0te)&EMVBA?o?M#p?#Y_@CvB(Aipi;yxYpkHwnSUjO(Or@QnQcJ z?HtR3=dOyjN%>&Fd6I#7*6K(98MrED`+a2p=C@II$#lDn-WH?HJV`xSfh%csxg|CB4VkL==`pKZ6f`Z4dJ|lj_sYQH z!Nexpy1;3^zJ<3K{xqC9I)kV1YOn89i|wi}|1+@N<(;y$cgqF<-z%E^nm)g!$LhqvgA$fu$KxK%Uz%0p z_Thd0udBk%>(nmSq_bT6;9t7peQqb$v69E|LRujNz=Xy{(GZbv%leW*V&J$+q-kNL`#%fJdJq!_M(EP@kFT}J>xg5QqQ(O z-nqvxQ}$o~nz;rFW}pAgymhxxk~M{4bwRb1uT|#?)zp_i?i5ZjDDK&4JbB8r?awlo z*D9aBYOD8t^M&?<_gFs8@3hffmG#T_>inA~FV7U~tUKM<^Y!4#Cxt!5*SGqAcnmtB zZja|9@6)_yAI)6Fen!8WcC7fy$3ENQS@REw{WF)7xGL?}Rzl@>sg^?fQl1{aQ2wTC4iP_f3D6 zW#<3L^M35TTdJ2!=DS>bW0RV@G&9`m`*m}syDXb>Stu?JN!?=+1+vQPfwmZ}4n zzn;~(bzf4{X6Evsh{>;7E=Bl1^6r;-`8|7iyy_S8P93k0Qwo&?4os+g#r~gR-L^lq zt11@h3#ct!qpbVLLvp)}K<#JmnTMxFTGq#R=1nn_ySCiqv1>{AwQtwX*4S3PI=N4^ z!u_a~h`_e(#@y{a9;^Ny54_*ie{`PU$7Pcr?v)Oj_3qqf&ns_RzI|4CBI2~5_eG`T zd5QCWg`qa(kNm~60}rchU-s(aGXueOxham@x0&-zE%;G<^urIfQ`J+Z@f!0a@)<4I zET$kg*K_F~i&xWr#V=pmoA+_*^v#oh)V_;es=juyTz3BT^2J-b>o|Ypu6`xQyyv6K z_KWWM(hrVpD*a;f$XRe5dNp(n=+^$xw9V|d~@b6>+J zhsUO3&Bc#r+L)Hg&0lu!PUf^v9ZM@>BSj`LoH*wmP$|RbFKT}HwZHhfl`G<2hD}yk z#4K}Z;W>dh8y;^9tv{D__o1d`^oQ~w6|^k?Gm47BpNLC?74)*gL2#7)epj*Kk^^Cr}E+G6W`V6Rm!uNC%F09?)WuMtc|BgTIRjXG;-JiYu5bG?lu=C5$Xz6P1 z*lW)n9X)$x;9<8lwy$H~pL=@t-O{uz_v=GCYjPj1mwtJS?b_n)+0or4JGSladYjr+ zao1VXiO-*X2gBoahVynkKQL?S{KLG~(fhAXTr`zw3AditgQ}`<;YYpRN19zXZM*Vt zZqk-*9?3kFF0Nb_=NGK5nj$Zt@Zst1xR>SL%dMVCM!DX&Q^xYVf2nZ4P06NM(?8Dq z!LPQ~S3K9;vU9!IySewZqN1hrG254ShgM6b15U7Dy6k-O-wwcEd$UyuL%Rh)k4mwC^Y{mge?1v({MUjKv*G*-6e zz(ddXJ=~d+Nb@|Z`$=+d6RSN4QF?TT~nK^@T*mF`I_53V$-f??>8+<7IhL> z8<*?#e%d=<_urem-hJDjH(f(*;v?zx645WMTvqCSJw2tzI`<^Q$NvnkMq1*9TlIg2 zdD-EQa_@Id4>PyAkiSiv>ELY^`I;}kE*BRDHhIt9*A$`|_HFBv=WpKK*L_<1cob0Bk?4__RpHUIGNyO^cYnF|^|BRf=bIn9m47%}R_mQ) z;-!C;itZ;Q({yTgO}@1JM_}gCr<=F`;s3$bx#rN8nCMOZGuKrtPu~=qGOfRES$q3G z`MBsm2Kj<^8--M)fJb{dq%IWc$YFc z+jGams^%v5AEma{Z)(CnOg-MZHGRvh{|sm5F`rh>mv3MHJTkCf==h@@mrjY-x;fRX zc${Or;d#b6%h&%ZSNut3?@_s8)0^(Iv+v~%O;1_xlwS`n>|FL(?fS#-ELU}Gt*#_; z?!ND~D!Vzpvx&KfJed z`5)u0*WZ0*5&JHAr10d0uNHDsgCD8Hnf&GvdVMb=S-^13O!hqMv`wYb_hk-0%(aQl zoYkFK?jdz8)#;*Oi5}o?^&aaS3G%gZT-DTncJ7--1bi` zySwJE=O6XN$9Lo1udMxJnenT2YU9}(ea}n`HRZL9HuLeH?MZ((Yx2YVW*g5(^`d7} z^R*(+Kb1F_$yRt$S>f>p+n09oo{#=oyIx(lWq0PHZM(Im8>Kuv^qk>w57XKI46lv` zeds;j^UfyFbbY&y-n#WO>q;9BSXjREIPVK%tFPUkeo}Au zta{Nsn(Hc(>NmcczUDi}!i_r&j=HaZ887hVKLb}p?A<8IE!I22vbCq~>d#qmio=>a zKW>LYj-bqgl{y>rJcyxii!JpL=;-j8bKkIhPNDS7cVStV@I zUDr)^gVK__bTZ5O_44WKWLK*htL|KR_BiABS+$+B{9b8AmtT7C#NRfL^`m-+ zjqU2JZRZrWHb0xq!z^H1TY1j@*H`C5v-Eq`+c=jmuJD!m_x_}@gjk~VrY7cujoil^ zpY-Qk`4w`{_JR%HthrlTpUe{dc|%Wkf5p{!;^&+tTYhHWy6YF((Y%yPWZ9MXi#LBS$%{GvuiF__2Q)*K9mj-JSg-FYc2iPdUfO z2`?T@2yJ{K(_~QHrLa8o=rQeo@{9M!9h=d4;oz~gnpY-I4!^oDT{UgiwmECF-j;7W zw*QDfTgCmusfyR1Y-OBa#i%W&QI(S1+;{U&*4OO~e*(o1|0tc^8EJA%#eK`4-Tms4 zuTOpvo&7jB`RJ^pi(<1boV%~bSSES9f320j#E(t>9MPGZqOy3Gi|~uxn7R0%+~S7X zU01Bn*}YwRIseEtx%2#yR_px2!gKx3n!Q`R^t#LXn_rbbxHtbve`ISPR?Ajx-t1$! zJ2G7>)Z^4P2HU#C{|t=w&3o7%&KJM)qv=7$e}+A~`;1gGiptije7?Wv+kb}F+YfxN z)4u%WZ_sPsrbp7*S6%0x=XzM4ko=FO>dHLckNfJefRa?Y}>qpZ}quZK0TXYs8d@u`Jb<~-$%El`aL;c z-`c)oJ-hb6TsbDk6UsfmWE$KTT0YvcCwG0tTKui!n^DY<0 zyVFAtJk~mr&|gp(_T}_>N&a@RZEBp4E`{tqwkg#?=V<@7$`wyT9^IMrY43jN60>ic zkA=2qT**55*fNem_UTRE?`C~iPWs~#Io{n@7T)KZs&ZuWIIq7PQ_ku$9Nw zZOLq}JLgWWwVb+r@0W|2dnc#N6Zo*d>#MxAcUU&BEEt}u>?Bj!Z+V(;jzt*n)nHA*S(LXI@g~ICoDIcok_LM$a`ay1IK^;ep zXIH?BZOXnJOP))=n{BcBpWR3G?$WYMFn|q5c++|4mY?t8v^w*RJrCp?;r2WI{PF~KfLiqcjnXFV?~Vl%d!{!=wJ0CufC;Dda~O#0cY8> zcZ5^^{yb84boRfW3U#6fBeUv+uGoq9YKLFQjSkZCU_N26C$G95zZr^Zkv-kh{ZM(PxLYp%_++IW4Y&4_ZF=`?mv3%d%iMOR-IO!z?}2%#p}zrcKhZ(>g%lhu;}oiZ@YZ=7&|al zH}-7&`X^id(fiIl+G}F|E_b}R*5tE_$7G2KY*SV}5VQ4{+nSWm{Db9>*|uv-_84XR zFm2Iz$`D{RVF}amoyYvE)TM&1-oL)@?wcBQ(GPj*9ZMZoZR}aFvohzcsM^~PpQAnQ z?%fr?-|&HcXZSq6=HTrcXC}ouOjO^Yz*9F>zOg3jR{D|I`htsGZKfScQc9eA`%%fu z{|rp$AI7R5&R);n&;6tAbokcW^*JX>eun-?t-U>EeU9LDn|Ch^C;ew=xi!Ce%YO#J zc>hP%j>T+;lpG2_CwFZ(mCV@s_11p|UH)aKjdmt}`c;uvs&VM#I&aHQ%NNz$`?NdL zJh$hxf0y__nUAse)@R&Lne^0aPEYB1(KB&BdP`&LWc|L@oUr+`+u)~nRr>Xbv4YpX z%+~L;%3CfwC-{bI)v^c~p|zYA2?g#+9^V;0N6j<1W@G)xUe@K?hvTWsPg*2({$Y^2 z%011%@9wXE*0Pb)_|~Otl(5fPEU6clDq0&halh%^bzfrF*81l6)C<;FKZ=$2+j{X! zM-J;2Yv}}rjYo^6^pD*BtN!rP4=3ksH)k%5eLRh|kK=scjj~5;YhpiqKm1njWAvfA zoQYHT&V1S^{cDb<1+(qOuD$DiJU@JE{^3|<*Icoq`ML}fpMN@NmuC0jypvJky^do7 z-Cpm%e!B2uoxp=L?)=xMW?t={GHL6z&bU99{LXqtMr!ZPuZ}tNqx|viyKIM#gl)U_ zFDdKeA(=OK9Guk*e{B4-ch&ROeOmW24SVw*E-F`TF zclB<4{i&a^k_tfV#j5eii3J zD2k;$et@anp0!7E~7Pw=omkrYDh~cIRlv-Tqz14b}|oS+gHK@7WSBoVC()YKvHbL5QK7 zf#HQ~$9qcmvz&YoYj)XV)2H>1`~Rv174Nw;XS%j${lVKO{&Mqr)m<}QX`3yZTSs`C-eJZGqBaMy=AFzpj-Zmhalt-}vy#tYa2O%IELSlr>^} z(l|dRy=(TNsPoPC4`bpZUdzc|epfoNbS-T2 z?&#%9uP0BrWRtJj-@oRMr?BFVZBw5GRL@}I$5dzK7Gz7fs~D3 z7(%yvJz5ENt`w(zD?Y{f_Z6r#q~#Xzjx>4=Dtf8t`zK8#C@ZLY0EzS8mFxv za}S*tT_Sd)N5SI?hDs+FY>bI7yohG_)&K@VS+?e=rOW&hu z{Zlnw-oCyvGo)#CP-wW>pOe~gW?N$K-r9HVvTvmLk^ZitAG^+7vux4+R^gJlf$@N7 z$d7gZ^4p@^8oveQ=7fdyx%%%>nYiTj{r6YrOIP$Cp0#iO;@IPhBcfkrrm~cO=gjN) zd`daAEQj$rdtXE0rR_GAkMnt6*$G@O`K#~Ub}c(&+i9h~6uV`eThkVoufG>2X7sGp zYn|4`GOv42FPE2B?_INg=gjPn$?|;D51o|V(HgNa0d%L4`NR1~IBhK1JKj8Kvh>?1 z<59G52Fv}+`#*-YH-C+1o8S7qOzK)=a`Ec5PkPgfKDMQHH2B9ncz4I*I74mbeYUOk z?3us5em&li)AH?^?MAod+!GA;lssDb>DbHot-mXCiZ6$**6>@dyYA_!X`9O8zRp>@ z?|OFj?S;(`?M0WhKJM5$yW6y^<2|=dO|tU3>XiOV%YLkU?DDZ}qv@lAQZ~>3#$>;~ z!RWSfZKlDGXV<>!JlJ{p=mp{1Ub`oGcplc~dn~sng=^^GTKROGl(U4i-5CxrI0EwPn>c}0x( z{ek}s4VV9Lel-6lXj>n+JG#PWyGO9lil2^O&SqAaANwbDc@Oi7m&Gp&d}|ASMz_fu z)oQap?A!ZrwZFtGp&yeyw_P3( zKC1ZRTAP&$`>6hMK_wNh(&yXI%wc{6mp5}iBi5kzv*;Yrc zTbZtkbU1Ffq$c;fNcE2hHEQXm!|JkI%Osc}7OvdpdjHKCf$0o8}*h@4Q}T znDKPa%#>1xF82j%Z}ZFCTYt!!pGUQO@0RE#!n>Z%E>xF%$5vq5uv%X9Px`~NdD@0c zUQUQ~7xC&_VfRtibEQq>Ij^1x?e)#oyi|LF%(aUV_Eq?xP!vvp? zGmhPx8N?a0S$41SIpeT>B0n}Co+o(yz4~m=ZM%9G8oF%ac`NgH^2yh~X6-NIcYFU+ z=H%5Q2dyUdtG-YBy5jAncPBIU?CG(UKRR7b^keV7m7;#3s>w8nf5Km)8zPsW=p#Ut{wjrH_U#dH*@6{!L3WGT8hq!u}SIPxBC2QcKiC} zrpq7ytv~en$M(0s%%{F zEq?c2Wv<))GF!#@Blj^mwT~hN_p`2jp3t$|n@4u>?X}*k|G0c)+xg(NubxMGwRXhu zslPX|alEpv=i2`<`jOboM;W?e*ACq~o7kFsTc~jk-`345etbUo_Cwq8!`rM(1YQX; zK8s;xn15{3?93YT-Jh=~Kl*XI`=cfMhCU&#phrd9r%r0bA=?r#>w2Y3u#SCR?T;CE8W-w7>k+ ztB;!+4)5Rz-S}$3x3zboSC(&o`l9-$U#d))zt<)&qq*zmu2p-twB)O2d4A}+R>jAh z>;9B4d)*-xx%T~|-P}EGDFr`{*YC>CKK{>Q@4k;-+26zVxy&n=ENx)y`LJH-rPzN4 zfrVGTcB{_1D__{!#?13&SxxLmwW(`g8{f?|TbU`mE!pG8?Jp~S%t_9*u3NtD_EM>< zdlwaNKbo2=^RsCn)yJCaVR#Wxq<+#u`7;y}SO<>U^&5@@yBi zc+1Nw?<{}ccwyZ5hBd3k`{VKUt*>*sK4?k^dN4QqTHI zPQFjNNN={0HRFyt(}^EWANy31eSGaB?(EPV#d#kzQtlWXk(;+8_@~s3AGvFONL@ep z{o6dn4}bfX*BzX8ExIH0jHLbHiO2I#&Hk`H?!&T)k8Z9j&9%~e(=>P6E3;*l$C>+{ zt=)0-_xAly*DpWwJaBEC`Km{cZk2gQ^-n(+_V3-=at;5-H%tCA$T>gKToAD&vV6tF z0;9_JA$4j$KE+GC+7#!z;jASy=p<>T_1SVtm)MW^+K05=GE5d*DAUi$&@A?GXXV!* z*Z7Zq`yaA=Tq4!ixgg@@tok`?a@RhLxX^f;fj|D*GMkNEW#w;wy~&Ngb#;9ZS7D&n zIbZE1Z{KNq-CwlriM?=5=DHt^y6;LOmQ^ZtDjV(6(BG0=$i;B-8$&f$cgT;du|jx@A-0@2Fp@)%Tqz z{3w1rH{a(&-NuD4H<)bOK3&c8L|pGyH{&0n@vMKGuI`at8GrZI>O+^-os3z}#V<3j z*>vNF*T<{k+8@*wyYAS~R{1{9`?zt>mh7z+a?O_Zy@5XhADvZp{`mIX+EtOR)mhhy zTsB(%ET0y;wm(7o^SZY6f!nvA_kVrj7tdyykCCBV7d`!!t+RXmY**FZZCUp|@11yd zdAHi+V^wLpmdwn3|9EFd%ej|=&5ivlnVrBj3`rSBD(6h4x=s`N~fD z((PjxvU+nRn=Jnvluvy7Gi{rlLB)6fkG_Y_W+t;P>Nv#G>mb85{k_Ig@t42;GaR0` zL~60sRn<_-dZSHQCrzbex6OWgJ1pSG#E)K&j|n$luQD|AY7 z%9}}DPyF6`hy8oHZujC@AFdzub$0#Gd%Zn*@~Q1Ray+;m7c$5{aet<@{m^^KS8{S6 zx6JxCH!p36!YRciV>0fpU(WcTy3%XseM&1e@F%{w{bOjb<(u@(=E;O-m$;0 zT`a$L;`zcKjit*gewu!3(LH53fi3Q@=kW)=X@A^59=T_5HFeK)ev`K+9IyQ1+W#=N z+I`E9h09-6wXTZE+<4+&jS7#^TNVEN8M^kztDd*}cQ3hGQfqeY)ZOQwXDavTRjRAY zR?VwDtFcsMOZmNfwP&?YEseYqcS(!uW6`D`d3&#}Kl?J*-0Yub#o;4y%A2;%54?O! zv`t{+p9QI|iP`ZYrrGN`Z)S+ERVlmZzKi3o*Hb^Yhw~OUpUtWX_%V~eYt5QR(b*NO zdz4HCS4bXM@phkr;SbN{6>;9Ki5Zu+-{N{YLp+Hw-+_an?3i^>;HJFH{fC~0ta)lx z^5IiY&bn)p0GvM$sky$n8(-vpGm~Vb` z)4MlcZXExR-y84#qknnDJe59A-FZ%3uP2=OxG90}`LngW?#HbE6!Pt^Pi+;hY)$Fs z@~bKis!)&qaCd)y!k#N{7T4Ozv2cG{cmG|3b%Bt zpF7*q-{%ZLcXsq9R|&3;yyE8{t}=D*teE|xzqh8|j=N^3U*oV1bVXy|E$*BJu@f5@ z7((}EACuF%YQwlRvwYj-t!wA*T9T{qb2dX!@wvLK(U166KCoPuyzj&L_FR*daTZ7J zg_TVUy*)MNp^?>FX7$OF&t_DdepEYe>w~-2?p^0@31&hs%(-YA9I*SZGv7~D$t0Pi zOPf5`7iOo;-h2Dj>6EW&EdLoqzS{qAQT%Y`vQgCW&nhm-x9w-xPmTCt`RK3vp*ZFJ zd$wPmmpyyNo=yFn*6wG|+gi;(weFAZ#}^;|Gc=d(Re5>3DF2y`YRa8}Tp8xubLJoG zZ=Gj*X^-V2>$gtd{kQMVRMuFn^*pco>Zyylu2uVvo2puE==J*KYyIii$>O_Nw{M!? zf0nkrPrpQ7dU=PGyi#h>gAEU)PW@ft^GQ`?0Z!Frfu_5?96_&uCJJO>dGsD7^|p7i_(+~*dM<2{TP3A_I$yL ztm9s@B5p~0d~*|*;d-&B_|bljyFZM5H(oNi@%G(RdcN8LBo-G1>TH3JPg)>BC{rEf2{hM6B`-Q>J`v3>3+rWJ6kVL+OlTd z+_$@ToNu?Y+;Q;_=bDPNduP+LZ!a!1{Isv)+|>Z%{|t=h9|zP}{g|xZv~~8+AdPF) z9j64fJ~2MtoAbx?V}I+Gey&&Fw(klN7vEn0>RI9``KW^*)I0XrCO%%7Z+chha@gg# zyBF8$CG!h!d#dF%kI(R^>HCm9>;J_!PIjKWG3;IeZ0}&__nD!Y|dabMtiSi9>+Z_%>SEq$sHpK9CX|E)Ulqx~_*R(lcNc&{$$$Vm^=8=W*m zN)y7{SOh0n*aUgcJf@lXH!D+fm*MKDQgLhV(A>*$kNn=B`_1>G`=fE-$G|>W*Yk7p z_W2z$2>rOul`tZ99E7FcV5ad&p-5A*<-o&oJ|k=^PllQjfi9T*th!O ze+F^0&5M5?OYb?_ab@CXInF=*_EC2~Oz+uZQ708wksop4%U-AOUB=O8O_ba_l9}J9 z^B5fvywUjD=ZE8?dftpU%~}5$LN6!mZgJnJr2LeD&*Iy&wM(UMTL0sY-}AI(Rajur zl*;J6Tb|8+x@~*SuD9z~$8vmm-?6K&`SI3|qF1W*HhIl-XYEa>asJp`u{?O*w{nNe zX0iKQQojH3&5eKk%k}z^x%vUwiGSzKnqzdHt8j)(!>+$vPinRFrSDh7{Fq+Xy*&EH z%l#QbIsyw^<)>c=IXq2EcX{3YmHX6hU0WF@xKdPF^~|NcbN8NJemQ*Gi7P)AK3?m8 zRD9#B&k+)*SdZQKVDW8DzG#i_)f)fA%;k4Zs~nSPIx2U0!j2PC~ztUo}M2Z+4I3`quKkf+9eeNPOM{uAJ?Evw1lL(jvf^PrzcnXwzwp<<2k9Ty2yTwn&M$R2$@0af zR^x~DC&0U3o)i!{T?JQexO7U-q9`{A2s0z4k|>&U~L$x}~h+ z?M@*(v%i|r^QUQM-u`MOGEe??*i@J2f3A6_?L8g$>-}w)oSJ|iQ!^jcTAh-}dHc3? zkCK6MfN^8!8#_gl`CK|R>fb`A+_LFO^<23^8?3vh%4-&Ro_<`uH$O9KedF4HV!HEhdcTg8->3UWA%QD6)AiP`ueCMX zw0XJu*2wyWp5BtYUibF*xlg9gzIWZ|i+@*U@`q3P+`3zLgx8*X>h|Yv*8D^Ka`lJI z*S1+ z`Oj8QN$Cx9N`BU!jrrmJsGlc8PI1rft0lXucbsum>Yb8Uap2FYyNkEJ&)@yQu-`WI z_qlMnv^QHyrNZ_fP2CiAJGUpAUnu(JJ-cmJOSxSQRa*C~WMeL#Q#ZBvF@JAPP4LRo z<++)>tE?WM?n&TUyyEq&kbicU-!IwH70tTOZQk7pMtf8@yl{LIuwi9Q**(trM<>Nq zlzYV*-Ky-K@p$S9pE+|E%u(MElf2-lkFu!5_IiK6Wiz_At_oi*m8YAvbN1GqYb$PA zn}2$_n7*Py$)7Lt;|qfgI|cqTEVbU|y}vjjdwqr7^M`SBm)-qQ?>9YqyOHvJ+g*}A z)wh$L%Q8*;^J|uH%g)*RPrk34%@uegsAQq6DAN((pNme8q` zbvW+qYpS{J%ckG^8NG}awg>bsdGhA!KI^qtmsV%z%{I^bvFm#Gz30cKRXttAzs0du z_DWXw{FyQq2jqSJiQ4zoWY@2G-MRX;p$E4`dZs|*^?Pe8;(j0cm48G+KQBkoOmO>I zE{%ZG6AB8yi0U7c7s!~kZN2HS&a7=^Z;GW9kDXttdg^D=4#O22u@ z)V;T(toG%WZ@ZP3S>yU+ZvG=*zC$Nbvf1CT)Fy_Xo!qsl4{xis0|7Unm81_@%`iRA;A5tN!Jl);y1ns@LUq{yoIAem+qN+s7qs&0hh+21~|U- z;p`gmSzqUFJ)PUS+(O*y}$MQg+F%NKI-f<*j74&RcxMHiiFIh@^ZVYAFqTP z&6=_;f8Xrv*Wc%Fcp7RudCJR+`LmWxD(~NOZ_fJPt7CVDb*z1GpZ!OA^ar+$D^5Ss zo~s_G=5BDsX3M+|pNR`7&%D|I2?|%}2|1A62H!x+?Iqy5sJgGK;nP zt@9*4Ot~j~P4Da6$V=~xeD|nJB>!_wsL(%HHqY?myoJk-uG8zA_N(N&rXj;>qfM+V za{H?-SV~^U#(Y|77ya_*udh~da`S}Rw@rz+y;OC3+RNKFUp!tOHo3g|e#qG@dEWbf z951hV5-R2MtEJ$~kvVJh9!4}76p2jYUm?13{g3pAfBTPc=xq63e(}!($tM%%O#RQ$ zC>$xr_rb;dp53-f`d=R?2?>0cF4MCrIr;tl%b-6o7fkN5M^3x$x6j;@`Ol_fKknGa zKMkzbI3#p=|Ceu8v36NgK?l&y)n2jNR&;Xt)9l&LKbib9J@}C0y&ONUVYP3AX7ahh z$g1~kx{4p_X0FMU)Afw|82J2hT0`5`pq)8h5v+b9b*y(>rZ#Ri&dO5vp*NMHm=joi8`IOgO)zf0NZJqa}CzqG% zlq?KdG$pvp^Zvc5>;8ThT~zfx+4v!Qqe;C$=B#ClSH3p9EuC?)SGwP%sXG1s&+5sO zALettu)5!Wy#0MC=av_FNmGuNa{gxs`?#`3W)5q@8Y|(sJC3U@{b1j;^=|yZsAYQ> zXMYoLPc2EDcJ1vgv(jU476z2pK9x`?f8Lk&Bl^SdxQ~7tYfZ|pT{NBI^XB2luLqSc zD}P+8GDp4o{`>1spAaSFWin zyU>lRYhx;& z-FCY8eo^%8oje|wPlOpbs6R{KWM=qg^Ka6R_5)G>Wa?#y_mfCB-zT16ue)ONA zNw-G#>23GbOJC1u{yFi42fM7cambItN8Is@FZQX;J`z=PZC8(7@&QJn!&6z^jGWWe zEw%fru3Q57)EA-h8!P>h8;~=!)|bCk1j z?F>H1J?*5tfyA>_K~p26e&xS@_I2k}tB?;RQ{DM1cbm<6)_v)e=JBbSxs&g{E?U>U zv?4q3M}Ow>SKG_YqH+&g`4(rrS}(z{A#sA^xx0J%AAMV)x5sqR%YPbe$6m+g#@#;8 zxcpPi)RYtdc+bA5etc_7oy;Hm{|qgYk3II8AMG*C_Doui(mej1_7hjt8GKk1c29rX zMP2=Wnfc1wJ~uz9IVW!OH&gSj8&_2M_J?%3SPK{+j105tBlH zMl4`flxRBq?8RY;7b-s{f4KMlP}QLucYaLL{!+y8X)$w#E!&$39$$|?&@MhUpD)M8 z{=r?dFRwn{JzdO^)Typ{yr$55_RVFBe!WiJzVuYcJhP>iSNrB{>o-|{?#KkB)iM1~#vwXJ_MZ9)qRv-7_dKJm;|J05B9 zK=5|Ya~8pQ3oe`RGrz1_et4$o3!98@<=4I&Ior+G-9K};gjVRL9TJxR^cJKD6y0yR z$GiEXeAl_@rK@Ip9OJ%Y{WiFv$ng3~_Vr)SM&CTSRk!}Z*DEK_K6>dUyzHvUy|rs? z?}q3~-_+NAzxLFx(DwE%=OrC;wukd4J`Gj7G~ z+H&nbgY~^%rD`9ee#p6A`pT>Cv31L&XV-3d|5(g^DzZ%PL)VeFG0z)+Joy|eegt&% zs(ZkNHM(DPt*pb^7$$9a_4akBoqmP!;W+uN+qYjf)p-B?faH_lQ`;;h*Q}_M|55x; zbl&7gN3XAYwtE-fq#GWuSaMnx+7vg1Y8D{lWf^wzYnXc+)F|dx{fJI-jq5w6nftR(Q+Te(5aEM@ETT`c6LU zN-$zsIECey)tu+{Z{|n!AGGH#l^3nZ4!oLU+Pb0dXt%}8=JvRQ;ZGI*sjaTD|G;~_ z<4>l2`y*#LCwzORP`}OO;Uex(cEXYfpns(`o z_PGz;SC1ZhKhtbW*7cijmrZ+_b^TX)`?8Nud)FS?ocSr1<7q|v8Np4vcbA+izQOZt z?f#BBkq>HfA1!2Wf1kI`z8PN0U%KE6T{YMtv zDUDKBPyM-Xz4MYETbEWS`(M_1_~FZch77j5HFpmb+;|&d{KAgWo~I<%>ymcMwWaRS zC+@wy!xo;xW66-mB`xvT;<@C?e~LAR`#&6;onBe`s5|@0&K@tNKK+>@{~0)~cUrvf zKeUa#(ZpK6wXEvMuP5bIEsOaXA2jyucRzpHgDb(rR!;9XD5I2k9LXR#%s5nZf`!OJ?ls6!}n}I+M};6{;0RKeAyvIx29~j zK(!AM5As+NzF4xaU&oQ(QX{?a^*zz6@8=&a%G}j9yR7+5T-Zk&9?lcVJ%);Hjuzaf zKF`|vq50q}y{(T<&#v{3&bIb=WN$q2v*6_0pH_t}dpB?WpITNY$*EhYH_TINNGAge9;fX)FtS#4ze3x%o;;DNeT-8Eu#`&7Y`BnFRTupqaZT+nI z@TBhU)PT?>0e*E;C$G+k@~&~Zyk*AwDDCL(A8+FxO6OfEySabi@11vlB(1J^eX!l- zBm1|gA9GDBjx^f5So>$~;VY@L<=6VuK9xKb|9t7UjeET>&Gj+m3csA17i|}9S*(4x zB)m4Zw_onyhkMUmE^U?PfAKcCR(Fnnx%{ozi77XXn4ajdZ|eD~JnQC%=dCs3;)lLn zRo~zLJ4UvX>)7f~zaNCwci8iltmpfY?Z3-6NPA`8BB4$0ifTsHLcYb*|A|cEZ=WUJ zVe($U_1~;@)6IgO?1_u%mn=BE?rme!#AE(veeW%*Id^Y&?y@tpvLrl%OJ3glo1Ct8 zx#r|&*NopUmvziP6c)$6^THozzTHX7zTJJ4YZkGj;^h7PXZW`^B$zETvN&BQzK^G$ zIkIBfyLy4!;@cxm9b+!?&-358vQGGq{iUz>`CsiiwsOtVJ=0E3X}#Uap)MisWc6(0 z9`T2|{INfJ#hPo^oL(AzXK~A1>DJVr8&4=t;E%KTs z<>f2l4{Wp36RQ$EdSqA5Wc{-`XO4z52w1*6X!GP#?MA=f2d#4V_bXgnYr1l2$DOz4 zLRO#l^c`NfR=;PSz@v)Xn6{wcS6zSf#dqo0=7VVaz-FGX+dic!?_Cu?DfZ1R_uQG`(>2a0rTWD4!+VDh>VFh|ty{Pvc2ib$XOqqo`ST0DiJtpo zv+0BF^}cs&|HNjcU5dLp`+Jc|o(hlI+f;>hMa6wPMAcjDpSn+ zv!g3tuMg%tnUt}r?$nhlTW?+bUK+S*fApKX_x^@f>xv)zZfCcBLj!lL#yQWlq9^)( zYdmf0wiZ7&oBGh#JS4lG|HSmLjS0uj?Jex%klpbzGHQDJmz#U)6Bplp)tf4M_0g^F zEe;RO=dOCQq-RAE=Mx!b_ntq(dNUuDUJO67@l{u5&<$v-KuM1yg+by*E_vvm*f&gRV0gLkwL+#Z5Sl9_(eycn^B)W5H zW6FJ*-5Uz;Z_C#6XMer9#{Tjj&+JFJa?dV3IePvi@gnYT53A}bUq}3B;N8Q%?8owB({EY7Hp-lMH03&{ z+QaQn5;#ttS1&m5^7^g$=GI&9PfuUB{rYGAlnqy=`lpLr-m>-k;&;FIte{Xg~O7&H1Frsw=&FOFqld$0A!V3SRc9Jirzi z<-FPQd7;TX;SaJ?-}md5#QMjb@m3VNBOu7f&n`3Z=htPRF5p`Jh*`IN_WX8o`r(oV57w^C2#?uaDqjGtU_cYC4qjyn!7 zwB8>%-?rUOc#`P!qXJo;CUr?m0uz>1Y33dgvUtw?LObgB!*#Ql{xREpZRxe3XW0{q zIVV34ylrt{)w6Gflli&9brr#3VD{IBoKicNjg>LJw))oDwbiZxOdq&3( zhpK0$Do0mxYw_eBUt7GNYs-4(EIXYm;ztiTCMf-62@*-VGmk@|&*9~J-w*PKw|%s4 zE3FN(7d^Uk-CS+;i6(W4^Bdgmh3ChV|IrSA*nhazIHEax@80V{!l~k?WH&zB@P+xh z-QN}QyUT;FuHSz>;MuP$mg;^Ny032AdwX@1Snr$dH(%Y`>!Zu>^`UR>N|E{ z7R%W(ooCHcN4W-`kJm+)eq8kY(56>K{k%uS&iCua^ZsXey~3c<6X`h==&5S!np0*pWFHKu2>7{$>eeHhcXCMD0 zHk>x*OgSgBsqS6>otSHzC;!XcTE3~4cfa%xP$4aK@vE+4s`&RZPunL#r_Mg{dOgiY z&MwH~g;j}Y((eQJ*y`J-McufTH#y?&@7ocPVd?>FMux}zAKt!lb$#bP_DeRl3nTXK z+c5po9S7M%mOnY)#yqOv4zuUoa$jtDM{eudHdz(Uf3RysC1|H&BP1E@9(Xv zP(Dy4vY#)1>s{v9GeGUoZ={|sy=AFUU9RTVaO?XoGkYi@n7S-H-HEf4q;tP1@*C z5-+q*%J*Spg8Ro5t2xCAr4fq``g{qx-RJRGo!PEw+t&XK?NxT2AAb8?xgOE?>d`Zs zJ&vDF9`amlx#AN*&}djEX=x@AK3Q43aj&DS+~cW+wXtWT=aUw3b++P?PN`iEz= z4}Sa4Ah7n)UipvOo_vqzo(Wf;;8&~V-?RQ<+tp?9d<%X{y|oqgGOO7(*;lvBJM8;KS^uNi{_TP888ybK z9J&(bd?$9#JRdxNZS=>w&RXEHeOq} zN9oM16C&PXcOEt~@t-+9f$^uq`IuKV3LmaF>hY~DUw3y)(P2K_PV1R7_^duy&6~0O zhw{T?bBiCyIv){!?Xgy*{q(kp|C0Cdxa3&4-#=n_8b&n{AzvnsTZ4@#*a;_tr;u zFMM%N=ITH7h|H><)%nX}PQ0{vtT@qW8jD~PUkLv~lfUH$?}=RclPNblcXjM5sq$MQ zmEZL^wfKK4@SmG};2(E?*vB_gF1v2A-gA!GaAQHqIiuR&7eD$RzGf$XJ?fIIVdAFP3wAt}r%qz0;N()6_>ZPvN-a2WQ?_KSn9{Yv#OD5eJru7?E?$c;coY*w&z^^{elQO^NT=>!c zfV-aWXx7Qc5nC7PINov1eDWsADrI-N=!LsK+z)<}=YEs__{!09D;17xv|w5B>&nR$ zYLmZiKb`BnkiBcA-%_t!?I=A@v-^A3OzP{djh)tA%X(q!e&)zO+E!UFPybyPZ&$ux zO?+$q1JCCll`8ff)LT61uImDM%}9=d=z=FQ$t-f#q4i8Zgb&YC_%Lnvs(U}0-W_^( z=y8tO#U7ngr#ODj^srFe!LF=q>zYxc`J;02>+4c;wpSgx<(kPC;Ps#3HHX~1<^LJ3 zcI{QvUS4Uhe?IoFkI1T|%v%LpHMZARe)GB*v-Z>5C81llmnHo$cmGg&y#H;|el}h` z&GN}RHp=}}zqGa{rTMU6)@RoRji!^fzx)1O?#HTG`Ymg=&hMO6-~RYYZ%=s8F4F@A zOu0cfE!q30i`*CZ!4=Ifq1LM3skATHpy!T?wYcQ#(^5)rPY0gP4X=N_;+5v|Xl}2r z-MccQC!JkwHY@73>*`Ct%5VNy|KL9ZQ>Jca;lsUtp9-!$I4?N)d-XX_g;LonCU)k& zts9fY8*=`ML?7oYyLRwrx18ZW)0rRZ4@Q-@9x2;)Yg4?iK(R`m2fM7+q#Bd$^{wCR z)Vhy(^IlnO9I;37S7YxI!7Zh)=Ph1l>GxGQxNQ5w<^C_H%Eicfc=P(6o~d5)=EmzOVXuwj1C ztuON9eBh;Xdu~}BUVge*=180Gt5Zx#O1g9UoTDm%kCcC+nB@{Ut$@3J!_ou5)A&aGK=!^=RD3 zY3(1roj)cR^}^8noA;T8J)5@lZmHgAI{o2%=Hn}Vyt?nY``Xnjr`vWYpN>!NnO}VU z(wdr>5Bugn+#BVs?frf$heT4u{P+DU&p!{CziXjn=KWvQvO>%5M$MRYWx7?A>&+Ky zX6H{`mp{Lj_k7RcgIXI8Kb#PC|0Lu0Pu|J17FRxe-yZPCFAnqU!=w9$wr^Y#rzN#S$Z5^06^y+dlBd(z=X{fOe|#aUPWnS^ z`(a(XSGNPrt(J6mF3v0KQq@nFbko0ftL*j}jf=mYW|giEzNqbb>QerrYgMuCzIS(3 ziR=@2X~*=Rp`|{2&vp6Kf7gB+_&v8@@bYLX&)j$5Zk3u$>O@DSbH`e)mK-ZDR3GTYr)t7rsei(ju zZSYa4bql}cx&}l!MJ`FZxuaB>-R|z+tXo@tt}p+*`|FjbJ$GZQmMuKZ^0mBQCui$Z z-_m{C{ocN>-BQE;pq}&9KI>_R-UmcmbA-<#;VyzHOcrBaSZdv=#~na$iN_h8ANGnUMKJM5hUE7}j- zQ@pe%WR~696%n=<<_g%ZS@ZJxJKZzVKqllu*xyD+9i7Df5z9b+-EY zyLVIP&2u|`bU$~6y2sTsaxy!oWtSZ^l8kPudLZ2R<(PK;QO*a_@$J8IqO=|d-tax| zu+y$-<3H^`w)tF+EapiaIQ`?6(n^wj?8dKW+S-LTz#UGu}_zzq4 z_r71573J>!UbVD3bJa`s4!s)l`p0MO&u`~lyl|B_W_k4TcuRzI2H-pLE`)>XHZXYmL(`sv>L|0(3x69qX zS5xl(jLENCANyt7?|7+{51BJuAGRo6KgIma((-7~-Vgg5q90zHzVcSquDScRe0!m% zt2DKy!QpjV(9O5kWlGL@<{#;Aef_X|cg25(hgz{t)-xt7I@Vm`b0A%Jj@;k&AFqD= zJ|N}Zwnux}Nw!VXFULf;Ptg8zs`lf(w!gEo^rK%dyT0xIWsabVn}s+vBvU2%8%08m2vmBf7_XV*X_=e>R%-U~3d!-;i~0JX_vZ6^t7`nGA1?UOb8_jy zZ@qS!SFafz5O*jFx3D*<&W;t?0TWx679Enu}0S(SA4$mq%CkxN|P1a>zAQ6 z&JVU<{u8vz#ZFOb^52Dlddl6WSkfmqMNJCalCD`-{^g6_l2`ZE$+b$`&Ye>kzGuzb z)c0jqUu^TPmG735{4j6gs?+kVU*~$gySOjo$R|Y({}27sEo9j|?Ur2kFMR0F8u`a~ z>s7_QeZEmSoeHS-#*462_mn<-?|7%bwR^ACZ@+2gjYZhlCcz@?-} z<>HN%$77h>>+bi){5bq@t+LZqwT+k8yIv`j(b+gBPkyb&l_@bHDZjFIue<9#Pf93M z>&l`j(~SeGBez!HjQT5-`{M4z%YU4%*$C>le7RlAb@|k;J^{U$Iq&nM<{vVbO1Zyz zeJ95jfxGTc+zb9CZJ1|RWV7rR!_A&e2~XzE-uyY-_R;*7wF@h}4oB~}mO3$CxXMW_ zOvCnH)LR`J&ise(8=~HvU+G>_8lfBK8urX~Iz!LnW!`mDpQUASwa+)To3`m$|IBG- z6|*KTyEpNfXZ4>um%eqq+!s4-+fD77{%NHvlG+0&Djsku5~=6k8npV>+l^bVJncD= z!t%tpRQdj=Ri@v*%zZHT{lXvn?DQm7O)Px6xvK1n#-gqZPvGlAKx;)Ve0Z=Yx9DPy zi0Nq$QO55N{>@zT>&l0vXRg&LZQRi)`82Yi%W9Gv`{xxaW;buz*Y7{sy69f~y1-|X zy=Pgiy|y~v?)ZiO41!zgMKb?0aFj@x-aT2ZwzS-c{rs=RtScC*Q>0Gs{ovpArcVB5 zwp8y$Z|~N>x7tsfzqDzG08=jpH7$=@r3Ed@x-^0|73T3 z?D^IDw5>C>xKx92SwsX6^SnxB<>uH;dAUcU?v{m%ayaw)iKd@FbANZKrpB$ecjLpZ zPujG3+pIGtwQ=u{ZTscdU9`Ts;H`|~jfOLf3Mu?~`_C`j{AfMXk5k8w6uy|XbF29! zkCmG&BY&#DuulK;IdYa(#j@+i%qHKy>1V3(L{&7_Gq^|i;PW@ZShDpYHG-1zyA#Ud$yKs-k$gE{R`_y>8*Rb zA70v!ZM@~v#4&zcHuvFb-mG`u4t|+^eLuJ@;LgE{npA zpVjSJ{alu(GO?+rp8UP?^z`}6s9)M&Zr7HSy(-x@kMa7J__hzPFJ*a6+uq|pU78`{ z*TgRe{%Ftn;38)^*R<0{Khti(wv3eB-sy5#$D7J?-dP-AR+-0O8fjWDb-yA{VzSRw z^~=p$vX$JTR1_Y(Q*M3!`^Nj1QSn^s{vKK-=Hq)d~!?`Ch?UglqGVz8yc#=rK_ZN>b274vtuC&oNHR`J4; z_q=o0^&jm^D;B$4Ih-vl@$RwW3=aJx>pv$w5N zon-AA`|;SRaE1R20_Ot{K5MV)x)3*Q`=gi`gHn-?p|ZDP?ws?C+`gnFYOT=j@bdjh z`x=*2{AUQdps#YVnAl{Vr)CTmd$Fp zm&bGQ){#pxGLIDXVKLb1mPbt4~iqJ_RW7ZJGRJTt9AY6_@xH|rM+aE zn-88!Nw)nQ{3Gr8k&hLJt_N<|xX1g)_ZdHKot_ZzM9!V3_Em07#kBWF&0c+w%zrW? zS9+(8|NiCb9~S-D78Q59^We4MmG4*8oVw`wHS_M>+?#s4=gJ@PXRlc9c{x|V^mLn0 zjGJn=x=q;{%`f(H_kMUCj-7VFuDfKN(w@)94xBi%X11TS!b%xUS&xCPrq3&GZ7g~AX8OLzXQoWOJ86G(-k+KE5C1b9?)47&V7GX^@5+Osdw0*j ztNm8@yn7K3jzoH=e+>Q4@cNtO z-k+K^*S{`&5b(%nxp?RDX%DmRtw~M&s5W(L%;`tvyDzVsc5%v=eEy2nN8}8)U3%d7 z?Xjj-Xm`TO2mjRBx6AzrT`%{eJo;kkmd*S2M63%-^^{67n5iJ9ZoAp<($;w4mvV;Q zbM3B`Uy&~CO_ZM7!7^d-O4|yVtMOv@DrO&%y4fChIsftAnFq9sx!rE6??~YPx~ku} zaN4xEX&c{#eG7RUHmRs6KmF|aGqbj>_KtpDzH{YA?gMtlAFgaTye{^J(W%*wJ}pa2 zTK?{dU_({m{oMZ?aAU#I^0m(De*q|eMsEfNk21RWlYskb$uJN zRBdb7+e_2$lc?)Nt2uQ$JP z{ILJwz3q=|t;6@VebQL_mhGj%ZSTg{^Y;Gu&meW?!||5VyXnVzAO2_He-*Yd-dB2$ zXQ}?QNup2N9-b?E@__l!e4nfJyjgN4+csP|HgS2DxY$H9J*lhZUypz2^LSGBFJvFr z=8viW8M-dL_TIQde510}cEt$>3Lh-bU8=C#x@gzrDQokm?at{7*D78rB~m$M^2J-8 z#~3#HAJ+HpvH13F z*Av4Tsx96kr!5pT&oRdD;bVBg@qB&MjyjTGF#C))~|l+~qv+V1nU)hU;tNTf86VtH=9t zU3-{3S0v8hsnmoIl*)15L;bIZp}UpdZo`ZI*L2{9+gRn4zjZeM#;b=CEJ-T7Z% zr1~{|6I^Ysty#V5Q_X(Sos0Lq`WALEFZSc~w)H0dVn>&It~$3;Cmr&*5{>` zFMXPR>DH~g-f>zV^1Dsyd0&3cI&;BYg)6~%(r$(aJfDAD_4s4?k?Z?`vN%QWjCUrH zODcL!7csO>d22m&L)G(lZNHb_*8BLqcaML~wq166^Q(D2I@!!f@0>E@r}Py0J^MAE zq{v83cHZ%E_898`Jk(p10vQun6PDq%CW}{7P7y>tsm-hRZNb%{#Doh z@b*H}t6Nv@N|`d1S87AJYP(Nf+@0qi1ztvN?^$qRee$M_duRLiemip^@tFUr=6V0- zTCTK{^L=#UkMj!e#kXR*r)@PjbNYLkF_W8n{4V~VB9{vDg0|1Q)m5q-B=REgnXj$v zvYnxG-~HOX?ERwK%Rc<5J|w4g-6l16$t?+$eV;i`O*&Y3S@O8$zfk+$65Dvkk0NE) zw=c5pcpfrwi86=hG0zhZsxEJd^*>tW-{UeXb~`co!+}=8XVY~+$LcjLUhEjUlrLTF>f~q7p7}{!jH{4Qt}cSK@M^ zTQ5!P4cxR-UA?RQk<*V;5|1VyVG1-lCK=@OT<+$Yv%yF18C|KdWD%FjTdUin#pIz- z-cmSE)-m{p)Z8p>N0t3+-{n>$YH22^YkIDYo$YJ=k}r1drF*}P@_8zvkNuk7xK+2> z#o%sagkR#W_H&=^m`mK=-S#uW@JaG=wXOREe{hF>N-l z=Hu8=cuwU%Ow+-92YcJlDcrix6^FR9o4EQsPjRMHkCTU50QK7_Z| z6h4x^8+G}xrtIw~m$X^NhP_=69`N+;dC=$a{lH3{J)Vyv_o$WpFxeYdYh+YzVs>7| ztH@nvLF0uFm5U!9{m;<-<@a5;T(NtP?CliP6OS>RXW?_d_fGTEj_sODf7G%3c8xQ6 zk(jD-xh&H+(sa4$_wuW6w#IV&u}ps4Ykjmn{i1SpZ^$H;vP}ZVCs?R6?|j`ib?*A8 zip9Yn#lO{UOfAl?R=u&Uu!KX+>0tc>XZ0ovyS=a7-9NT%f0!>mH&o2Ar0e`MrD?a= zb^I5|ZJqzfULZ@({F>y&s7KYE3~9{D>es)nYMM5=FmA8zzw}dSHOiA76-y?~H(pua zy1mlVbpP(H+cUpjJGTEwK1ap%!$RD?b=mQ|cQTzibF?}onc?v^|7+V9d{FOr_#>BZ zqw4!VUd@}1h&)!AGr4)*lF5>$P&{-gzcDq*bTtg_z5-+wRr6y}K~%^X(6o5B;YJtT$JA_cQ;@rLeM~sI9ek z*DhUS^xNyB*~~{LzTCC_bJy)ryke3Oi@xHyt1KUeumJlf7O?)n|Rp7kb7XqOR8`A@kQYx5j_+QRVRLw^>5d zTbp<7yjA?;KZCK;Ub~1bJNNucp46s)>uSr>H&f>>y0`vr?&{Sy^LJle?0#$?$49%F z4`1v0NA4`x9{9dx@|Chjn{#SpAD<0B;Cy7I?#xS~w-nx5v)x(JWcKze+swzj^~bJD z)oz`(by?QLBNJD&E^XbjcL|fh{gS?Fsrt6dN4NcBny9<>NxRpMsmqHzZ@qJnwB5Wl z{1d1Hm0OkjH{#~$*QJlSifSuoJ@;JwV(ag)%eC)c_<#7%a6nG|+Lqd|Z|4ehbU8D< z=Ab$~)04)pa`P6gu26e_wD-|W^^3ZC*WNBjDPp^{%CAzkzWvfl z^>WRqyJgoe94lUalFKA!%KCS^{XY6ye=ezdo2^}Q#X!V;mY>mOfA8oGp;M&< zR=R#Rd%rm7S<$6SVHfqMho;4TOmDYIUV8JktXs5a?mNZE+&IhAoXLq(5(;|+93M

1v+p2}4f`GNZ`=GNU@e$(z|neUe8Jx}D=V?H?^ ze;Bq;x`O-2Kh2M-cehTNcWJB`}}8Cp{-$;!Slr`xUN!&;FxQ$9r<-UH9J`{bOBN z#^HtT;Z71Vg7X%Xt(6y!shIEi(WboI@$9ctY*u!kDqg?$^gKK@^Xz^9-5dR;7|LDC zJsWuGVtDx8b#J~t-JiFNmDpFE?J*rsa{?mHPhhd8w!hb>EL7+o$y| zyQk-zXL*cWyXT#3)#I%JAJ;8@EF0$W{JKeP60=ci%APHg6i)Xo*dP-gD7w5a@1N97 z|ANh~i(Mu97=9`w@Y!vdZ>sV7mvz-t-=O2+e!90#n$3B%#)hqmES(K{Y(+*UK8zv=F#;yaI*XPy2~-}WbT&5y44E+5XEwmo$yJ!N9ozqfvp z-3(Pidy@BWbzS`0&S>+6e8r6$uc%+1l&=-O&FS@S$tQg7vL}vOKRmYd(Q134JNI5( zo9ZnuKzUF_p z-eMEDqTeHI=oGJ-4hbxpv8+ zQ{dColjrW|bnUt)_VLSozTB_3?|#hmJyK~YKP_8ovY)Nc-;(Re-G=8r{ga)dKI3Xu z@V>QPF{j?U=B}-{7yIYt^oRLuKlX=y$XmQV(Oy!N-zaeoL3XH1xWbsX6IEn>Dw9 z<%23l_m*`wsp%`S1TxC5o11HL`SD_x3^YBoPMOeU-ZTu_vNwDSLXOi zZ9nni)qysJ368wYm$&9-i{I0{yeF9T?-zd6SEo1vCq3QGQ>t#0P*m*oj!WAw?^k`e zc|e;|X_n{Npndl~-MgOm>(j6D>x+~?eYU{GE&b6G7f)EBni|9re1GLye!)McANl$p z%Ie2XkJ&owctDS*)OsC(b>&Qae15hTwtkjpe>6Wn8-KKFwd2alwROEuZ1R@IN>*q& zzHsAE__DS(+x_F(_01;Vubi29^Ds;Pfz#e?`vMS z{b#-Ueto&~j4sgCkFOK9t>;^$s^~aDh>zpd&R=z=s~?}$KU!t_D<*4A@~$A6PRAhj z^^&I2SyssLUn=hJqG!Q{HVqoLPnsI^ ztlF{T_@7?wki{*bnO9c4yM1@7Uh3(*kg2oY@Au`dGrO=)@zz0>eM*;}ZEH%o%X8^m z&$_uC4ATyNXZWjK?(?H|?a2>^_yz99se~mz5m?sME75Bg9yll6@- zx3_h~gY80vpR^hn{;amLjXqZYq3cl7v9DjYPd?pyp{>8%@*Ka!L3WFSORigGnR!-z zeHUw48yC1T_EgZMYaerq?mzTYxqMZ7-}cK%_nWua%e>kqwI@!zGylQmuB}&+o+hRA zHYc9@B+@^nkJIkP@*0~D?wx-^A4Te{o#9v{xaZ0pPVRr-3UA+={_t*p&ussz`Cn$F z^<8ridwFG&!IH-ozvg}AZ(U!LoW3rLcVTo)%$>uWvqHC7PChMp=U~;G0zT^vuV*cL zuNSfO`SX_-p0~(kYJE-Bj=$^ot*`ISwVLz3(`J<`?*4FXbL!)2TWSBj@!Ml#xkEm4 z9`-t(#k1nEj>9>Nb6NJHKjM#;%~Oa~4$Ds8W31z|@l^Drf=Y$-o~zl>_XS_s>22EC zbna~_$GS-shZlzP^>A2N*cL{`8SMJ#BlRb|{KJXs_lh1Ce|`tLJY$ySQn}FO=BLkp z)V_IX?c4PCtHPu7a=+}}{PJn`-P!WOHnNZ6`J$tH)86(TKC($ccVgfE){w~u{@L#P zz`DKbo%-eJJ~J34vZoo9oWFbf`18nr=GXQluQ;(Wdsfz zFREX=oA<4Xdr^h<(N90zYQxM^FD;(1>V(LI>R-Q}Ut3jSe)ymD)ypBI}B+zgoXRH!tMQ5wQmi?%eY@UjK=kvAS@I-YZ?Z=${f=Q?iSK4qd4^_0r_&yJNSC zV>7K{xTz4G+^4_*87F0?Y>@a5HBdg1=-&5b5yhh2K=b?wEyeI3_7 zex2WE^7Gd9Bh!SV_av{GwDQz91?D;Og|lAi*2q5EQ70DpYP#`HtH|@yC2Aga-nqZh zwDY6-5j(YyGV}AVzJ03qy7!F3qt&rLCLhy&Se?z?YajCOyoQ|e6U%<~J3P#9uPyxd zNvtdS`=77oJ^NO6JYTPAS+x3|QP#Qdfm?!Oh4Rn+>U{WD_}H)c?O(0uGO6z0e0fR8 zp58n`IfVmLi`KY>JeGXr=Vqa{>__6m{UWda8Bh1S6f5@5qsyf0`BZh)>iUwpDfbz? zAKfs?P0Q80^-x#ulZk$ zuD(3aKWk@=AE&~DIiCt@X1aOyyF+wlTz=VNjTAFZ-CzM6j0aE}o4#7VdN8EP}#XW48F zd-gLYJNU-+Z(En2Td5s)=hdf6@2=fGU0cihzUvl$#~)p(mr+Z9PJPrPF#9`$;oGQR zd=npY*EiN_?YWY0cHP4Ks?pt7%O&Nt8U9EiO#i>2<@}k@VQm_KZC63!5M**4y!G$ zuahhL{y2MHUjB?ra~?`fm8s+Y6ZmY)-*+L`egCYf5Zk97>v`#cMyiB_<%u=FcCU@) z-u-N9B}1~^{^zD%`_6S`aXo)Bvt^-9s5^UUd74O|Yer$KNT35N3};mY{WUo+aPz)r z?}mMTRVB*5uEoY&l#|$+ov9~a8rWtm)L3k_~kEFqkf?@v&H$;m3ME#6BrT`wkH00J@4|K;+p%MCI1o9Ugu`-Jo#0- zalV7ryY-L$GjN~(aPP3&0>8hA@S%2<*_BwU#)$NJxOaFxL*!V$ao(PjlvOLd?9cAM(VaqOrh z!}r%eubyxD)!vl*RX6PUk+OSrFHSTt_n7BgpR3N{b#edNZ+~q47cJ-d(V=+Z%(yvFgwSJ-FDypmYJ-V`noD~`CH}u_L*y=a_vGhYk%t-9X~4H5!K%nb?M_F3;y0?V;3zyvR@?W${zmYhwnEza%^TTTEQ%Q-}ZB0P5MXmwym@G-r{X3D|=?J z$n@*c@Q>R&YjoHAi1*-p_|`}^Oj~2|-rdn5k$Ng244Vb4KK>|KsB*bz-}>dTyQc;% zc^D+H^wgB3`Fr#4zEu4dxAuN&?TJ6UkA0I4ADFegU1zQ2Tm5|A%NzWjidOw+IG}06 z{n6<6!Oj)8RkDTSR=XW@eP#XNpYrFm`3x1`oiF}jtzUe8S@hZR0tVp?KPNM9O|CKj zST}!h#pXOt%wi2uV;}#mio}u=drmB!7Pd3u)7f2adHZ|KA8p(Cpf~E7^jzk{+oX!# z%4NGUHNC&vdCXIN&b9p=Ti>(HZ;vXQzclkT-$J3ffAQ}FE#0TCxcC0!AMV4K=5JlD zwJm0~%f7?qHJA2m{b|1Xlkpzmk6PEAKEy3v^tb8mtnc$pFXS<+FZ}ab|6zTf{vPYc z(r<%(x0^Fnn>Sw0dn!Fc;7G}N-sX3;S^pUhYwlsXCve^Vq3Y#?Jy-rb(ur~je%iG9 zm2Lgf$RF{K`FVb%#m4Gw>CT>PCDLNl<38~USKfuP=zsBzJs}@Oey&nIb*t>=*`;}# zwoX5tyDsp<_9K}#hL2~KuFOsTJU2S))MA-m;nt7xCCwH-+F`n)sdMoj&kG9w3?4Kv zyq|UX!@i9VU)E_v#J--EUAnk!`rEMQ?@qLtG5W8#yM3+qnpbtgTRxr%zZEw%JAe7w z1BE;pBFP&bzjg^pl(=jC?XTBbtsPxkL()ZM#f_s^FI&8K%NOr6-N*0ge`MRb!hPjy z1FttrJ<}u~gr1lA6E^+GE#BUieI9+66lD?_WJ2ys{K;KXG3|x#^2`sB?oV4jJ(iH+ ziheI#VHe+iD|C&V?Bzw*9yGchTlz%*mZ~+=-1EK1`>ZZZdYb3?&+6}^l|hTwas*8Y zos{=y{mr{3ZysH$D)C-9^`U;(uJ>(w)TaB5~%uvyVci7JolA;eh=2`lweml8^IwGxzho-!gN{3YGmka=M%BQh$YsA9|a9 z*zBJ1z8xR!rsl4E8FX`#bmhcIpWTg4j$eN6Kd1HZ#FATKpWm)u_@SbX`A|aPYk9w# zPer+|w=V6<-Muo_?fu$$-(RHO{c$T}PkG`aZFYk@(f3teKAn^DPBPA_$%x|}pY^r% z9ec7@-}$kNUnn;6Y47=*>&pW?=c;2sc)s;DwYjUUY zD>JJ!q*9lNPmH|nTw64;QTMi6*X}2I>u$*UWhXzX@3XO8o3TyoR@_Y1ncEwbr^xL5 zY7+8VV)_1gdrutFRSsLTxKvi?=~nC5qwmY^{>r&O@$8TEM|o?PRph;Q*qq6_^`M$- zsCt>NBAJE?Qqq6YBqx%m{-+x=< ztG4gwCr_2PvKxOq+nL`g^}KyceTVSf>}iJgGS4#0>pcIPU=g3!@-M_GdzPnm^xALN zFZ{Wz^?26Kb-91%hE3mj=BsC%pLyJ;i`l0a@9VlQ{m@@-f4fbQ>C3m`b)K%XY&va0s>@cc*vf65sco_ibddj( zls_6D=dE3EtD^n495IN^8u z-JrtxiIcnTe@H*V%kTApZ{ebS({oj?o=!iXDn0#W#C}CgFeUr3zli8Vl z!HrEnrTy14m)dugSL?^xuUA&jvMBYN?H5$_Qv9vn?A_sE*ZnKMd@;N9jH8ouxasa)c&Ka=&M@d3)wLH(RZcn4d}0=G*Ukc4;+_`PS81 zooAP>+WIB?&eQAOrF+-K{FwVuuU_)Znr>^CWJ^JeFe}?T4LMWjovL#d*HoT-EOY`(^&Jv z{^A)`>4(pzdtWg*k*A-h7rFMima#~MOyR$4@3ze6tORa-79Es zVAFR~`3~P+t>=9;o)7;PAD6#Xkh$&Jgc!emqa%&ptS={7J(hU3Ov|t<*ZO__m3v!O zU0E9>uu@d?-Aa=!d-q;V|NiB2(fqEO(iPcqA{V#(?wEbz@*2ght%n4b3Nkg%sp8r% zesrhmk81JO3x{+kynDd&Y^$AqMe`x6-mRM|$`0lxdoWqN-nsGQs^0ZK-2O8>RGYs1 z-V3v$?6PBys<)5s?6~7#nKQwwRsG7vcUv{RKUDwB(bT#yS1Tkc%=1=YSnKTXbC)i! z)w}!GXMWp1y*-yr`h{*q-s-#@`Y9|(T-9dnlj7TdQ=>kxA6dPhEjFtzL}OCS@@Y@6 zFUWcPQ~uP}eR4k@AD(62Z0c+D*sG~}_o6bN!>V>uJ3o9rGEZ*f$Fik`>tBlP+BUZ^ z;ltlq&kR0R&b~OYYaXYB#g}D!U*3H&>37H6mx&>oTQ$9+t)p^R->+V6tsC#}Y<+m2 z^^VJS$~P+dPO$H8e425EXHt||aO3?pQ~i#b;8px0$JfQ&+U1qTXSDOQ@NxO5jStTY zRMh)@yu0U9wNxu`by#TdfY72j&5Dzc&7czrFkn?EdTM!#^~vk)TqE+(Rv{(Z@o2Ly>IXC8D{lj`3fH#KP;Fk zcE{|Q-_K<=+8^CJO;�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

t*Yt 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[kMWAh>A8BG>)%OhTFNZH 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�z$AhMGKN=rLxo2W6cfN4M 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

pZ7ca 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

yle^9*m2{HNALlQIOg>A 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

`xD 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 literal 0 HcmV?d00001 diff --git a/examples/hyper/global.038000.jpg b/examples/hyper/global.038000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..444531312b457e21250706e9564de38a3bfde4b2 GIT binary patch literal 70395 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 z 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 To__XO$<%PwSRFvdYWaQ-KK!z}~va+(XvGZ|o z@X3h?ipY@+{vTiv|EDQ{cwTw*63@n1ILW+itY{G$w>`H|qMvW5}awt1(JSZA; z@q>zSQc)8pmzcPOq?D?fx`w8fiK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxV zNoiSmMP*fUOKV$uM`zch$y26In?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o z6DLnyx_ss8wd*%--g@}x@sp>|p1*kc>f@)+U%r0({^RE_kiQrin8CgR5fG1|`Ad+2 ziIItgg_(sNL#WcYfbw|SGcWxI;U2< z`p7<}-@F@>7AjJKJ#{lgXQ@z>)tzl;Cth_!g9uchVvGm#P`=N z-}v^&)%k3PbLMG9sCZnt`^dDop}b7;`^$G_*DuZE|55gRTDM|%PgVHB?qf+>p23S3 zZF_#Q;6DRjs)Uu%(KP*eUcMT8r*7Nz>fYZy{mgd4mmhV8|F*i*Dk0e;{Bxdf>Z>@Z z%Qwyb_Ng8`e`0riVAn6{V{*Lz&bj?G?9ckNx9Eb~8N)d5)g6oNtNh>FJ1n36)Ur=@ zSIFZ059>eKWJg{|-K@GmSF4~W&oJ-n3#+9& zCO_exbethP`hh<0;-3YMLOpXfGE2|iEnoGuervi^*w!cC>^KX=?@<3JHupb6UHBjE7k9-UZnkZh zy6Ek^sV6EJ~{MuXm<2j#Sf3{8MU;Z`5R^sK8*}re)f3)Eb|8TUWVQPcZ zjRS^%cKorbn|dtkSIjjb;qQyiF}}0g`ljmW4tHhI6WP;Vs^lznWC;&rmJhV{yer2q z`e7blL8-=3x7cg*tK1bI{^j}}Ii-WaV?x6xgU2sy{Vb2aGSa?aa-J#kL*gyAxs584 zeQydc%P{{8_y3UY)gHCkJ3`rY(#<{FU60EiPF`=f_e9qBjD6A~myfI!&-t>v^GMR_ zbAfH0f|H*7kN9X3fTUT?v@L{hl`=92w?SD7Le^^%@`Qhm7 zwv6OY@mDQmZLPw0R_t~ZGctO6O#8fPgwtl8a8{krs^HC&?bb_Ad|L5G-z3xR{7L0k{V}-^_U-Z8?}B+;KN{p_%0|n6ynWxUX~U66%I(XZD_=Re zY1YksMiNn0=DS}^y8E9Ydbi>}$qzo;3y&ACsO*rQ$RJ_ySh_#w^MU8f6+XtM$njlX z`$%h7jf(L6x#jcEZpyy7hxI}DmE^EbKYoQfK8k0oZM(63dJn(X&s|#!OE1rTvs?Mw z8b0RsO)GV@mMyhgyX1Cl`Tjdw?DF<~xHnI5`Wpj1H;W$TpVyVwRpdDD@^*5wZ#V}XSGjN`2Dcu&wp`mRe}2KS_^yR#r83JhRsJ)u^s6hZRA}OO(Cit# zPiZ6Lt&A&dGTV2o(fTzjRMg|M@`s!{t_rJjQ}+FP=qeJ{E)jZH-Fxpq?es|%O%cdq?2>Cf#Kdv00giXSN3s8HRSy^@h#_t1y>UG_ZB zZMFUCxieqvd3o*r_owxT_H|#_Cv7r~DXe>2Rk-G3eeVAZ>C>bQyFO@pi(R*Qa{ju} zs~CI9+Hig^t4g(h-)8^uXTJK!Fi}A@LD0;Ar(VyVZ~oH4S;wZEwzT|xvH5VheAGAF zq&v!jT~F7q5&Bfx*cRF+{qo+fg2ES+Wm(seXY+LmYw$s-5AjmU3cE2U++Xwp8Rsr9HB5-fezZZO(Jy_!Ik81y)rh>q|biHRz<2-tGyXn{}ZjO=6u@#jG#O z)75I_j8#s3=0QsH+MH`rZ>w=lKFoFF!~K@`rB0K5r0(5pNVPa^aX#^O-}Bqe(NTA} z>XKI7usp1x{E>ZawfUj_{Q4bla@Q;PELp7He2|@`jz#cC`1)vrH7{L*qxLO-zB8TU z>BZxr(~R;bahl5gTfgb;^4S}oi`j8qe!J+vCQnWVu_^iLvOiz`NSa;xaIG!le+Gwb z^50I@AKEwV%0AiJX~)kPKJNGWbYA$S(zS5kz1k<&>iC+UwY1;!mtAl1q-4c68@?n> z`uFNTgYuEm_1sQfQDno4)bue+K^l453vPIp+eJOHJ+ctsi7X^!Ow;d-3kAj$Xa}XI?@Dyo%I7t0Fh? zvu9rWC>m=g#CiVQ?(@%Xn!ee`^g;WT;p)noTJ41&)f@I5&WS#KjD2ZQ=<4oubKa-a zva#zwe6z}%YvoG+)tP4ZW8Z(*<)2;3&-3z_nR7B%^W6Z=KgUf^X4gpzyqk1kV*dkm zg}=Pj_8mDae6Rba9?P1@B$2e7yLT;Tof)RpfKW4`P^A zWIw0s8as`Mv|h*E+Cn>g<{tTA+h|i4H}%W%=6!OuPgk8tdiyf2O<%HOr7D-!soV3F z5C5^8lBjW7bcS7}rpe-q(b?;^-`_s*!SX{@HG!=E&TT)`!<5YOFMV=k)%3P4-+cEc zcNP?X(z|~pXd$8^ZS=ifBGf2=S|hP z{YU#xztpu7$()lF+}`p9RsA2=M1AFr5=~8TEs(mqexl{Xy4N!D$?>j@M|YjNbmvcT zS4EX%t$R?@_v*4Q#w!+eeev(neQ~Sw-Nw~7Gp%yi9)0`vPz)T39ELhFivuK z@@Vg|+uyu@tk>NVboy^=uJWSI&bp7qdnQg=yOrxniG@m)aLn{KD?I)#*rVcj{Fl%C zUus^z*}qNuF?C&yWuL6Ouci*q;KC?|++MB&`yUC=x>eZh! zSBKqrx!6yrdrJT8{|pZ&*=g0EKi*#d!N~ugd0h8H`J2Cw{n82h=(Q_)jfTk2;)#>* zJkBpZTQvW}wSOxA8Rj$o)XlqDck!R$ZkLLMn{U06^t5>JpW#6E(PREyt6a4%cEwHn z&tUwrB451c(6u?6ZhZD!Z7Y1~Uv8;g%Lldgl^J5MWv|V+WFVVdVt=M<>tkN?kZTGV zZ%d9lx&PTxB7b7mhwA!1JDa&h%RS@2FR}mQs`H;g`cJjMX<3!OD)xU|6E^PgT6pqZ z^dBFaIU&8(~TRSElm0Wz zeD%n9ol38r*OWEWzl;B8P)YaxZCv9k&TYH*Sg%OO!HL&CUY*)_LZRis^{e;9x9+{P z#zi>OXftEaVnzAY;ivt7`&aCA^Iamp{71NZ?#IK&FCW^J?A5b@W$}rkeaAW6pJcCp zZR78Cc7^_w`ZFJF`?6;gJDJScwOjw+jc@YOKZ;|nGjsdexX=IjQmOxmZ>8Pl5AMgs z*Bw*2JYD_AI{yC*!XfYMtSa8g@BKUN{=1zZpS9fI;@-RXHS5G*=KmRzW3Flyil$c< z)j!$)thz$SUnq6U-?>`6`WDOoGi>M0zxntP=NwBbKlZ;i+y65N#-4B7CtR`Gd7h=d z?pqb^>!)VhpW*uapW#QQzr@ekc4xEaum8`G9G+XBp)Y+WIj5@X`R_CJKW6zB%0%V5 z|7TGB&tQ1m{E^kgsTP;^e*Yf+pFyS8JoVe|T8n5|rP>?EoZb8Xa_#wi>>kHQwH@zr za~}1`%}ZHOuXBC&`eXOyrrweEIR3XJ|DV$8n3~FuSL`cGuKi~yJ^!CUFgoN|p=!jZ z)05xz|D0FH&p7Wv)~+iXKJB07|DPdG?W!G1#k-fCy(I_uzk|ah!hHYc`XiACxo#Pp zUwgU!qi9zAE&XE?|Gv;U4~p$o{~5Mi@4oQh*6sNVK9y_1dZ&Qedl&GEqc1% z@BX(}@xKc%{}KA3{CGc0#jf1o(BCZIf}$nPm|a)xtUVRlks5e_$9T@4d(ZZ@?aV%Y z`QN!&E)O^MOzW5bC0et2$-hf-MpxGJt}%!__K^FTb7OW33onLXlr))Nxa5?hMA9#GtN#*(HyQsk z%$v;kXLDTria*RB-=3b-?9K4&&i4Nd!oE9x{Cqs4?o;O3f3N5NQ(AfYw|m7o`@Q*T zb?yHdHm-C3w=rb8>Eim|<$umEXv;jZBg*ddja&8) zyXz0_ei8C$hyC4S_9gXae%jm??LOkVCnjgF?yt@B{xh_B{8;&)!Cp@GKf{5O_CM~* ze>f>GYXAK4;r%}()&Da{uU-EmyI!dNe8Zn<{czTe>_M>T9 z@A_f-o8OOX#k4C@V|A~IaMkQQaq?Z^_MOjm`oj&`uJfNElV9TQv3?P=>KL{lKMVU0 zQjbvzrWZdz1ydM$!PL6)1xmrR{n1}*^nxk7zAw&tZqahD`0sQ6Gkg?zxzD2Flj1Zh z&tD$(Ke`SkS4?%Dd}sTT`ZHfur>9RoQk(kl>Dd=+|1&I=y7iyo;CZPmq211+O>HlC z)zmA-tbP9G^GCLvw^k14*PgEbD5`URi+b;)-xqGkFRuS)>X&~j_?Ths>+Ik!%KsTU z*C@&<<-LUDG~=u5=N77DehOKdvVX_^pUQflza{>dXqi9X`JlwXUG@KzHu%4p_|aco zTuxSb`>&Y!fAV%M|GRuo%wn}m{Fnb|Tl~BBPlcs_L-RYP>&u3<|*!)$;D@)DVPD@z3l;`<*9JlOW z#`#zK`X2rdlaE%Zd^}m1pRN#me!5xx4AEy%wDjCo%iX5 zU#`v5d%NXhUP_1-$u%DKFcKYM={>XB+ONRd$ zVx|8xbga5AFK1KAelON=|J~yM3`at)94l1yfRsP8AAFE}$F+K`H^27JCI1<|J<1J# z;NSOd&W!6mlK;LQ{LkgQ=+U7mdmwXivx`SJI0afw^AivBa~dH$cFWA*aK`Tb7M%O?J3s0aCG?aHJb zle(VvtKXIXZ1bj0-0sXOt*a}{{!EJhU3jPB_`~~Mr88sSuFbt5|MR7R{AttYxB3tG z%iYy|CT!XpJ7d?>e-C@|L*>0 zFun*XWW4N725zZ8wEw5l)bDSuf0QaH+t+2c-5*rsE&F$VK2J^Rhkw?ubIY##@7z8u zbslrNVLDHEcH7-8$y_sz|Biecmvw*3{q8G|-%NY{!u?0+UH)&KAD69HImr@cD6#GN z*_?FCm#ubFudMoLYjN+wrceDp=gE5g+-9_1e{){Yu1((0ul&l6@B8=f%we{vM%xUh zr!arX`uJX?M(bnUN@LqSVj29tpCA8Zj=3{mx~8go(k;hd9{2ya2F(A~@bQTHvu=NT zH~T-n$D6CtgMtn2Onn0`Dv zlu~)!Ct+_{jPRdpo0k1uQj;ovZ~GQ|=l={hF2CKMabNO$?}W&nU-SPRTRgdAXIbz5 zxA#9=U8_FQxAv-i^&js443q4dKFC2zpnIUEQ4*+Wv=dYUU3~y*8ud*4&!8*I{z+|* z*!{=T`<}Ce=-n|EIJq;+|^2lkd7OE(c7#C9y_CZuaxzpF~f^)t$E&NIQ3V2{^8y<&V8d82gL+e|v*x zf1C2LC%)>|mA@RIl+EGZF?(0we}YxkM|_*D_+lNmUTVM--m_>G4ge^#%@-bnhPzOmx@;am5%O8=eg zck|$XhDcB=sb=S6(dz1(ZJJpdbYik^YaAW#8)k~efi({Kds+> z@aWM6kE|}Pmt3#@(|G!#uG^QkM5-2C(tA9oRi^*gzQ?L3HqJbopW4>@c6YVv^Iy6* ze?0ZtxNN=hmcLUO?YHo^oM3tM%;$IA)7LN7-##JyaO#2cr{@1M%sx?{E-RO9-*Zo5 z#?g&pPj@Hq9Q)7kIPU!K{B>{TSpPGm)_*aKmpvAvud}=N)17^xmUCVGL$<_Rn)OGg zB=Pmo5E$+clr(Rr{OM+}qEJpZ-zypMn3-inyr7%~PLW-y5)P+wR{b1-BM^ zYR}P#`}(cM{m_k`t){^d-`~Ez@%qH)s2MRn>7Hiyrp4CUyx;gz?AA=~!&fF{2 zE;(S+HIoXl?A1lzo}`==(CI#Ba9pNTw(8kR-r$M{*AK1{n)R%CmwnjEBU=qFeY5D; z;aie*{@0gXR^F@MG=C0Dxja2*^3inZMaOlns&LyLP!mygE4qKkcJu3KcfOTt{q^?c z+r+Gut?9h5X7eKZJLjTb#=2N7W_|d&?b4gA(SIW!w3fa7{pRM4#oO(c|M_C^<*e{w z)dZh~6AwrhS*l;Zwek3>l1saHzv+)}`M0zC+vMf!689fX>%8r)_wC=znW|qV>A5|V zJG41p@6?Bz?Duw8esPxiG~EL(BA?mxrpfb%QFUR^zP_s+eS*V(T9yOo{UaPFqK zq@=R)l@vL5QOPTk$Js@@4t#x4e!gpa%ep1o{oVEko4s3aUcehrX+1gQTG1KNqBF-C z_&iN!^_XA0HPdF%@(s3yU;a(K$fc#LeBwx2sJ2_EP_Evs*-<>NnQd-L-)^X7|M_p~ zu3d9_%-U3baUJ-e)?8UFbSGAugX8a|B5wZo@{TWGe|i04+drAojwB_9myJg&cig<( z8#ZmtZ$GKSkF_5p26^8+`fB~|{n3?Qe#-P7y|Sce{m(GpyBE{6FMMD3>buvcgQx1I zp39n5WMHpxV#UHZ@y+gGxl@y_+GU)3ZmP3@=h@ELFaKREx>V2a`YUYPUe-HBI) zUK1y4=&)+TTUUtyaR$Z?)K$a0 z4c0XuKiFR1{v+(!-bJ_Xtkjpd$IfG+{P9or#BCS93a?UKyXt+Jef^@wJKGohXHcH? z_S=`jlDS_te&*LaQ&BG~?pwSvbJ6`%ci(UKciyw@%89`CzgdUl&ML?lp5L1Bqx{fO zMIU8PHOnGP^BH4dQF45h(;lr zz1ihrpZrpOu))T>?~&KJ^&eik`(>8DPF?!vm+p3(hL^J@yk35{|98^;hk^dtrA%$} zZe>iF!}P-8{NuRq#S6E1e|B?!7!lPsZ}o(*or!a|z15I+?D%jikN?tE?%$V%+WKyp z9qFm9-?i^Q!|CfM$zFPCkC99K?sn!I>0ejoeR1ooOHux?etv1fyl&^OKT>~m9=g0@%5LR` zy*mpm!z90oI=^L=uB+R6{Z$xulO${5udh=sy1mUm_+`C2chFq_^5nWtF}Me zelPn*Rs=I|6mv+@j{7mo+84gwZk2y4p}knhX2*=T>2c5JvFD_(IKM6XbbVp2b@W|l z(>*79FP>_RNJ&YNs|uTR$f+oc*IK5eqFuOcA?Kq+4NdK3mpA|XH_JLZdDV{nC!Vg> zd-Z1L0n@(xnZF+dEm^DF(i?f_OQ@vUItf4Db1`mpAFW)cEuF$R=i0gU@^8@r4Gm|! z&G_s8GlXeRzAp6bu6V(%Ux89j+~qSQS?ur)T1XS{A~g=tDjl~)lFTwI`f31Lc*`>vbAiB zN-fqta4SnYl2|>z{_~~1IabT#%=Y%5H_m+Y>C~z`J>M-`K3jL^`m{d$&k!}u*LOzI z*VC`WqK@@5oh{8v*{-aX(U{^_*kRx<1zcyFKYS~tsT{ri9 zEZS1~Nxf&yWTYD9K-I&N+qzNz8A2-(0+zC$iI~u3UHq#4ymQ>tg+F4JWSx-<|M!{y ziFKI7`*goke(yKg=861zr#~-b<&IZfXP9tp zU(t`_g-{-nt(&v;*(#cpb{7{(|7TF_|FC}UK8;&z{^?$coNm82 z@z<;$HR}o^uU48ao&T&~X`a|tKjrmaLf`lPt$%xCUZTpQb>TEwkuU4a+{z~Qv`jm1x&Bf?LC@c>7d~3_3r6!+2}kYQtCR7dFyx3p6^-KV+l>cf8$TB|t~cs8nkUcb_g{YTejzdqYH3%dTboXYUleR#q~ z>-)2vv)|p@-?Yize8tb#)yEgV*w4S8)W+5rlBLDcG=*heLVrG4L&m!?) zmc-|&u3W}%<5ySgpRp?DU@=4E~HVaAetXJ`T>hZ34(wP~_b0!s4+FXzSaQaBt zv@#FLDKa7Z1@;8y7w4Q>V^wwivB_hvxza~(&X4U~+jsO?+_^QD3u|ZX`V;t>ZS{k* z%$}7&w|&~#*U$2qYimBa|Ip62zHAcV<&SP3ofNL{)$~x@37*BT<6_b+&%M3#d)19B zi5jg|3yu4myg#{}Z~Wp?d1#epdCqReE8o^Hw&DNq$$GZv)Wg)19&=5VStZ9W6n^BP!IYN?Q>RaSUT62ACye8E08e=LkEXlH zWfCv4@9k6l(Z#*tcZAf3c%eJ1Pu#G5&6AR_s=9sc;jM*2hvEeacdcStdo;U7E_Cll z#S2ewb~1Z%rXN&E)?lwQx>F^8SUzY%!lfG9y|ev(v@W>ks6Op*K&Qk5`H44_`)WgH z)Y*iGN@!j#ocJIuVr63C#I^3F%TK;ce*M?_Vcq=Ng(l(O0%8ul;y!AUcyU9K5kLC` z{)cg{AB7*Px8%G}+u~u*qm84PhGyZK4#gH^;gw@ES+r$mo^8Tg2$o;P zk=ofscYeyL9!;~4?a_#z^1)v=W8O)k zebAg!_R+NCfibgImD#lxd5b;2s>{E?PU?q{^lsOQ7i9Xqwm!bk5gl=RV+b?T`WpL> zse9)(tt_xuB`>fiT=b5f=)p&O?V`BaXMR|XMNUKU+?_xv*yxvuj(7k2ZMCt^tNrCI5lzi1ecpZb;%QE9RKaY z?^iGN>-&Lv{s;38rc@mF_xdsI^D~|7_xbEU_T9Se6LN3y)358}OkP^9^xydNYD}J$ zMdXFUIZNyJ|C4$y`H}n3hKOUJ?9x%u2FflkpBFdgX-g>y0HA zzO_C4_D4}gYs)@`CtD@<9J^t)@o3q8{w*durfCG)1s-_(b)Df8wwHBVU&iz1CvBf+ zmSkbFwAxKSIZDfLYSf0fuWR}%KWsnzy6m!;TTgoa(n5Q|8gt&xf>mtVm%hYH-gaKf z@qPW>uj@^I^goh#FZpeQ<+?vE8LQ%6ev&lxIkzm~ZuG6^J=qspieu{5G^|{=`G~mI zCo|q6sX5JTI}BESmXDuzPH(c$TRX;R*EO#uXA~8iIG^iCUX{Z3_Qu33pLgHdH)-FG z@TGAXt7i4h&90Q1@M`j*O&U3Za|9|6+WfwLI-X(ueE%Oi7yGDHJkGaNZ>9e;NJRZ-NX_BfU$!?RXvvZ%-_xJ(=qXDKnrbETwWs7~iTjy*ra$r@ z_L_%I`XnoN&$52kPQfq7f9-km^6m9`TMyljjE-XKy2Y`;sVK~Z%lLI;-0qL;p?%LP zxh7uQGdW_0Nl$T{Z|12`-Li|n#9~_)JF}m8dCaIb$n)oyos*N3rdxIG)+>`)aa{60 z!|U)JHHIIWUg^!AthA@vu~gj4|NH6}>sxMJ-8*U7Bi0z9xhcyxS$qtdC#^TUq-~J)$n7d5~;iaV4noNrG!`f3M2k!{;Ar z{dhGgU!Zc^iUwn@r|VTFUHWFd!s+M4ZEg=I)H<%49Wq5MdDb&iu{&QaOfSwZl)3h? zEc0&F{JeNnre>~C@lo2*s_Jlff&`QC`?JwMx<4czDvGw5ZY4Tn;u51h8`Y;O z?>y&il-O6~dGg8UQ2UgAQOEoTtedAP3U1srP2l$CXDOZLC6E868J_p~ezg2QgFsC% zq!J3x$-K1K_tS3UXIhUw?(8$NyQCFRb~m>2UH^>Ie6|cJpUJA*X7cgJo6M}L%2$`I z4!2&p;Ad-jo!*{E)gu1j7}+-sC+xO9IaWO9-QDvSvL3!j{IE)(srR?aewFMW%C4Sj z0m{;Mnx4x{zELOoCBCsv&b>Hk)1HKnFXNOye5-i8%Pq-5Y2Shm@m;#QTedo#;=A?g z;4x7x%Mcqq<@KEhA1ZpYtl876-~P)gW5VmOj2*0k{}~Jp{|Y}PXWwJqQL6TzVR^gg z*ZZxeB3GVVTc@nhD5d|et$uAy`$w*TeTrA6@4ppu{rCm%-}wTIx9y*0=ijR3`;mES ze)qKU{|pC`3anN!EeU5|f2%dwh{2%X>fNj&9;v5WOL?;m738PP`n_jg9W*#j(&bEKSkMNF_-mF~0 z_q5Jd)gQ1IT<`ihR^H){z(~*Vvi;NUF?z;xX-Iv$(X!-^<@@zOOI(yZzCmTse-1vFAbyjQbyp{@C6jxlU+( zhh>^l&*Rgqes4`vGq2>mwa%%Qs1Z||CwqC0)Rb+$CU?Jt`Ks^yc;!;M>75r=eKtEo zCQjg3$Mno{VeMwO6GiUI>n~qhpYf}I5{r(*!JoCS-&DN2xlK-@EALP5+nfIx4tjjw zp>JI2W)`w)U0inlveo~X(|2av)2c{fKBL@sZ0@RxrOTXnTK<_ny|$|}hc(Ib0b@AN zcE6p1`}iNmPdwGLcyapMDaBf*wLje6pOl)lY*AX0ces6dX(!|PD(`JOxjZ{}teKgb zbiB^-i|J*jCL5pYW^>=B^__RPa&}MS)YZE;d@MfB5vVCsb-gR{6_cfzxTM_I^?XY| zeYiR|MrYBxzBPQ6PFwAwrj^->M|@QF<3H#BIHqoK?K4A_YazSZ-0!XVJ^RiFUSAuN z*}Kh-J}+6w7m?vzYxl^(RIFQBZEvCy&y06LemfpU82)7qs;r*uz4Wfjc3-`xs&#?q zo$u{s^*zRS{P<}}sU0&c_pSa={+GX~`{+A`+t23B+uFM3^;x^R;-A;W^UFb(`<2%Fh? zVe&8j48PLu%*4yR{WFd|7wSz_U)t~g;oH7z2i-pZyzXk=9sBV1v-#)tlpPKUTG0MC z>&KNMyRXImycWBaZy$a>qv}G?)S1_^rB3_#pN%>C_gazXs^a@SwXe?2dUB%bV^rXw zE$`0h9JlRRd|J$|(%jJWMvcyuXwT@=6P5LENrvzwx16_p|GndncGJAl(5DS=&t|_g zpPlHDcv`@U&+}dOvb~no+R8^xZ7kWhYq@RCym|TlpKXhNAI;UNFq-`1y6WnzUTdMK zjZ^NP*m=YK+UnS)7lO*3zsNqsVVoRCzCSc zPCZzE=GbQaHSZWyqqkQ*S}tL}+HSgZw6Nd231!-zrQNNTk8Q4dF338Yb1HOo#}0jA zK?Q}&Z?@{L-Lkd(%HiVU&QCs6KEL{UYv8Ttn{NNucto-0kj2+EbK~PH5B}_b9-~t= zUA}6z-olCBSNFfVly~Nr{@Y!GF&DR<)&70<$ee4UcW&SLeAKnDBIbeAYLx{%lVh(G z{8@e`EppeoTmH_~2d?wxKH439G+}>wc=6;bqT0v*evR9x-aU6AI5GLV?eUm8Ge+o# zCHwZQJ57%srQDS==8um$EXrwlKc#9Wn^sT3pKZ@3=YIdU#XWe)X?)dAP?Z>$h?QYE1HZOEF-+6mhTBss_>(Un)FQ?Crw>-vMK8w9m?yg9_vfS4v z%U(F$KAljq*4x%cR3huzKGFS^a%JK3E_Zzkm3+N@o=&Bb!YTj9G4s~1HhJTj^~`UP z$M36QkNz_>e-7j3)wK1GTUP8e#rCw)-M`o4vc<|zs$B9eh*KVS*OknVR(@T1^5nMfc8B$jUTEcTo0Iow(k{1kD_6{%G3o00xLDo?&-bd{ z+=Ws~?d9V5Y#ei|+T`NR45^vhCm3xl-&Nl|&w{Dbg8^6WBxw~Sn|Dj)h59Z#OqgVex^553a?ngEM>=)1Coc}ZH z_*c{S@*9`jt3UjoL2zGj_nrDDs_WL0A zInljCJFM^g?2kQuVZUmRG-OMMO$<91GjEmq^P_&Bo~z6{a&6t7V*;8Fitb+se_@ej z_sK2tUdrAnPwuUE{j728_Sw>cY2Q9>nY8oJiuZAAAFO9v!zt6Zuk;$-}N+p$YdT&U6??KK>Y*9{%df($s6` z>-B%IFF#~yCaiy;KKrrqS@jRgFP49;UVbs^_MPW-0vSR#{Ci}Hz z{~5Mks_ajiaW4GV^(E&YR>x|+_uttmVifD#fAqk=t|N_~rBaPj>swAJ*ul zcQ?)2I`?+;&Aff}ZLfpkxqtX3b*LEbp7-w0#$R)4wHNI8aA(8uX)XPS_8xy2->my? z?ZhVzMb=%nKE7|w)p;wiO5?zqd3;Mfsw0gnKB{rEc0@=Ccj_h%D@5>6_- za(u(S^7w_isry${7#|HY`1!4DQdZexNwXI|%?qAd&GY~8ym4|@S$EZ}^v>LMOG>?q zm6je%)nQ3(d)#=Qd7iEHm-XBJFh1z^G`TwQV)6D%dzXjp^;&i9>9*s~3J*Muu;IBf zXKGyfs@iWCUtF(#UAO%Co9o3#ZKi$a_;6NOWRf{+q=bxs;}e1EkZt!fcJkytm{mLD z?$d=i>B|bgtlwd$@}un9IrAH<4CA;Td4!o4*k;SPncvtK=YQl&QJv(!i_72EZF>7p zw%)pqebV`*acg&*oKeiFSs>tH_jgr2>yMyEuZoMSB-|=I4hzKpU3_0|?)l5>T`L8q z1d_wW<@VE#F@=1WzxQpu&-LWc;+VR13swgo zxIRUt=f`rL#T^S(uDw|K@ICY0yP1iPcWGC=-etgH$n%Az&;Lr*_v41I?1VqAn{#S& zhWX~jVw|dL(oz$w|LoM_tGL7Xr?=|-o3kuZXTP57FG&8Z+c8ZcA}=MWJh5s5pHb!S z2Zcv#y~`h*mN1!nTim)<`_gh9m!<03CN+L$eZgL>90AXkYpc9@Uw-Z7yZ2Y4m$g6V zG55FWmP&Ik5)F0pRA0cf<-uiBPdDGihjuE=Y&%ohRSt#WJM{;QYw z{E**##O&g6DU(gf&nEQG+<&0D{@1Jh?YUvm2aoIA`6v2i{vmy?+p%u_N}4O?X6;zE zV)-Jg4L9?c6F*qk{E(-)-;o+qLD3&GFZ|`ex$Q#;7Ou8{X@Gow}{_ zfZx*dAM}g+{xdv(9oM+Bahm9v7_V=;TEYV!pXqGodCo4|XD!#Zdqe0ejjgihr$5SB z&l$8PHPSBR>YF#W_U*s^qoc|1*53A&Uyu5F*Ci08C zn4|X5!iR4oy$r*YF5dK%DL9bOUr>Xuk8&cdo4|t>IhqBItd*QEt;(_+Ohc14T(#K4u`LFvuO~W5&L41_u8Vex9!zc6T0s7}3AvN3Z?$jH)&D?;}sxFRg2? zs6X({dkK3AD9aoDn7ZipE$fy5!&u|hVN>lgm)yTo@uOzH{_)4MI<}sNY`09mb8mm` zU;l{-mrEm6Kb>to;=VF7S%cx%{HNDuu6Y?QcuU52=dTUS&2QtDuXkJVT=b0XF8{KQ z1ETCIa$iq-8%~~XI?3bv#yzr5Q`J3vPX%3i?;U?qWDoyCO^&`tFJ{VK5ajgX`22d_ za`}np<9Mq|r?=`!$vzV9Uz%5=cj58gogG$v9_tt9+Q=r#^~o%Ho|`TeT6n2c<=m+q zfB3nB+Jst6UwzO0UVnAkY3C<%{arJRBn@1PeodYAurca;f2UQ7*kum^KHiFF+ZLuI zXm=jHxH9?W%4^GKJhWZxKC@!BPm=i&53S*4l(fKkJ*88@b+Z+v}&?Y1w&fXb44Kg)L z9@{YA_$76|>*=zIfky9+u!c&i%xmEKEA~;m`OVrbhYo^Dx##~GWFn5To^EAco7r(> z7x%rkeaqznCml9jaaG4T@N-xGdtdznKi}Q=y^?maLXL%<2F zu6559X-_WR)BiQ0)c*NCtMEmyRxuka{}FUhbr*ZSUgf{3r+H2l`jy%Kx+C7UI!Hv- z>{5At_R>qIv)}%B=ligpQzuZ%S$d~!?9b${7QezB?c0{M*=$j%6MZMowMRO?G_PNY zdE(3HeKsG~E?v4<#8pDH`QVk6{Ml+%fscH|xCJ(tC`^iy*UE~jpFU@8(XMmzde%4` z{3`k?PG_6PvI&d_)^P_jKU-I0^OW<(x8fXKnK1d8YcD>%)e;M*TXaXZm2a`{#eDe%m6uvZld-xTu z6#UOHA!uL8kFNzA{*Ts|0rLd_xn*^W6l|m>hc7JCe<#^bm!17f<3GcN)sHu4ZCX1w zpa|3ed{V5#tFzha(4pCvKGgrT{9Lx&K(#MB`j9xM=q(}ltS9T&ZJw8PY;s+|%DZQ4 zQ&!lg)qb_P#4mO^{aQVLO)PKkqLl>(n)j?ePAM-iYM1Gc`uW}Gqs~M(w$DE=zyIT@ zvcl~@!?pR>R%sMT)+Z!9?fiB2bez`y$Q00km)TMS%V%q|#Gg5NW*ykK^Nt7GqE@x1 zWhKvcwkY~fQkCAkW8?bG`-CeV9DJZFnU^OQd2T-YOqIUKxqG&rRQcp-`})yKqc?(V zk$nv3gR-w|$rq58wc@szyUkhZ*iM@VJUstG??-J}vGi2Uve;=sXO;(sR%zFM|IeU& zt4^U}rM~mSgJ&z|cf1$#lxE*+9`uoAvgXhK3{lVCuP>kEx!x+Tba`3rG&zf!ZS9+v z9s9ZXtSRL9*`bFbvr zxAXfR_4^2Rvfur>Uhm`gjsN1IHh=B8)yICFx^wF7ZqsL0YaY(+ z%c}Jc%j`TIZd+SE=W~p~a?Mk3e$DaInKdGG&?qP^>@ zqDfzQ%B)knKgvu}Gyk{s{41%(36r80t$7~%s^mezjhJ<_Lr#=xHmc8h_FlSpa(I4T z@dVy9zXzI@>)zPvh19Go?hRdX@oW2=*N-iA>*O*s%MCJ>-8*C$TijC}k1uMl=Xz07 z`dDO7;}i=^xvih~w{6{axny^>iN+$0Lv!aaRnI^2V}{Ep<@B-&EH4HUpuk&(d@6&+z-Bv@qKgn4Ew$1SM<-cOuE`yT|Bv=a!p2H?%laR zmnCx*JneVh`yp+aZdy>Z%=N7qb=KL{22C-Auj36~&T6}4aKrS%?bn-DC3w_Zm92F1 zpE9pTF4awI+cw+$qyMzc8@oNP-`le}df(@iB;KIiSMLRWwp^2a`p%PgD+A_w#<{y} zjHnTn^NLck^~z~JYku%jhfVfEzxt>1mge1`vMSrEa{IR8;2$N;Yj2-9Akw(!@+5cV zcVE6A{KH#i(7(Ak{pcg@+G1geb!+vH|5;aiGWGF}#g|#?5`OR7`t+auN3MIj=N@>r z=b65U=hNJKRaMu*mapCO;OUNaQaff%O+Iyg<$;tLHoW1HMz%#SJe3o!$!=Nv*5yk1 z^~#fKo0WDQJyv}1QCEn(Hcwq9Yn0Vj+shBvZJL%Z{Z1xn@7zB%^Kb5pm{5B^>Zi8b zH8~#9nsDd;44gJ?Hu--umPajRdDPx>x}b8&;;8)Kogc65**?iSZ@tzvJ?9h0P1TmJ zvAKCV+`hJa&YWw7Evx)z&YfClQcz+$MXqD{O3xjS_6mQCy|(1yKE*imd9PV!Rg3o* za-C7>&s1KhAa?NWj$gAry?lD-$gKN6sw;H#^YY6cp6ZzRz3f~>@`w1(v%ai*8JsIG zvQXx*v{cc}y|p^$H~jH_JmdLB4Ha42?87ywtJZwlo%cE-+)jPs<71zHUbkJDm20T7 zwess~zui}U{n@T}=xJacf6%_=20F)0S3Z<(>3Yj)H}&NG*mRpKzkEMBEw|}f?)ckS zt8$5)-r4z)HMSp1!pyps9yqYlruebOy9cR!{Bm1AKb!f;Q>lmd`RA4T;NtT0&&$8A zy7D>ezmbvIXdk&V|7iGYoxb8ZvmTa8Hl8=l4!FY8GU;k#ZSjr?yslinr{26gYs}#^ zU&YHjz1VP_(-YPm6CD`X6&Sy+TlLIgMZ_EiOVg7lj^3T~HOX`R;)81I>Wq(ERaR%c z9{jfdhx+?Jlh%vW-w53Q#i#Uh`di8W460_Y|Ly$G@aBEI=YNKS_VrJuRxJK^sP{j^ zqU80n?K95*)Z8Bb_56Q^^r|0gmjCnW@n5pvVjipigCn22G#2f5w&b1_`a1GX-uV-E zOiO>|Ex67z@#yE>CCqyZZ-urVTUs@3+lj~-pQ<(9`ERWbZ~P-SF?xyFM=^EjIejs| z=6_hPZ9G-N>Fw{o;;*0Vx7~C8;tpx{{-frner6o6wEH`~-md$3a`w0SuGjy>zPCM@ zk{ei5WdDFSZs+fG<-JQ+9sl0NQ-43S_ru{spI`2?zNjy!v}(HcIa^2hYrFh!-LyHm zM)<1z+Pd5s=e#W!s;%Ar?@pDCWBXE_&%9o9eolT8{-0s{&5vJi`3nnc&0p~{WdD|+ zd!<1?bZ_m}4Z7-~(DnGfW7p^CHnBMllgy;A?rq=s@?SySe+J&DxgPs!d5iaKmu^`t z+WLKVX4c!?@3Nw^5>^}zIlH3C?rTY5jrR25ZFd*@e4E_*Gw{>LjRzlmm$Z03hw;L7 z+ckfzK7N}hayj-zus4tI_S)TRW*;k%43T{zx4&GWlzCRjL#Iv8x_^Jsm+m-gbhBFP z!n4o)d-n5&pA}iBzrBDrq;m5~lOHDX0-oHSf2S5ouxAQ03a7s~B2#>AU46nH!FRi6 zSpR1zwR`c$KknYt#Z#rKij^mse3nUi{w>J6ddsChx%HC_AMb6=4>9IFeM0W*rI(jt z?rLOA+$R6X*8bODZR5xYxb<^Ov{RFMQs%dAIhY8}?r3_HWr0IMsS@ zb@;lhd*ZV$^8M)eqdnoOPD@HpI7^{$%ibrop*8dQI~U#6-2U0-ReHur{t2}&bxc!q zLM$vS*7lYivP@1*eQ?E&^~2O@OD@gsIj?kbd%}d??%NgzPd>l>b$ya)hLv8iz1_Un zneK*d^1QkEtIKZxdRaZmeI=9KSEE>m?~q(G|MPoomgyTF_KAGA zd3!+iZ1MIurjL7<|EYb^FK3&lWPfs1vR8A=DX)7~;?dHxf>*ro>X|eB)9=$yuKs86 zcWSxr=6tP^|w~+O;UA<&m+qV#& zkOg*ov%Vkx&%pL~p5dpT+l`XX6j=OcD5Jdw z^P5f@?b=bJBbOXJ&9_E-`Re!g?sq=feB;jJ_y4ALSM#1pH_~(8TD5NDV$+>kC!1rY zEzjDa&~>g)^H|s<>&-S@bE9IuEIB8ZeRccahdISjVpXd)HOYTn74>bZ%yf-==~K8F z&i1rQK6$kJul~cS+g2t`h~|9zEcB31yUM)E#0#H_s^knfL|%~Qt-M#hw?SBS#zv*vJ%en}DU$y1??;UKrWV0XqXXq=rac0Bu+!gN6asx$n z%ja7p$upG5u-VM}o6Y@C;6H=#QG>qc{?Uo&VxKv&|NZ3oSL4Y-*18n$BhR)zeRGvF z{$%{e@c2&GW#?6{hVAXLp2BzMx$^7ii9aeI_^3`TZhQYCrpV{kUXS3Okm&N7^Qm`lf4XCGv9egA zq<5;v3Eg9L^XJA@d#~N8d;Zd1eYX#}XFjw?_!+(ocr7P0?SjC^i9f<8T3xRD)I0GP zpS0d#*J{nMXA_@_f4Hll!h2}r(+MlBKk@IaVq2LZFu}FR>gufL6%HP6s;{Ss3oKpi zelGo|trzFHIqP2~N?({fp^uw!($R0&vp4;xQyZ_L>y?pw%7fIU`85kJ$FoyRX3tIl}VC?*kXLs^DPpvxD zDs8!ZeaL><_|oO~7d~0+yGQ%;j^H=Ok>7XK-V!R3Ec{~nu1?{D>bbd+`kWHq)-i`| z{4{gwv>lnrON*Z?K4L2jTKYWD^wz2S&wtFzHRB*Ri)+sioWu8c`STxFFQ=BBo|eGB;cR)G^oO3wE~|NWguW3i zV1F1jYkI5t)_#34d#+EZQT`F`&fjiHmP)Al3r2nZbo+r{2~6R;O(vFCYHEO=(y=zJ6G4@^dgamo9d>%&VO)v#@g>QK%fD# zbVg5!&tS#vuQt2hs&{ry^|N*NT2v~seQwBp-P@OT`vzV0NN_E@^dd0!^#rHXPeI|g zo_~12UwrxFpT9Y}S*60yFZ}s!bGmSb)x?PS%5Bru-QJytQfYR7*p?f`sMfC?6~n?9 z*qAY!;j!&Oo79~zFU)%W)xPb%fXUUl?@TOJ+GLNPY0J1>A$zqv&+?7o{G5+ob27qW zE|z`0a9ujy^z`yKS%+tzv-|YNG~Og&-tTgTtLC$9CI`Deye}wSI^$)q+uC`mTD=F4 zYaJ2%(Y5t&(+BrmuM*z>z4CkUN89SE(4B$Hmm66;_BJ}YuH4Hrzid`~@A^;f#%tnI zDmg0ctLIHQtL%JbtBvU%)+GB+*Zjoy`^ULioX!6cf4J;>)$b)wPHgObDJaQ%-qQBK z!o6P(rKl0^Bo_4&eOaS)BiK?@YnUtrwdCppKpD&_wIiN zlcI+^>e;)_y-NMCe{;X-*6XffTYqkTetLE0+mxF&zS7lS?0cQ#+Sk9l=r0)VP~G+5 z{n}f%%6gvXf0%r4zxSa>Q!9SXx19e()M(W$B$n3@6Xe-Wrpa_0-h%w9%fN6R(QaEN2nC&>YLQ)XrPxx@FbxJJ+v1cy#gm zANMHZF!!7Co0slw@7SZb{53y^+f0s$UJuyAG;TckxYN(_W!LLErI%p_k=u^OO?@c8 zIlX(`m-%da*PiK7>U!sx!}XTQNVJc?aL<05@3N~mf2{B2eWJ53t;jZeU1?_UvWLkB z4nO_brZ3Lpopj%sX&zDL~Jmw(!HU02=zL)V~k(T5LZj4z+K_G9t#$U}X~-0`**Gec8qlGj#+_tr$@ zH>dghGksF^^}{r`gKG?nd%fnpeEH#@+&XT~tnZ%zATlep-P{Ll0i4*waZbY*YnmoHqt@pI(f zw2y{U&C}*TU;e7D=|!FV<;549MSb3`SNX9xJy&EB$DwOexA%X`d}OGeANBdXR7L;W zo;UIRYb92FS?a6N<~-%`%H&wDwYQ$nd;KuXx$EGT9?#mzeO86xUuSPr-gq|kh9B#> z;(L2u6=v!D)`_j~+9PcH`XO6yexXfV0!v}s*A*F2C02G$%gU~w-Oq31vdvn;&M>Zb z#g9Lylb`;M@8n>KsdN?D-zk zjm63vbDr&a9&o`MvGuqWfPy*B{%PRkN|F_(ff9 z_qVGXh1z6qo;3ZQRU7`eR^GqaKeubYk%bvYceLOg>y4)^3uKIfZ z1KH5r6zAP6Qcs_5*ZpRDKKrd~D1X=SYjq+YzRlTXwOK1Yw{rVYYv~A|CWEbNGatX# zI^h27+t+o{$M&iJ&Mb;wTNTmcs_u2sPG9|$;fLe9rbcf)Z}m|iwCrf%tx4~#-HeVi z?c&Y*;HfN-J!{8I-%~078AJ;bA6?%0#U{8fqDC~TJ6vM>XU~7j7u9HAN|+zGy*cB? z68?XCYbQVW%XjX+Pp_y5!{V(qu^+yNMN7YUa?T+8Wj}9?%Vwz}PSwM#U)Q`mWw7>a zV9Y=L){u>QYfH~o|9x}o$IQeGlbf4XA9!&6)IK8@@10Cv&Q|Lm$(M62XFkgPXMfZO zd%-NZnsYZ_WvfkjW$79z^HytW%%U|j&t_F9T#;j)tNSN0Q)G>p^hy@p3I1p5-ZSre z!}EJq-co~u&sM(hQ~oG7Q}dtniRe#-aa$$gX8Ujawnw*fZSxt8uqAI*E&l1Me_wX- zyZ)j3yf?Ns*>vqZYWyf}YAWmQpILjgCw^$}Jvw*R@|ivSQRhF-@2R^j&2Mb^eRb(e zEwSkN`wwfKQJuMKQvS5(Gk&Zx@k}{pb)9qN<5{n4+*fd>sa=lqk^wjg) z&b)RLv5daS`JgvSm;HEE+R{R;qiNeYrso`->B8esVe`c}G73<-< za_-ijN4qR}{HuO@<;y=ieEM^B)%8uQf|so~{;c`nW5vl&4{vWOuebk^JnhHK?0k_= z90%4*U1#c)7QOf5bey=~n|RChCRf*$@0PjV8@TeyE_>gD$0A~cTEkb$^>Ur8o@A*m z`X&D0S+;8rj$K-H{hXEV3GddNFInIIGqm5+jAn6?m+#H?U2)AXeSUAN*Uy}V?Nyua z?g?J_@&h#a z)aM?WS*Oie8J;e=>Tz+n>gp9~>)M0n7v^Qp*<1TAGvU#-#gD8uu9)M$u|Dm$w{HEx zs=U=klT|k6PT18D<)SL{ps?wb$G78tQ*ZonxwJ-Mb8gpO?F02``C{HnD!g9Z^6r!j z`uk^Tnu^jC=f)RC5s$A-zPEe6c*T`_PN$!x_eZ^+8x`_$M|AM>4>#))yN@0gJo7Uu z{`!N;<=u~a)hFl~#?`KT{A}IoBfBQdayy)^wqvhb;(602mwKO<)HV07TKVvb%2$t5 zTlePb$85W@*!S5zhoeSpU;n9|<1;cc?lX?BsxiH2GP{?Ld&NA-Mbk_xp1AR>TaqH+ z&LVhkAHy!|PSdaTht5mar~lx0-71uP`tk$6eG^x#PcmvXTWb8dYKvjSjw_4XtK$AM zEPNLwy2WgJ)R_PV@sm9tUw^)S{GT23@A@G1^|#{oE&36*>|ole5xaaQ@r+ zY5tMQKl_EVH0S@!JN|Wj)8VZ)?*$$||G8LCyk)~3M~#rXZkhiX9vE7z^_R$c^!0ba zhuw{z6;J#sU$;7FcJtZdUCaMe`Tl$OFZ6qa^ucB2AN|#oguCCIw2@tryX6xn!;w3+ z{PyQf@4lRMXTpkG&p)r1-MphZ^2o-oFWgtGn{_-QEb#NSA8+_g=3Eax{jg3mB*UFQ z@aA#<>CX4-xL+H^)r5Tb!gG_i^v~4ZD)qO0|6;`QUo8I5;Iy9S@0|B7_oes#w?=OtfSd#5b)Kf{Hib@ekY7MwTuSeyHwVY}q>pHm7Y*Ghe?=huIzJzwwM z-E;-1vr~`pWr@wVnH-W=D$-RVTToPZYrn%%$2Suz{#?_)zfxOn;=|scSaa{TE1svC z{5Pu1soPrhK5km*!Qz;*w(YZ8ymh=>+#=Ldj_UsGSdY{$Ysd%S4jP;9fbjprXeP1uP^_p+C z$$7R;Z{Akrl)RT!olYD%;ojMgBm)^fYoAiOdR5P>`O|-f>aE$gU#&W2m$mB$XWTc- zqI23y9-lnB@owDfATPd{Yobrz6?v{nztU#+HFVOO6ICAr{n;*Gd3CH%CT*=))Xw?U zrH^`5npa2f^ANO{Frg~~Sp4@kALn-Ik z6?Sv5q()VxcZo_f6dvN!f2!|KN$*QR|GSu^8)Tb^hwQi3zoj{2gCLNAYYI zeE$`u3-v zswa2_w>+MBX?0v?QHym-Lhb7_O-pOf?>=(nxK;U+RPNdP@A1gBZTYg+_ zU7T;lQunjoYD)~iub%zN*S5d#qpdmjN~!PLXP#8sq&jEI?9UgTghuN1v`;?j^jUaL zapUB-u~R<$S$;N6a?#P{k~#18eO`WPt89xwPPl*OBg@AQi-Lb%pL}q&N;xZ|wfo01 zwQUMlMW@tUom#`a_e~w+j8wZ*YZl7}RnI;9ZM)8acN69x+pu20JZ0LNOjE)By`ieR zjmjTwUf!HtJZl=`@|Ahd@(p)=^tpV(Y7UPllNq0f-JJgGqE6ARE~+ya-(~HaUw7$F zPLp{hr$s2sH0BGn#<8cmpOo3HZr`w>;#JW6!(#K-&b{<=OMmF5k1QJ(Fuv3`y{Q_+ zeVsXX)oP8O`=h3ARqWpzSA5XZw*Q4kp{=IVE4Qa_zdiEII=Xwuy(4L>ysP3DuKMJ+ zYRTjVtI4q;8}2M`?mxG8@7D{Pg*e|WYTUf_2HQb~$NOK-`cnVHW2t8E*Qd8)Z%%qR zi{r`E&6}SD)%w{x)icM&E}LJgmHMBdteS7@G_zU0#nut;AI^z+D!EIrDEHmA%eiIm zGUKy)^~&wC`M$lke764VQqR8F*HZr({CD*0NLPG0n&=pmUwq|kR`O!DI})#@4^2v# z_fzyr=Bz8Al21PB^X%W}H~oFnE-QX*&5dlX7j`+-Qm@xG6~~;Ex1Rpd#Neu|z$Itc?D?y;i}tIkk>cZDHo; zlcsL31NtmOIqsf6`!@E=3foC`?((x;e}7d?zW7If)#>Fg4Wc{w88)&cOR7Bnx|Vxw zRb)uhvmJMN^G!LXMNH`EJWzc9y4?Q1S+}KJZri2T{O0P4?e&oM|t+-?dxU zE?HMZ=M*k*iFwYz!x$GTw^}OpNr|lVw(L!pb@JaS^Snx8NntXo*SosTY`RXkUB|paeW{6N1ii9uGjAWX|q4Jui(d4`>Btuzn=d%`PZyp z^55*YWydpBbeXA4uG~HU*R!pkmmmGDzT@NEKOILBPkj4*Y@fW=(|@g{@@ z_0I77-?#Q}Z_H6W^ZWLC(TQvQgf1R)i+(Da_n)D3fm)nM`MSJcPuHd1aTBS%7{53% zzogLSb4*b z@7u}8AJ(tgpZ?m{*2UMr=i{~gaW+k=AYH_3tpY_ zHhIbq#}C~hAC@28&zpVd>(b3_@A*YmwlOYFJ@@dSb;o1o=Iedc>u*=7&Gu+AQ4m^v z@;^gO+TO|GxfXGmEAuzk-&%Og{=Vpw`fYV~$8+bu#r-{m% zT-qOb*1GJ%H_dA+Hhh}?`-^)w53M%;g>60<+u0?R47|;`SbiKl|3MT zdA(`Whu&v<sf!Bk90}M^y~FWv--MTDf_(X>h8VKS5@9G zJ-_$?&(7zTvsZW5Tv)Pm&A0qTZ*!%y*G|0s!~Njq`>UpQ%=vyaFI$d%)+wg5k}_4{ z>uXfDZ16TQVmW7hZTgYsgl#>_w=Zw4GnV18?YFL)zx4W}Jx*up)^q$`@zXx~@}Fr5 z?p{wyqf1j0T&w(hqU`OQcD#Zabu*2=Go<)Ut+YOakk*rU8O;`F0>y@>C= z3V%;%aXqOy^4nZSer?sP8o_NJW%A28cW&HSn*7Z9)MmkhskQ}`kMoKu-^cmr#hnh_ zzOOZK$+oF#u7y)oJrrch9_@Fqlki*|`y=ntznhml^b{hKYM11>F@P4X^=*A~Y|isg zU(dDtXSE+~*b&3>Vbem%>a%ax?akkN?Ye*d@kjdwYWP3KO)OUE54gNe_qw#oggto` z&$UDwp4%U(Ut0Y5z^~rj^WSox5De*4I4vgoQz7~5`ptD(w)2h)zWt;9JYRSdr@Y+O z^W8_UE!PXVey8e>?ctkcM$@;g{O~v*63>z)6$t%JLt+&-HTGyKd1fVVOEC6JFd%hqk?1+Q>p$l{K9-89=2z`GhSt% zD4iykoU}tbIotBn{dexyQtuc~bLUxYVfLS4uiEvyi+;Z=yj)Rd8}v5uKSQ|G#7TP{ zzKFis$NeF58pndI+qtEBv>Gq%T+idQDRzPK>a=|eepoKMF+*@E_nh)2b3O)#Jo(~! zrB7P9f`DxVGgovw?P#_UnGR+b=)fFmRZw z{cOE7$I&CR3;VKd(!@;Uca;^~s}48r{HInl{@}mi`Ac8z4^As<{LBicJI@9uJXph*5ZHypT*bHSL>L6T=%V%xR)8^An_(` zl51Mb2d_5@GG!-^uUx;zj%{n}_qHv6-8{mSOLJxJMdrM{vvA`)+4g$&f2Q}-uV4I&xS*Z z!HfOQuD!SZef`p&e$JN$yl#)4=63sWgcM&$w>E9t zlF~ajbxGBFyOyG&;;4U2mxZ!B9v^cnj1Q`@`%pUh<*IkxbGPo53|k+0N@(Mgv=XB; zo3;DoMcs`3-d%h3>uz@4^u1qx$_wB7qy5o!PXFv~_8!9jY>gQ*~n3?sV14-}CP7 z+xI6VY5|MX)gQ_$T$4Wv-8%JjadfW3PoLPP)&frFNtP;49ZsAqyv`7?G-$85T>cMr zufqwOdTO-XCOr-J_HW&{`cvKZJMT*QnYoF3x&OTwMWxDRC&EBn- z^)uU+>`eXss^W{7u=N?$w<~Vm4;On}AD!_xx8C^4whv{?Sz7bnt)1xb;P}pSbuC=$ zS7dB(mv(D>s(av0QQe&IML!y+cpL~f>(~^xGI7G5f2K$MWuyFO`6s_JtkIo*v1_T9 z)#=r_duvPn@aD7qC}rIfw(Y~)!0#K1B6m+JF#cB+zC80E)6VQb^(hX=m)bv6Z4tWb zl)}8VR-3hLwpf>i&)dbkt-sDbH`94;8>zne(8Gl(lcMBRvVSq(oEGj=CwlZ%*+EZ< z^%XxBOna1Rv#0!JoaVZzLZ*dR+BdCCsZ|pe`FO*wsyq1nALr%HdQvVH!Skm)c)X9d zO1{;Ge|g1xmnM$2Q*Q66XkC2l$L8zobIjariyY5Yt}_om7#w%?x9q*cg|(|Pu5Wg7 z-Rb#u;_T;IH~Aa<@3N>n9;~bC`tn%vYD=!#n)9uz!}+H_(%u==vv*0(yUDk|)X$yw z+Ryli{pM@CbH#6&8lI9llPx^^zhDV{j*v-{bqN) zS#s%bz42l8wuM{nT9&{Ol9s7sPYlcia8p?%Kb*mrRIpnC$Y~ZzQX$|87g2e03mTW3E#S!h!oz9cIp;kx2F7nN;OK2H41-0$`K&#ujV z{Rxk4_RY;cr+qJ6;lk2Si#mP@|9O4=5Bp>F%YjZOd#bOuzr38wW>h89bz|F}ieHB7 zU&=|H`EX;+rnyqHmQ4D+#a?VJyX3b1RsUpvJc`YKWY(N;X_`JyKr+t00YJsWms`5Ufzj90#WyK?jTSAEOdyfJ-?Ee<}L_U^Z( z>T0=XkI&@o3EQG!eRq!Kx?FL&h)vRM=X`6mKRiEH6!AmfV{2rA^2S!HUkak1Esktn z;xfmWp`h}3{iWUBwP~&a%=6D}KXR(T)8&&O(zZ>w2B(bbl@kuT2swHR20y$X(+RvNwE@W!*9Yn@_`GzP`R zrQ2LfnUpfgxAftQqE{7?$1+yk)0}I6D7#bVpW@5wANzD&);(89khp35bAxu3Hp_1`w1?tDoy(>$NI{8wG*CE2VXkhQ^`D+B#5-nguGDB*c~sJ4FP zwtvz3C*ITquB%-*^w{9W z8~aUbs-JiK$@yL&YV^E6>Qlc^R#STZY|Ay8Uw5j+Nb*0AG@pKSlXqBAsMh|9w@Yo* zm}ZAK2h5TA9P{^dUQ$-|?zztyu4=~2pHk#`V7*hTUPw(@c3B>M9%uL;@nzQ^xo23tqa(9E>ce02;Oy*-hkef5Ou3Az8N22^4xe~juiom> zN~=w|C3dsf+YVf6QM>wN(jUQ%>tDqcZ$BHe_Q=6yf%6|Ni@o<;WoydWq9}(0Uo2NG zZcmGxm(MF?Yky$+OV&e^+}ZZEeAwTYy!G-m+XscO<5e=HCiXUKheu{UiVQN?{huLf zhF?Xcwe+Kc8!`8KLftpMsk8YQb)Wt4bGxsP&m`;FY`2= zv-7pro7aoK*6eEEye#a>G6|cj_I%z?Dwcchc=`0c6KL`-OM2(`ZN^8PQ|^B>Y-n;j z&OfKB_^Z({?>XhSi!R@sckzL3MdTF45AJ)bsw;k;oj(29x3BAGZaM3-fHi6x+itxx zmF=I`1h4jbrM@&sLgw(arLh<9{n&m)J}WJ)=GmU-p}X$ADGs=om8<5Nb!_jRbCpZE zg66C{eKbv^;7jdXTS2~sdf$$g-e>$8y!gkX>ZQ3$Zdlbn@i_lwolvClr0nQJ+kG?C zX4u(WVvzUw{A>QHy`0Or{EnYUe99AMC3iXd?yt!CUa#dWCq25caQgPOmF=Bd`)zN$ zJ862xbFIh8X2n0R&EEalR&@2bXUM9*kKbgRXK(EO=5_e1bkC&X@IU4?igV>nPu;zn zr^4)a`F+hcE=dJ>b?qLC!wCC#oVN=&!aehMO8s32a42yh0Qwv3z-P=6Z)D}I?-9L^0 z%%3{h*I#%{)s{@+`7AGadCt?DGqSuUxCh3jx9zd5U8&@6kfD$uS@CmD`i3`#cYYUS zwKthGuF5)aYT<%ro(B!iG9Q*y71ZmLuU}ll`jFF9%|T$!*GGG$Za!0I_&ZG~Z1Vln zU-o~!@%e{$%ZD4U^bO9`x6JF#%g(Rcwr^h5>tyu@?CrTd=#5pmwbGBsl3Hki+@|azise0dhPEY zVt;MF@wtr>E1z%CdZhN$)-?D2+y4wv5pT~toPO{iO$z(*_21m{{igN& zig`dULPBO1omXv$E z{$c#$#Ns!;S$@5hmhMmMz4u?a-?77+*J)4I!}!hR;Z--a->2R_asGG7x4wO+0Xb_ z^H=@upD*`ef1T#M!X#10G+T!C4p;4DGplOu#N77~c(VG$4!h%Ays39GzipeaCG5kR z?E5m4zp78Zw)pjw{0#M4@wrTocFTb*UiN1l~h&Y63q%(LX@Kknos@-AF+j#{n&kQ|IHWo)ePUpMX!tEnAv6(&O9~BXmk2Cr#@z*1yB7nKK%{i%oUxX zZ6P-|+uVKU{+*dVVwcV+AI#VFP7rReJ^!B}{?cyUDACl!uFF3{vqk?cRGYL>>D0`r zW$W*=Jed5>i2aeR_SHVEE7DJQ+p%qPSvvF3>@_bB$4$R>OSeAm+TA%mR=YMe$xZ#L zd$@VlucGe{+$KJXwLZUh>m=?;jN)NWRQB$gBXEboE}_7zZ6=g`{n_Ju*l-fMr>vsc%?m9x4oy;E)V{g{)Y+h=Xu$lg$R zv^@BSyU*n(>fgV!EA(6bkod;H{Nve**q0aYdQCgX(DT7ThIK`oS@*PV=jDQjEqgLe zgFHRoOy0LI-zBjk$oj3nlFCgf0m<_|zxadi|7W-!yLDZ|A%pnh?Lq!O!ec-DXE>B? zbvQql0eXu~LXCOF8k@`F`CgA#2dz`{3%R_J7-qLnez1g>)>|geuf%*CD zxr!k&$LzHZTrpX%uPdp1du_FN*B1MY9;d>W7FaD|^yUe-)%vP=>dZI8n{mRD&bJ)p zGFRU9&3I6mZu$Dwy69K=QVV9v8NHHqUMW50i}ID~Ykg~3ysbP{ytNj$rR4Q6p5v{S zZ?q9le5|V`th=VXY&-W3HioGx0+sTmZ5}5q*-c+xIpRKzd(!tie|~dMz80E&`n8tL zN|RalYu|p)ta}^r(f_Th^7{~@c<~q6_x1$-Hi%6;~ZtvxZ~U;iM&Vmn6Hr3$;>_t8A;%bZMRPkqh(cXXaKSR*9x3m5;91dTZUU0l{+Ya^cY9x}sOK|IuIQ8O0!#~qIN1Z@$h6}RJEPfT~GOfutH&>U-F6I|p~HBVhAMW9#Ho9}1j+05P0d#y-W)!m zo)<|XcP8zcHtXx=>$z*Lez_m~T+&qbE?*Ygj=LvKUsydq*u7Ww)X7JJYW6Qr%m21b z+TNB{*?j5>eD`F(_vW7cdktNu zvP>%A&$;%z?TxAS3*{-tpST%Lh?mtB|oQru~YB(Wa?M=E%-@zc2OqZEdC zSt`!F?W^wjIM3JNUQ4vxXBB3Dv^4x-6DG8O!{P9r>$9KMuc}-9&aSrluzH=Ay~ReZ z1)Jp>!WU%C=i9Q^E>ACi2}kkPCo%HLt!$g#nf#9Sn5CT&W_W+6eNd%sR^3jwZ%y?R zFYU-TD*QI1(^X&n%>6r)exGA`RpeggcS)r1#IvosTU%4*Z9_hacJN(xvjp87r%-rl zZ>ZPQie(c&m=^Ptg?CJ~^!hcw^xxs@OwS)~?~IXo9H9K4K~c5l`NvbS^9Az7ZHnqY zep_GjpP{LKV}5I#y2|r^YS0Z%{~0nmm-Ighy|g$X=lnmruOBQ!<$s(sG>8T5@O>+` z>Tg=~{;Tx|ETd;1>Euj%zTsUq-?OxN!ODLbzKBYy_IaxOn&tIZY_2GCyY!5ZqZwaf z`~7~z@)W+@VCHG;b?)Yy;_d$#QboU(A3XWyLByHa*-!GBVt!irZnx#Gf8n;b{?I+m z?2s7GE&WwLS6wdI7&QA`-OcHV$$cj>9z#SPWBIQa zvrpS+EfV|fr~bSB*ERiyKY?n?AFma=xb%+P%Zl^M?JsTFpMCt(t)qX1e_cP39=dm5 zxsx||Eo|rNX*R1Z4qcl3njL)Z%K^KBt17IscEW|{((yKd`&Ex&x*}K!B&qwT`wdiBiRJO4hgd>>bw_4aS}3Mfm@t%-lw8~o-{^RB(tULTiCjAn`4aeQrl+xoAS z){9S_`?P#cK)cE|Tjxj9mS-F7pBA>S>Z8r7lpMLQ`ya`Rn4ZYJ^!(#G_ON}QV`rQ8 zR`u<9*YB)#@VNHjBF|STuks8se&kmDsy{N9?UhMycl>c~c9z~v^1A)92a??PS$$b0 z)$;SiS?7iR-|7WlPJS*I`$T{K;^w$kj!#E^>fGA2K33(|`m^$jtm4)#Kf0LpRC;d3 z{iD*qE0;`86g}>%x!3DVno()=YjM@yKx163ZZ4o%wC4O-FWJp4j+^ zGvw5bHL>>DaVd{ii0qnr@0-f3^BZ?D6`yyGnXu$%>sO~HRar`pW=t?RLr_|)Gn#M9$)@AGiBS2w8wH=ueKdsWpXFVM&@~Y`iw_c zD^5H9XAoSsaM~lMmQvFvQAZk1+*tdcLEv?LM%vF$zJ;?|&%K#*U3IS4oZ}ZQ-Pv11 z)+N7MBGdIt{hRf*T)*DR<*|NiO{ZQ96UwMO4|*kv$wD9 z^$ZV@%K2ec8S8UNRP*4iv-bP`Gd!t^KWhEjQ}jq`_Va!bkA2C>*LL{}RV-aMb-VZc zV|zY_@BbV#=lbl9m2aPy)E*0L{&)J&C*N0Te$Fuq?C+heia*Tp&^%E5_`UTS)s5el zKHpmwCveT~#Ou$=v(&}q!VYssnf_fPe06^MkGNVZT}j8AbGJT|7tLE6bMooibxy~R z3mwlA@I7XmJ@cb^r|-2#m(uONUXPcSy!_PT=bzPW*@+wb_B>sBF8)Z~zT~7GX9L@K zb6#!Vm%LGJ=US)SBR$vkq-O6uUu<*q_{|-QxBs2J)&I@=u4&sgY1>G(1i3sub7-~J zOy-Gy+@EM!C0G8E-3f`9e{y=A$~|Y@BeOYP$62oRSmt&#|3`bQInRAN z&vp6%yY6_Nt@QhvRV=^2c{+1T$hxQtO|y@x%WSPx|B&ZxQL|a?*3W#;-P{@qU$VaP zbN*OxYtbX$CDqq9PT#ot%sH+t(~=uX65gC&xhHbfjrufEC-7SAUyn5PQncKowyykf z$#a1gC}SPS{&jrb+0W^w6?^=*UzE9HJ8{pdPb<#oh8`?i7anrhOglMX=ef!?((QMS zT$|xx@v5khP0O_Q^6U3Et>ZTB{85{>U3krQv7B$4o|?VARp?kBIoVP3=RJA1E;?Yx>$8<#5}s<$PoD88 z(XCynTH;q%r(`2TlRSm&O}l*MJ3hMW zER`(XZFlWILsQ*^y#24||2y~f%ltpW-~V}rciF$u zxc^Jd>gVQfJ^vXd%`W}V5c8kmTlxC#Q}s_)9Qoz_x%2Z?`)1*D8jHIA@;ouO(Xanj zR$ZpRWhgOHXX7Zg7iK{5iKOS^LVo>hyhu zadFn%oYila*4m}tFW6Sxz1;U=i>fMX^^&_&f8GA|yFc*)QXzApH5wwe0?O zhaJCe|98(VceYNN-83b=KYRAKtgBgFT$G~D-nCNsNh?droY0DSp7T$)O1XUroKyW* zYwZ)O$ytKYhb7a~4zWB}zqjw-T#>o!lNXE62$@oOC1%~Fi{`6el7*E8OK4XP@EkO$;)HajH>Urp(=H z?|=G(#mfu*Teg_oUiFvH=+oONH8&-{icU3odRygsdi}ChPej(mhh5&rbdh&SRk)kf zR?Ccvo%dpUmdsgSVs<#-#tq%Gxz4K$;$;4n9?lGlTKjL!2d9N)f4}9t3A{Z&_+OPw z%oX{7OX;6Xxhs`aCiI28nJn?tzi#o%d4;i43ks&JnYBOrRn0%<4nvcS>Z~bGR^GdF z);hNGKSS*LTE2C;9vhynHhcHo_BHcwj~x##*Il0H9delU^v;St)o-URrnO9Zr!v|9 zQVMt7=6A=Z&ndn#vHwX{%fvX-jngbVBu-6#Aivc7kX7B{mG=!!cbDYf+xhk1tKa__ z^e?>EDhyewcFE&&X42}@vTjo}PX$fhb@}6$=!{YO{?oc)0R3tEA^A>l?Fdyu(^GY+Pb2r(V4r z9vAzc;o4|AW~d9w5TJavyv zXErr(s%`sXy)ZLNFq-Fhaq*r13=?Dew&>?xE!R7GUPWeNY<;VZb)^lr?hnP;6Q$-g z%l`elchyFd$5Jw%s$wEVb9`%#g=Ac=Ihl2@Q~mDGx6jwlT<~kL;OVQ{v)?p-4v&~8 zuPHB>Q2L-SB)?=s!&7^&kB_5fRm(37J6$-rZL+&$VNr_uJgsc*w>=`;mDXhKO6ol; zaqH?Szg_*`mJ~R&xfgF0to~bTx0n5S++L}I_2OxDwKEEJpIoQ^?1G7-pgvA@)uTY@^DvxC#=l8RJ~pd&1v zr4k8TZLFJ&46N&HwbwL<6)a#kJ@B&Z*3x(DzI|v7-H`8#g>qipd{>ePp?%Qmj?w7%`WGx=P(4AcF)@%5Ll^n89@tr4>1*)30b#;wbNE<@WBqug|8P)O+M<>T&1!q${V}cbJ{k2{dM~uz2v-Hha-r zzF2;7(b-nlr+xc5>zB+T>%#?wpL+D%i|^FyAKNAWHvD$)e}=Wia>5r)t$$pqoPVnI zXPjM`+>RHF&)L5mtzw6B5Z=yyZPUW2x!U~z+_q$9 zE9=G1&+~ZmBC}F74u?xV64|xw&`Kqv%EW71ZhK$P(XqR(!;~@6{8UozF~eg;_VbJ^ z)R$J7W&}?OE{b|nlgDm$^upSpIhiL{XrEkKU4P(mecbV|TdSuY`y8?^fAgHJMJrdc z$(U-#ZT@N#md*6&tF=~PNY?SYX>-q>EN;k}v#CthpJ`#|lbPR~dX=j*&OZ)$_xQ@Z zf6^66N$(1}_B{FhpJ7hY4XWqbR%VdePSMfu?u-kPkwn4K*nxSh-1_{#iqYxgaA ze?VovS9;qY!-Ax+-T7udU!2PL{chU-t$NAVl-!eM1S-dMv!+bByVc(3bV0<+hmYUt z@`_Hr|Bvx_T%6$dPyBmReJ#t*RjfPrpTU=V&eEb^+vaW%>wc9mC_vlg9IKC^HBq1AsM)!LumTIJsMhc`P%C|Gb_ zVe>N&{6$#V8|&D`gySN}!D&il{s zpMmA?e}+k+kNSUeng8qT+n4iqvHg=}ck8d)|DF5#jsDHBGdC-Yj|hq$%X6-OV)#$= z^ZKLKCObdIEs14jR@P)Gl{Ebj8D{Fzi1cyI;#c`{#EX zrmk0}{~7p~R6pGsyY_l|@;}it0*(qz9Itrmrn>FXcAuqw?pb75;|Q`#Lu<&=eo4t+t)u>(>Lw>!)?8b ze$4m%$dwu99N@iT|D`>xpDPvZ{uzJwv-%;x8WjXYl&G|JK$+ahY$b75{DhB>7$Iyhf2-_kV_bJEi8;!KR08 zd`gRYzeN51TXOw*@w4pP6$$=Y5|b>hTZ9BK{9%=oxEvOJSncA@bH;tmfBrLgnR+^= zJ=?lRT1od#b-z#eg*dPID}M_u_lnqZDem3zZIHWF`YwL^vi3iN#1A=XX*WfN17Ftq zx7jIf-Mq=+%z{VDezZR7uI^3?O}w;M{|#TKf8>KNtNhld5C$;YV%g`%l$>_Me^S z|55tE_2#!v&E;>Deb}XTLHD%Nj+6GK94w!&Oa57XN`H^>;+K`tzILLwem7g_9r$gW z(l_->{*nCx2TRt8wpOTj=7lcFk^6eMXSH5l#L3%Neyx)}aOs=et-TVT%b$k->2vzW zZ+ay8N1yigAGHs^?5s%ag zt-RQ)U-HwZU3zBNar^A*n2)(x0(}+h>?1oPB?M#Z_F8RO+Z@xk;z4svg!f8$|08-r zOD@|AKk)7PF~u`mQNK9rVT!uS)SS0Dk8kune|qwD+|%`c#6G-RzhwH=E#2AehOM8y z-cDgCXOKy3IG<2GKRAx@x6x~Xm-a$E;o|%<#JtqQckaE;|CjW_E`&iO_eTo&3M1|?Y-~Uj-T46_apM5uU43c$+iId zm(PO#+}iPbt<|}MK4H^79@@cGwq9M9y6C zSGF5xU-|uJKXco{mQdR%$=Z2~CjWku`f^uQ%qy*Tjoaj>+u!^8NBd5l)DPp|-f6+g zFXNmaZjax3Ec*A=FUt@4#$7w7axWzGve(j-<(n)Ex2iXvUTUNDed*5PxF5Bma~tb* zc=)|O){AAX&NW^ktNl`6^2f4E(QKiqFXOE%Zv9l9=f)B?<5$V!4>EgHyN_MleMByQ zl^bJX%#9flSr_gKcxflO%0^oEEuQaR6Yje56lc~mQz6N-60W7`8+NoU*O~I*t;*%N z6~CGven0%0Uog}2TX%K#ZOe-h+N(~=bRT4&(_|$WVy9SlzD}Tveb%i@kA0^uG1`3V zoLljn6=8Q)?X(r)Nl0eydbK}IUT94`@0R)7POaBcKElWFQ^?Ilrb=tYAMKStIv-_c zcc+D$Hn5-&;#(1sff~d^KE`ScJh{tb$TrN%<70^Y@7D=eM+w; z#++9SvbsJYJD6?ahU}&#L95@*k8WBW6e03DuPEwF#ZU0vM+J`SbAE^~aeZ{xRBxK8 zkh@}6D#OE=gzsNj_`n#;&w?{x{pJZSz-TUp#MIX}P_mXXC9kH3yFHHB1m! zzfl#wlq+y0>-h^mx_-R+;p6Js_S-w(bXEG&AJ-pDZ~e+`T(~l0+b187vYCv1Zi)p) zFPsJYjy!IBp?$>0|HJ*mQYB|5yj-)O{_>IKKeyJ#Ke{h^>*Vq&;c-(xpYPMZl=&pV zRVUX!ZPIeJeQ9$HTYf$D3^{hOXZEW{`%ir4KJ8tdn(_8wpU63{MXi!wA5A_SmE~Lg z?6KZ|1`Yc+&;PjEgKvqs@}YRq-Q&A&?fI9fRsF8Ee&eE#Sr_Bpo%lAt?H-F%i^p4e zi7)HgkN#tAJ9c5BgoNDG)gKPWZ`r)r;mqQ$tsl9Me7i1oX4T=PRRN1#1NH|$+9=tU z9&GY7{OQim%RASEamp56+EMGvuC)8ScdJ-@f- zK3}YB@*|J1hf{UaOFbhuFgq$Yx7utR7^M1);`8BH}&Jz?`Pg*zq{Wm zXWUiKnpwU*E+{7E=24SXb2QQ%JQyYwPJSJ?C*$&zE6eJNqm7PTJbbQAI{R*AeEsqG zJum9yGhQ!pUK_dSfr$H`!~8GfH7foY+*7OD zai)unPipsCKgZ^nZR-}UO;ch1G&#O}`q_hv*LS}NKH}uPYPYG4VAaZ{hq~?@J0pGL z$^2K^m$&c>?cJqu&&~Gr!7tLEGcDbcl4)tdw*!83FN~VWoxe+_meKywuKwGMf3|L_cm22Z(SL@`U*FID zIQekkyK{N{{~E5ozQ1kBys-H>|GM`7l33q*CUfiD#7Dnw|7XavIj4B^^0eai)&4F! z>p9J8PS%$me75$*_Gjkqyv;FJwzHn|d^DT)Lz@G4vU=C=_SQW*)rRM5=PBPZU-(wa zyz8Ds!)J~^nYY$=MWra5@P8Z^ox8GTF@Mm$MIKLA_da~K#crD9KB@RUn|AJ8^-3*G zWoz;D@0KUdIv3Z@f3)VOnof~#$;HD(ug>!upPL$eOh-L`%B*ksJQdS?t(`Y-%-olu zdr5iA$4@I{>OvoF`+Q7aU^D-OcgL!~{b#VddLjB1&y5h(&KK;a6)QZKOgul~(F(WX zDPQwW-JA67EZ1#5Ty;5W>fyq;vdhK0ZLaR-^(eX9q`hjL=qW2XvG{q%=7uf% zZoAE1!hYiRbGEkG^RI3FHs9XTa-F29a{vB7-xVoES5LlC`;xx@@7lIyI~Pn!Yg<^p zW0G&eJ>R|kOO2j=*r_13Qe^?(*1K-)nxAgY%UZo{@`aanvUl7wAC>McQ8_3qabNvu z@~8g{FI3x2Uu~|~drx*>;mg-?%8TwU(K@$|b3*fk>aw*v)-9h})OAGg;G1lo5S8b( z6JI@vSS5H^W6PY``S1TTG?ZFh+j4pG=en(@f4)Av(|xc1hTCxGH;&uC3fqHARphODc;&*)}Qznu6+^UK7DrD zAiS$;CYGm z<-nEc$(Kym3vGE-U*Z2aCU0p?N|JXN>_VV7A9#HXF6F(sFFH49x&JgNCGVf#g&0?q zWcozCo3GX6Q*O9l?hL2>(%{PCNxs%TJ6(1g<;AQxAbapXgZ(+^oj~U$rEbjFX`Qv7 zz5c@Y3Y&yS44@c~u)5zNReRsk^7}fed%rv_dW>tWgO^n=vcI~uGH=TIOyhSC`{Cfik#$D{>WH6!QtZC@wd zbl*Jc$@_PkC(l}L`_KK}n$z8jo-u< z-$&Q$M1Yc$;+m|p)nbp3iWbYk&99 z>66^`rE@-qZHfLYy|}qK=IN1h(R^IL1-tsBFS0a<9rG8x{Wbg0iJz_Ws%_kD=CyBm zu}?cgiNV8NZmZhrN6Y4NfNYz3J1bt}@Rju|CfR*0vJ#GxcjvjytA8&t=FZhpWn-bJ zooAh%TOM4Ym)~Y}t!DBxOSN4Yi91WvJ7+%kTEAONc>Ag1xbqMDg-$NdC@WLTOK4QG z_LmH0?mxB1PxA8H%xT9CNqj!PwZ!aKvzaJo@(sSMj{%cCm1ip+4d{90Rdw(5*FWbs z{bxvf>+-5j;`%#ou_F(Q|1&V0|GIwWKaKNGf9wwM`Ok1V%zowi>c4$b?jQI&W;rg3R&Y9gh zy8L)N*Sf{a?%rCsx8%NxkHGe+iU;!A7rv+t-}&!O?snIfzTE-*zkg_7W^Z1zB{$e> zcdLk1tZPs82Kj4yK7YFqa4qZr-?GsBWZ=QrrKOd=Rn~H+j)%=P zk6O0Qe%bP4$2>jkHRIQdvQC>>zB+4VzD%Q=x$*o50d9WQ^X5OFwZF{ZNqGK;?_Q1~ zE)8)x)-q*p?DenA`di*>#IwJx=*vrUtxaXVf8V<<@+^7vcIE4WbyE9NC>-JkE6;Jo~Fh$Amn>t9I`1jrUfaJ@D?791Mz5VCre%01q zEjiP<<$&W%q! z8>s$6K7QuI0)4p`iCSLsrytoDULH3+;|CvS%8n`SLVGruyE=H~9-xqVaF$XD87 z#^Z{^ae|@bF%!)c|6PVmk_|Npq`-U3c zY_(aNtn>=KidXl~*Se@2V>m)9J?*TQWmuS>L^FV7&E; z*!eidfNJ3hTVGyYA9^8+KltItnPKrVmqZN>^Q>OXoqFrixBm={7r$7_Mjzg%bxAoh zuVm-*Z6SJjx>rt0gfeVQVhiE`&hM&vs6myWYJ?yLHbqTqTeBDGSeo zc}>01KD(oJHa|RZTH#;h`jG3%9M5)M*&exmvU02CpXzW`o1;66i*72v*cc=2C-Qgl zil>^HwUhQo>tCHYkLkmbcin|mJ(0&xGV62j7r%dd`}O5Zxql4Jr|v$PzfODokMM^l z-aqfKYO+{gKL4OtK&JIKy|Q0nd2?e*=0;|e>6FDE7HDJZ$@{f^ckTVJshjM)u9!6Q zIr=2+oa=X#YlC*&&5!KfUDwJv7!I!2xF(>zVV&w(uchm1ZSKm{3Ewi^`E1s^=>?w` zML#`l5bD#wX{%kP&-(g)a_5(4(I=h$eNwvZnFBh!TCn*}-@G4eTO|@I)-U+akS=Q^ zFY;nztWV(cF1NNCMFxW>by*=FkK4Ca^X<)a;}Y8*{5j)kWvbMV&LqppnHF2#X6NVI zZr`=_>cmffzs%~JZ*=>WS$J5mQF{a=mz>~Xmt>!x)&916XWIG;{~3gS7@fQBt0M@C z80KT!3=bB(T2Q*`NK$RnHTnKO%rf&;BiGDY-dXm!|EH(CeRRbA7^M>%jGXR&y7=R< zQ`7Q_EFdFSz;U)H-`6=6#ZuJAjUx-))C>TUI3VIrS3ojyPP zDR(uGdtuZP4X?$SCbz%5m~`tugV|nB8{LQYdUpi{m(;HcZVrdUf`luZc%0bVMs2WH_p9u?xLY@}EIp zVQtZ^vrU^eB3f7Z?oUsXA8d^4`ml>uMwa5$q*e((NkGkIE*oOmYjEs<;B z5AI*^S35iC!}2bZPiu3R-+2}GwqaAWOXMcU2MbQhT77wW&QI%DYc=2WN7>n{o4b=9 zs#}~BnCH(h&%#1xPV(N`^&kE-9Qd~BtxTO+sU6Tp8kyEXSB=o zG7Xux^2^J`7gyK3TVMS7XQ^1>_f-+8l}iMVtXJv17?Lvo(7s1MCO+;eF=F zUKMM%ouJ#2KWe*d-;&O;xa;}a#yN`TZoYo{C%FA+lAPQeA#dmBXT6TPIYvGD|`gTHRyeIhSCJ~hj6 zpT^Ci1qqK;O3ussJKtKiHhukz#a7#_~@A2J5_L z{EIAFQK!DU`JsHiYxp$9t^cI$_iq0wm%RFAdGFK1((GjkyBQCte0lQwdf|ir3>;fL zdbLfDJmHySw5s@z{c`nr)+Ng`%~qQ&+|%G;9e!)??}z5Ciu*E7FHl;vPHk;wd+~6t9i-V>sS9X#GW^nlboq^C(+_pnBU@Mm64~eU)!hjA$IP%SrJOj z+b`{5KXy&<_8qGgvacr#woc{Et7Y?@f8lJts4TzY)ir`wo@Vz?cHO=A+Tv|}p&@zY zhQAw154@{C@0WeC)Rl2YxMtla$CAkho~pW?+VD1ZhmOmoOk4k1k9wAKTOKP_`WfuI z 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 literal 0 HcmV?d00001 diff --git a/examples/hyper/in.hyper.global b/examples/hyper/in.hyper.global index 8d770a1afb..22b3b4251b 100644 --- a/examples/hyper/in.hyper.global +++ b/examples/hyper/in.hyper.global @@ -4,12 +4,13 @@ # hop event on (100) surface is same distance # exchange event is 2 atoms moving same distance -variable Tequil index 800.0 -variable Vmax index 0.3 +variable Tequil index 500.0 +variable Vmax index 0.5 variable qfactor index 0.3 variable cutbond index 3.2 variable cutevent index 1.1 -variable steps index 1000 +variable steps index 100000 +variable nevent index 1000 variable zoom index 1.8 units metal @@ -44,7 +45,7 @@ neighbor 0.5 bin neigh_modify every 1 delay 5 check yes fix 1 mobile nve -fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 4879387 zero yes +fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 858872873 zero yes timestep 0.005 @@ -72,14 +73,12 @@ fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil} # thermo output -thermo_style custom step temp pe f_HG & - f_HG[1] f_HG[2] f_HG[3] f_HG[4] f_HG[5] & - f_HG[6] f_HG[7] f_HG[8] f_HG[9] f_HG[10] f_HG[11] +thermo_style custom step temp pe f_HG f_HG[*] thermo_modify lost ignore thermo_modify temp tmobile -thermo 100 +thermo ${nevent} # dump output options @@ -87,13 +86,10 @@ region substrate block INF INF INF INF 1.8 3.8 region adatoms block INF INF INF INF 3.8 INF variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) -dump 1 all custom 10000000 dump.* id type x y z -dump_modify 1 pad 6 - -dump 5 all image 10000000 static.*.ppm v_acolor type & +dump 1 all image 1000000 global.*.jpg v_acolor type & zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump_modify 5 pad 9 amap 1 3 sa 1 3 blue red green +dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green # run -hyper ${steps} 100 HG event min 1.0e-6 1.0e-6 100 100 dump 1 dump 5 +hyper ${steps} ${nevent} HG event min 1.0e-6 1.0e-6 100 100 dump 1 diff --git a/examples/hyper/in.hyper.local b/examples/hyper/in.hyper.local index 02635e634f..ef8ed4d042 100644 --- a/examples/hyper/in.hyper.local +++ b/examples/hyper/in.hyper.local @@ -4,22 +4,23 @@ # hop event on (100) surface is same distance # exchange event is 2 atoms moving same distance -variable Tequil index 800.0 -variable Vmax index 0.3 +variable Tequil index 400.0 +variable Vmax index 0.4 variable qfactor index 0.3 variable cutbond index 3.2 variable Dcut index 10.0 variable cutevent index 1.1 variable alpha index 200.0 -variable boost index 100.0 +variable boost index 4000.0 variable ghostcut index 12.0 -variable steps index 1000 -variable nx index 1 -variable ny index 1 +variable steps index 1500 +variable nevent index 100 +variable nx index 8 +variable ny index 8 variable zoom index 1.8 -variable seed index 59830932 +variable seed index 826626413 variable tol index 1.0e-15 -variable add index 184 +variable add index 37K units metal atom_style atomic @@ -89,31 +90,23 @@ fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} & # thermo output -thermo_style custom step temp pe f_HL & - f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] & - f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] & - f_HL[14] f_HL[15] f_HL[16] f_HL[17] +thermo_style custom step temp pe f_HL f_HL[*] thermo_modify lost ignore thermo_modify temp tmobile -thermo 100 +thermo ${nevent} # dump -write_dump all custom dump.initial id type x y z +region substrate block INF INF INF INF 1.8 3.8 +region adatoms block INF INF INF INF 3.8 INF +variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms) -variable Dhop equal 0.1 -variable check atom "c_dsp[4] > v_Dhop" -compute dsp all displace/atom refresh check - -dump 1 all custom 1000000000 dump.* id type x y z -dump_modify 1 pad 6 thresh c_dsp[4] > ${Dhop} refresh c_dsp - -dump 5 all image 10000000 static.*.ppm v_acolor type & +dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 & zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01 -dump_modify 5 pad 6 amap 1 3 sa 1 3 blue red green +dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green # run -hyper ${steps} 100 HL event min ${tol} ${tol} 1000 1000 dump 1 +hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1 diff --git a/examples/hyper/local.000000.jpg b/examples/hyper/local.000000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef0ec0cd59adaf184019cafa7fa00746be5828fb GIT binary patch literal 493761 zcmex=$<%PwSRFvdYWaQ-KK!z}~va+(XvGZ|o z@X3h?ipY@+{vTiv|EDQ{cwTw*63@n1ILW+itY{G$w>`H|qMvW5}awt1(JSZA; z@q>zSQc)8pmzcPOq?D?fx`w8fiK&^ng{76Vi>sTvho@I?NN8AiL}XNQN@`kqMrKxV zNoiSmMP*fUOKV$uM`zch$y26In?7UatVN5LEM2yI#mZHiHgDOwZTpU$yAB;ba`f2o z6DLnyx_ss8wd*%--g@}x@sp>|p1*kc>f@)+U%r0({^RE_kiQrin8CgR5fG1|`Ad+2 ziIItgg_(sNL#=pnu~36-ich%i}xzDkC;v4E-y|~<}ni3ezxad+~3TS^DIA_{xf(=Eh$@M zo#YWVUD@uh_Wai+x@XU=se0YMIXp1v*PfrV_O89W|I7O)#U)|iWf^HI*IwBA^WsZA*|RZ!XB|HGZQot{_0~US&Wi3_@*_C< z$}E4iE5|lY;`W?iWNSG2$Cn46gCc*}$L_gu-+%ko`${~UnLj;f{_*X&mz-8tuH{;r z6K&2j&k4>c_`GHA^j%-;FTGBER{SOG>VJmTudA(ptnpnqD>FKaW9P{)-+p~rdi9U? z+LzgqySC(>Z`^2?7F5M#TlscYwy^81OHprE8lNSN_nhdn>cPmtD)*cEZExGil&QCaL6tDQIPKSO!+mZZQ~x#kD!1+#7##^GsviyypkzDQ~+x?c1}9iQz$~dhQ#_PqUAjb^qc0&ZifXuim)8treqUL#*6Mf2o@igY zTi%^Fgap|W@B9jTR~YzgU;9)U+sM#wTDs@HZQZ&*yId>o_+V-Npl zuriA=oV`7Nwb!?OckTW&{IGM^cD1Wm(v;qoqNyZfH1F!-hiBP?Ke9fKdO7W^_NsSf z2X8IDbM4cdWVy62HnS|EuD;e1d2r|U*0pQ@Gpygea=L3??2q8+=D==$v3(_<<|rMz z>&JQA;*I97=Pjmp6;|DidY4qV&1MpRVo&=1tg}fgcB`7MJ6^L%=ag1aiE2jv;>*82 z?QC={DZj_{k+-+&Zfs;nGf&6qnj8P({$?GC=l|n%%O+~cwAHM87HdCy$MSEgzNDk} z=fxf$p5R)@|^8KhOKgvzL zd>=l2_kQ^w+47ggGZyXY4L?w)bm^_wqhB`_@67(Q$?x4I-jOB0pBfUQRn{j+Z)PIJ>E(MqDoaVCpx^P; z)~#CG+xIQkyL3s-9|`GS{!JA+8rYqAGFH}Plgz2D79p*i7U$D*|1-$z-kmP*7}FPQe)PR)Cx+B>&tg+!9)3j@woeM&uRGj(gu zyiU2ynQlLi??LpH-ajtax(M;d3uz*M)6)zjpt+c4ODlDE9^%@0FSQ zt6bBc-dZiHulMlB2j0+2HnQtp&Fc9kHf`b3hSWY!iMKsW)l%`%3)k=4BK7dk*%hWv zasO`RFa7;;*{&PUU#x5WBfC~_t=z2S?z5Av{r(wQmz=9>{&i*6@g^I`rMpzm?vj*k zYT<3-d^z_((66W5OV4f9{O~Sov8Ij9TJiK{w=3_jx@mhZtLv4iJyS)y{}yrMgOYC2 zQmxJPjPt4lu9rk(Qf3s$!`WDxFQ zz93L}JStz@G5&s(AfNnM_0u^vdtcx7eY^VJ{ocN;t`{mF%69EKyKmC8MbR^FXR%mH zKAB&~puSX2`9t641=`X-CWu-jEO}bDpwTyJ#kNV4t|z5WObdA&RJ2fK;m6GFkAKEi z&iN}69-R6>Ug&OS{H^+Af!lJun#wlm8!UdwWxcw#+%qokxEZ(Z(Z^37w=R2j?OXhZ z`}6klMRmPeYs37=d#>&KqpObRtqZZ9+;+UMp<>N%d+yifyB1ttt6TH4pDPDcYLdwOPx8u6T)q8?PDGR3^?_QyY=*Jn1mie7qI$MKPE;o{yX z?LgVZ@>8FjxMS-stL-&4(K9aZ#FK-mKi1UTwJ|j}+q&uPkNVhiSzRwn;+ZS@!@3@2 zS1V1tJ;&Ov@P`2ZbMK`U(nqZ3Ew^o*yJC`ufb|BIb^I67H@?07GICEW%dO{8vJ)Tv zxfIwlO)hNmrpxR0W!<)YQ*09U_jrrxi>)S?7jH5*-dCVxDN}l`u>aWV*Z*X%nz$YP zqM+||s)+H6?aSlBZoaCj>yCwPiaFMzZZ$<^ib?MB)W0>?XHIk#z2^Gi`;oJYT~~W% zY=}N(G%xRg|I4mbTUTBRpS^J!J0kr5P5=2*X0GU!mvM|A)fO+?w^(*T-(887nMPLS z59GA=&3$mUI`FFB+|=ynCqyAvh8yH zasRoyU-VUVUA_Lter3j_H+y>vFBi!))LK4UapP9Z{W#b3bnde@Yqtuzd77@tI#l?) z`@+NZjYl57{u{T}Z28u;>vm^e`xmaTXjg3gL8)(@!k)EUnt_uV=HB=vpqcQ&ykp5_ z@xV#v-+Zvwd^U-jr}TmR^;ySXmsnQryxRAl;cL0+w|%EyeR{U_ZQk7P+aG_joTa_s z!XMd3yoqU(t{rU&cw*CksL8r;{`sX&Hu~%A7JM^^*z;-8J5~PE{VR_@4gEUHJbPwr z(Kjm5flugZ*Sn{hCIZIsYmBgcQCK_-eofa<*<1>15+5g?0T+wUsf9yW$w#}P9z3imWiP={rCLF)L z%sxtYpM1r%Tp`_rTT9F)^PadQCMiEnn}1!v)}I$&t&=`G=Zf8W?X9)DYX38|{c~4$ z^)6<)cG<-ESdi;0-pq>h!?U(`yqkC5Yn!o2vXRV(1i<{TS zZCdEZdp6J7ITf4Ijr2l?9OocX+;OUY95i{&w`+VX=^-+KGEIZ7lsXzypO zJ@>#sTOVA7%zfYf*=5;1xwvP)a{tw9&$%jkH7kzcquSh*>EY8(3Y6Rv?7Z7kYxwJ; zd4r8N-?UvV-@1A7I77>x?wgbRb?MhL_MaE~f6X@AyKk-S`tAPvKiog@G-J89^igGZ zrKzPB3g4Dp_j}%TxqCC0*1PVd_g+i&gh|!#ntYODkY!)_ZLPjwg?r?M30wbonEibK zE@mRV_F9~E3c5P?O3|Lw8k>zKFU|d|w`_^O9<83t)TLb}&zb${<+0zt?K~d+6I4HS z_8cGMza8JsT1`##kK8T!u)tzYa^d02#o6I0cc*{-&%pFdROGpP?ZnCa{q%xrg>wJio|3VyiJ!fqtJeRw zovh`(I8QCd0LEj*f31FpSnY2s^))=?FSVz2TT8!c=da{hC&6Xo?$6fGC#D6otnzA^ zlJw?w_x)dQW_G)lhTmiOs5))l^yy(IrFP|qCOOOJ&G?%=Eg`gPgFO}u71uU_lLRvxU8#g zd*dGW+7+JZ*{RQF9E)?Pb1?k*Zz{jIquHEm?I9NRCUca7EGkWP=WhScpdX%^x7^gV zWZOOVkF4i*%(C6P>U6=Y2oaSP$K!6kvo8O2adn0A5vkH!QJy)Q?pVJOJm&Z2pF-f* zUE28=^X8Vkto|CUwg*)HeeGv{y~|6uX2KDNbC=HWzp|e%s{P0I zqe)asRqN4Jjv@_Hg$z&rX_Q~9zb^4@T}k+_t+R_i)y9Qy{r2+voVlWxUfg5o$FLp6nb|};8dPdCh|A=;IDVn zwcHDH)|@+7u=c_vhI56lJ(E`Ku6`Xb&3Wcg-#s>a&&u_?|25tE-SU_A`YU#_71NF# z%+FKkOe(!IXTv?)O^X)EF?>{d8TcwVYK_1NqeV`R_RH*}=C6DBwyq@SN4j~?(_dTG zgBpa}PksMn8Ku4Kq7C;W+qh%Vx3g`xeH4;%SC?dIz99E_ueHwy`HruW&-<=jj8%}g z*}ZA;@&)JXy_R<`nC+MCqlE}NK}qqehD zhe^ntU2f)iDId&K1UwP4L*@nzF9-Az0$Huiy7YBoe@!| zr!Brb_5JPq*xg@1ZC$DM7Sr9*g5@?`Yg*(f%nN@jw z&DpMAy}E@6iL+HaMTlXkdi_Lu$Eq(HU;ZZdYTYi@MsFSN_DIXSFo2z<=y)%XN z%6F!1haZX=Z7KLPU2AsW{_NfHPm6QRv?9DN9C3_2xKe-e&adi6_&ch?)_-{Jem(WW zzTPU{FTV;s&%9vhl8`NYa%%qPi<{?sdl}*Rah}?TnkuOu`G@6io+{@~6uln*{omys z|4O4Do!kAexA>uXyS|Ao-)+y0v31WRAGSJms)&7C`o!X&635AJE4TW_Km2?C@M`PO z3pr1&T}bjisT5XZX>n54$p3k~?W`x=`g0aX`2{^+DXX`oxy#!+U3;*QEne^2gE{pZzN?hm{MB|p{A+t-?mqF8 z8P~K*r`4=k+_3ruYf6p6$ME(q@`A6zt**9&U)W=v(0iQgxTXE6J*`f>+t=UMwHJQz zbXriWh3hHbyLXFE7QfuJ=gs83>)w3%toh^mv8uSm#RhwS6hD0H6lrvu@rsgO)rZx^ ze^$@ER1>%`GwSHp%YT$V{G0c2pUeC5l@`uTmTb@2Z7tV*K4_=v< zHaC3Ilc$^WUY9Ptv-7>|mrdKwJack#A5!eOlP@b>p8PwyEb76WImt_ltvJ>9-`B0#ZX1zW;U2_msjWNJ z?PuQoy>+Qew{F_^w4Uux$mK1&rElcy(SDe%Zy_?xnDxq$->L74_P07djPD9~@lVI9 zt^dJ#Ue~e@d;AN;J|zh}n4^4W;z=$eOVQ4Uz2S$8E0T{yh3#K@uqt(u_~m7(w^euk z?Aa}o*pTBsfzRT*<>epRtA7|fUHQtnwbxK@amJ}bOP;fDRQXgmIoifl<8Ae?-P%9z zJ)bMXzs=KgyYznso1M!~-_i?qH*fo5` zo8MYT?>|*x%g=J3m$?`rd|pd1h7Fbl$yJ zI6KqitDN6Q*71BiH+%UX<100`rHT2fXQrRkF=u5+=~*>*=ljojHoq=@t=QrDy4LFS zyZcY<-@MVay0Ylb+I90Tu8zDv*REFh>aFiT?_B<1el+t-AD-rJ?$I?wdOv-V}L zIag#B#NLTjjJSJT^PM*T!FeXlhwlsPmVVjZlwENxWSXX6WNf4#yIt>=kLTrPu3GNI zmF>QK&Xzw_KV@#*+0JicGJVVBqRjaDkE33$nH94;&g=GW(JlIdng7H;>KGsYu>NpW z?E%H4xq4qY59T!Y_7=arQ?~B>@%@7NTfL85+4`S>IYZotVTrZsoe1WIx27wE%dV-| zckcDEiLajBQ{;KW}+-%YWL*r7HJBrro-G>vo;ykBx=vUR+yQ|KL9Zf84FxM}$Np z^d52T-Ra%nf8|QhpS1abA9|z=J}hs4e(CMMC!C_sME*1E(=)0U4#@te{o%}i23`|c zt>eC3_kLYFXR>n!|15VdBmc+YDc5ZTOo?oE476dH;&8pDtcE zE!-_@cF>gYytJRu`}co*vHjiG_r+)R_xLWz68|KzPvC|4B?alb`lg2c$=!3pLq9Bk z#5a4vt8n3$_I!UV7vDX8q;>JWT^7ncKc`#Be*DjHeYHJTjr+sB=I$SD*KJ&S*k(JM z*~Z!IMTRW)+bn!){nz?`SRM7Db$*xrx4#f) z3gruLifiDjdh^@w{^6zS{dPK$6-`gyZLR05NDi2=PI6-*2j7nRi zvuM75*WaiJ86h5(hri@@dn(`ID(}m$k+koAyz^p7v^KB(d7h2VLd!1jZ&(-c@WqOw zTi)M#e?Inn*uJ>uQA-qqPG+8YZY#Wf_s7@IFZ=$^ubBU6>#^mFB5q~<@7PtM9H)e@tD@ zFLLu$!4Lhz^|@_NQ~Mrx*O_gwE#sbJ{(E`z968>sitUe*;B?o^Ai(YF(@2elAxo z2-_aC*(NZFk&%yFD)W!|VRxKf|M>m-ke5T`A#bsVKVlb#0WST41%I z;ZBy`^+h4+`Eh${v-nxE_HoPena<|T_iXweJUPJVmZwphpxRLx<_k}@Kg+z&`6qYb zkD&hyfs<;DZaqKOaa?LwkGjMO(V~T()^6XwPMhC(+FK`7X=zw^cXjbe%PniGcW&8R zQkA>WcK=b=5C0julCMracu!`_{ySbV=C`HifA>9i|I+4~$dC5^ALW*Oeig^{;ojmx z>p$n8#k=pA{9?NOsm-}IjtT!61h<^^%g(OMRoWxuFVgVV@IQmZ<9(M3Z(E!#4bI-j z)cq)S-@?>~zqM^;?4E6HQgzKKk>OweJXpq7<7lk)w>|s*o?VrCYHwB7T=x@Oo)t~b z&G;$4KfS#6>b5I3wI5Tz-q*{mK6p=Vw^pNgN%;f@_WVf?!sqhlJMHd^K4Hi6LfG-- z=eoNqHS!DWE}wrG8-8?cwd2*TH`On#Ro=Eaoi$ljByHDy!HUZVh5o2tHj&kKYr7xN z$S|#7K|1rbb@NpYx7AZJlqncA@@}XztFE)6s7= z?zZmOI+uH~({bJj947En3$Zb>hOsed;eKR2;h=)_-uHc;7pJiGL`t?|68 zYFj_bd(S??SzYUOeOaBf)x0lSQIjQs*XhI(>b- z{nCayrTZDZkBs%EWFg^WFI*9#;T0HG_O<-${q2vRRDC)f%T=o7 zxA@t`&zd2duj)vtq$NgQ?tS-9m|FFFE{iy{3V%odw*mK;A{jcoP=5;?5 zl{QgT&|OidZlUKvew7rqr!yg7Ca0m zx#zB`cw;{|x1v4fgLjSfhRv7PG-Y)yx#Q!1&(wIar`qE3&sBfVRMaf>Dx4bjc+ihh zE_*+o-}TK-anGdB;UDVTN;zX{-p;;J{6qDG==`PGw{({u|(sWZe%{Q=g)lmh~t*O-QTsB&rW0(lu(zna9I3dWki*)x%S`p@w#WV z5=63smwRqq`sTTQarpa8`@`YuS1x|Izw^T3htX%n4j-(O?z&XH*k;>n*(a@cR;_!i zxbw~)4T+b>sxR9}ek|hW$ujp}R^fg)D)q>TFsGB1nyEG=lb$^Ou=1Z&#pHvx;#*9! zYn^@i9tZ3^KUMQp+lD=yk7Aj9K8CH<+qmRb)->^|>Vx01XB|U?{jy(tiBb0R69CfD)QAgJDv|W zt~{PPOS&OHVzsEkgtq6I59TfEm;LeAGHPLvtbabsY(HBoZTW?3yKUW6=Yw*J zAD&Hqd}1qiuin))i;M23hj1;w&HO@3ziXcQhHIuT^S7+dcpGv;PUEU0m*a`YdsW-p zO@jRHuGimRw0wF%NY=TfVNb3fS+4i8=;o>S`*!8@mAwwW_%@gI%6|q{6OKn((&|B1 zHaEZhw&wbB*N?YnwN`{Q?<(In>(trOsBQ0m)Un&e z9BFg)FK+%8ulGiv z{{C;b_t#d|SpVo2oBqhNRG0feo$S_K0!Ahe;_lR}adSJqQ_Fb!`Z%rqhxU3OD7$60 ztH$%;Z(XlnX-d~T7lj-0E?(xouHNe6kK)IB*$>;_7C5;y>Rg`kr-yf%1$hb^Z!Ig) zIC@KbfAwCw=ikNMbwU@PkBWQxZql6T*44XDl||*hOtCxuXmMtpQGejp5Bcp$S0y_= z_v}8V^3}q*c>DFOsXx9yVv$<=WV_Y)8@26PGpipL(#Efq%uFkbk1pN9L(tT=%DvZ&^-|w!M8t3lC3Kh>lI->BaA} zPrtwakMpX|ZvKvMr*C=cxBAcBnrnO8GW+x8j~1`b2D@$97Cn1@(=3)k19tVmE1TGN z{0?(}9JiSLX!q&)EUrtAK6uOUQu(=u-T5-BzTMz>>;E|Un3a4-p35x1`Mgt{4Ccio z_f5^*Q~2=xkC0pO?F%kF==yX|Rp<`mXTt+B*RC#>+OT)-yI*IQ?aOyQf4ZWcv*}3D z%2Q`ux1O2YGWF}8D8IW?Z|$2Ev-zQYckzu3@n3P1K|Px2TRt~-bSCbeT==@_ZQ+E< zH(C8n`_$(uAK6~MOTO`seQvet>f5J{x^MbVJ0i3+>PhR#xV;stcky@sQP2KxELP)X zq1kek+5aw8HNK3j=dg)im?1T9x8CyQuC?D*i0U5xq?|unhkd>Osg1oHv0F=1??qMS zm0dlpVR6W4%95wL;nv^ZY^geTdfTp-%Uyhz{PAczd_1hG$Bym88>=~aZ$+NOop96$ znJ69eHcwja=J~9(kKao;R_lCzb)V0K`=*-8#C`vio_sqL^KpLG`HMAy%QN@cw@1u6 zXPMOcy)w_@Se5*x>5ty`toakV+P6GETXfgyOBTl%{%9WNmp<Y;4Ri;Q@PSOTFNsR?0WQ=<&UlS;E`icyA{ckx{lQb&GKH`tw$eJJ0W29;UV4{rlPbxu$6qe6j~0 zM0pi?-n@Cz_2BQ*^Y3QbnrzyAy_)B8ovH5jR+SHb3Zr->-OJikIP^C z{3!is^U~_<)9dXuf)8&;uT0`p>DoT|U0lWCI}`T$`@ama5nlbn`k&~t)yZpLgl)gI zW%`r5-&W10Ox8&D- zpEkc!r08joR%z&!kbn^|1&pW)Vg-WvOAleLF_-f9w0 zej)b!XDB~c#dXgQ*Y>k56hCyH|HXIif9oE3_qqk}IUc*d^Y-oiOQSYlf3wa`H8X0; z#>3w%)=$drxLLH8!+wun`?T0owkMvHu9cU{-Y2{7?{0V`Q@~&;y4B)h zt9-hK+5Jq<=%>}S&qROJ^{LD1_+)QcaH%`*<(I;uXV3Sof4FITY~;$v>pRb{y<4A^ zJ&)spzRZJ}UU7#TtRLz*tSpW1xtL`qx#iOG5BJ;DH*Jr<>##9a?fws`JMZj!!+#up z^q%*1lKdNAGi{AY0v!MzgME8$ z&U+QLhhf$`Tb3|z-urGDH{x2+8!Uo7A~kykG8q4=Q(pqUexIyu8(y2{Xc%awsdWT?$?Q%CW;AF zeCF1>c6`I#pBKMYY`eYd@}4b!N`+5<*tnd-^_1_)Sk3+Q?rV4My=`lH-QQ?^&z{7^ z_wHE5)tG(w`)8A(R=3(hY0K9KqUS%2G|1i+*Ib`pYk%-Q|BWeiYQO6is-5XuT6eXl zHoMZsb($C48d)LgpJ-IG($)tBB`;2}pUGaKW?DlWRo4!cz zQ0P$cO5W3+^{Zw(!~A2bGygLP=RN-*yRMbJ@eBW(>ay~#8{B6!%XIu_ew%w-b@R#h zA$y7+@3u`pB&9k#^Mhk~cCt*k(2~TOmrT89kIT%NXR*4;YL6a7)XAai>E)JX>Vd7doE|Ds}K(q;E* z@wZj&Ym}S(Xv&p0^B%o=eBw7VgGW!l@fn4xIm@4DO>f+jWyAki{OY2uJzj^iW(u!= z{^Q@)o543uaZO3O99I5(@_&Yt`FX$P*c|$!ec5aC3GOC_uMF;-7nhC|b2wu!!0Z2bZSbM%cADZBrf;&-=F9JEOdrnP?VWO)M{9cF zTe;cOo~wUc`eWf^d)};Hrmg$>mpP{;G^n(?>(%-uX6{q`@Vmx*%VqvHlar+ps%5o4 zx3psn?s+k*nJ0#4FxxO_y7PNof@Hwhm|a>+wMwL;%+oEaXD_?1Gw*eD<*zxvvUa&` zEVsV#N9x1hm;G`nP5&7J9VZ$8XRwd33AHTk<6biKq_=@x zY4`iq{|tgA_xUoSw$8a#yZ6ZTRUw{AO##BUHvN-(ZRPl5s@T%i$3JIxgsX znCk<1*&9Eik7U}-|8V~BF4uR??&@=Ei+A*V%bv7TZtB*@_vQXGWZ(6yU0Y*+L4WCt zr?dZBDc%1dvh$zQ#`!T9*VdHtE&Nt8>7wfSX;q>pEdFZ!XE^3B`O;2pe|E3kA#RJC zOdXFUWVL5r4pmul`P!|x_}X{XC7*oM_*%WR*39af6!dKCv|iVv*4Ep;d1kI#u5@c& zZ`#J#yMM$!{1Hfv*nR(%?w0hG{##T2a;y)!`cL_E`NQmJ%{`J2U+OG~zkBqX_l|A< z84esh_v}yhi8W=l)vPgEwEl+p)4FZ0pr~ z%X#fqFUc}DI-ma`|M2$&o;~~Xt|SLl{%2UeMsDuvl|Mp13Y|ZEIgVHRfSk<50Y-W`26&KSOrm^Xo6e z>IAdwIQw$L-XEFvuclv8fT6JM?Z4Vrua26YTsw8^vw8jJqiat*JMiI|ka5JiOiS-s zA9wAU>>Y7)rEdK!zn5me#J2c%XD-bCE`DvF*oU)A&zx|axnS4iiubMAlh_}|oZI-3 z+ilO)#k*!7m?yP!{<$zA&iw1o&PxOqH=oZku?;^w?Y^+ix>8@O`vDif@7S?*mcdJ{ zx2ldT^%a_bG;5q!|46f!I$pax>ZkDcR`%(9dLy1#JV!h&xee+ch*mthC zs15eq`&mEnhv5Q$PW#t=3s)-Cu`5WgbKkM<^ke?sE%AaUg6+JeR5i=`!ajvK*Xm`xZ zPur_^pWOQFO6cA1Dj(91-YnVAfA{4r`(_hvYtJhx7r3iWS}@e?p7mhrf#XcGAIkSA zJMG)s@AYAR+naZKA!`<&+C6oSeEJTHKU)4Q74r{Xv**`;v+m24*&%Z`%RKosRs5iD z{lQt~UHb3#gl6Tf^+`X~zpDLB*_U%h#u2Bc2aj zZoW}uox*%;?#JS&3+uj~)T^=0n|AHh!-qc1Tbd^xd~nsBpHpMCZB?=N`#X;x+8j-< z;M#F(Rmih>`@YP|_I7)h<@f4W$@`V%$L+;*{cHxJx!V_8kAFXU?D?-bldo;6(|EOyb;rIof9@Z3hrPGo zSn-laYxk~n3z=tI_LM$e&-bd1|8mJ)YwxCO(HYxLD)ptM zh%DCnoVj$ADDh)6*6h(OTzKbvcrQP7)t@6D!u3%~BW&2{OIcDC7%xov~unSK;; zf0?l*oG(9~&r!bM&Rg|)ZA(7xKhp7)*WuNyoIjF*9dwt9P0Pu~2c zPrtvb5;*-LWOekUCA*?(-uv#o{yuyC(|t$Ji`K;Ny1Hd{bZqn?Dc+-7SFv>Rm``M3 z-WK*i_{SBi`^T1C-D8`%EcQqKVRN&xlO2hiWwYIXpDv#Ke^nCp5IGNoa*!pE|*>+q{aF1U7e)EE92`Y(_Y0N4ehj_kPoLto>H`({p z`(=Gmf8Q_cjoD>5N72hq>s;KIrSI~~-<_|l+x69opS>nx-t|M9i1BehpR<*O6MtOynCW&x3ci%fA+QhXW*)d-*Umm&otKf zP@UwaeYc#>xjxw``!9T__Py0VRzI5Cws~EB<|{eg4||{9_F4bj_}($|l!U3#b4rhA zUH(zL?uWF`71OELOtQ0AXD-ZG(6ZnLqugAMC)bses~^73m%nkBTO#T5rJ_r&LaaPH zYzn|O{&yxU##Agd+OEgldCgx`}QB(FS5q8V$tvX z)*Ag9}y2du(+OP8rGzUiM`TJgy%bqCkm z&OF(&H@pXf=RRmMJbS+@=!ekvBkchn?sbdJW@&YwD!ggI0p`|o7mqKH`FwrWSMI&> zhql`@mtMK3Ycq50+O@2ITArUNo0Dt5aE)PbgjZHc^nMf5JzKv&nsq;V-CzEAqm#;= z%jNU#~^g+y&U}V zefPFFA$i_C*2xbGcO6{6F7R+;zxBzjcaJYKj9K2dPyFRP$q(1&R_$sr_AF({*VFWW z_u~Ld`r1-?u^PiAKdK+jZ_hEg>zgn5{#~9_h<#D8=nCy04E9!^*NeQUGugJSbG_WH zT+<5@de=TmM&zE?ocpT2rD?A_OJDYr4d?vlM^~SH|7`2);%_$k8+%eUo#$Gf)h~Pd zVoTo1W9LKOOr3P&(#0D62e$4Hr+-^|Y<+$DdRODc(b4C4au^TXkr1+wWJrErJWuQS zA$iUp`T^~sJFl1WYd+{VJJ|Ltjrq$T!+<|JKPvw-aH_YL#(F)E=#yA;Ftzt~Vt#_{ zuWS76Hu{BYe%!1vU6wsWOdJr`Aao9G@DG@p1D^;Hx}v;*Hk*qwiU7SA+*vt6X8d?b?*m71Q>WVa}uFGjBS2 z`>ub!a@9idpo*?3K~v{Ui4J@EJ-W>6dR*<@Y0v&M99?O{w<~u^oV1hs1eV|Dif%mH z`E!rqgWKy{ciC-~TUeUA?!;x?yL)%DcC=1dB)dd_?<)J#1E=M4m5*CJPRQ=OI{V?2UG;~v?FC}9P8*#w*!Xk4#epv( z=5MAuz1HExY&acHZrG#fQB1$zJ{zv$6a8{M{KDm!EFRdtbNiZSJKt z|9C!}|D!JOqN;3dvFhYI{a<#sOCRDdWk~+;Z))*l@ir5EzO1y{UVFR#Djn9D@iXF= z;GM9PeKKwS9Z_}dd>eFHuU^<1z3lX=%>^xeJ9M{{y}nYqD$eM`_Kq)mYcj3YEnOCK zLWSc}l;0=)D`KH%)7Gmj*Q}3vQF7(ULd}O6mv(PmGb!_r+2s6?%k|c~*Yd4CS|{?O zn!j<&++^>0k*3lo#G*UArw9r$GH1sX9?*<1~dgW!sE) zC}*6oEuP@+6;}N0S=sjLZ})5eGXz~(++H$Qqu4UL;?uJGW*dKm@2*}q?|s~xAN8pZ zv~Sk9=057SZlB;VIrGw?V+9-=?yY|WS5?e=Te^DwrkjUa z7oF5A=W{cjpSAYG`iEQYX-oAi4vY{w8F_b}!=eC&1IMqI*L|J)@IKp}YwcK0AGX z`gBk3-FLsg$yVn-oGssRD`)a;)ob&npW2kTZEnk3-FFU_&%eAfwNr}v!4@xm%*JxL zW9IVRizbL9Fce>2Ui|eBYjX4tp;!4*kuRdAZRDSIS?jDy{Hueq4#_7a-#1jeoptfY z-Unx`5AAA>xb=$Z{V7SIqw4VsE&morZhv=7%YW;?-@4zdLZVj(ZF#Ze?U_YyS8b`B zy(Q||?ef~I+s*#z-1;GP*>`jEVVzjkU7h90?~~_*nbdK7*n9ubS?eQ@V|OlQ8de|>4G*2OKlOK;_s zJuAyqP2K<8*ZcYSbMzAiqiQ}&VhyR~0iI{@kbc{;q{yq=|}1;c3mp% z^{dr7|7NYxU56j3sfnK&9OGw~7vBDq-)Hd9u^}ubal&J+eKVeCx!SNYBR#4I+>4Joxo>Wy_LFE1qs&f2Xf&<5I6B zAFjN(yXES1ZQsbKp#0G6e>z(qo#*|*WY71~YF~Hts@iqW&ROccN!`gWVk9CNYVAC) zsK`Iw@o35R><8Tbt=|GOU)683{M>1iwBY0PhAq0>2c=T)SnUa)E-uillJHr6<2tqT zht$3w7mfed?AS+a@xqtZ-xHuw>5e^RM~Xc;@79@6UV1pZ=?V7Av76zB!^I zE@KBd7k8x27jCCOFg#&TU0-P ze*5y1$;$TSL8XNfv%J3fPxo(kd0Mje%zuWXcW>JI{%7d4=Y6|Jf9Xx1UoGKAF^5!d z%bYoAeB*OSsXb?fQhoa^`;ISv!vnhm=5pQ5eDnJ0YGqONh3XcsI8GcqpmNo}priI<%69z{43+L zw*NNe`1~#7gI&&~O4H5{uRTAQEqV zes73AQYUw9{o{|d`(~@n_)#6Xi0=~-Faqx)3WSdSAD&>dw0zC58n^{ zW8Cxc%7(0a0tmdGuu2R@geRXgC!>jKmK8`T44UX)Kth=!4lG5A2 z*XR7VdR=r|vh?Tu%iCw}jo9h6OlYpiwu=@;OJ;qaHhu5hx&I#C7x|<6pqD>jPDOg) zzWv)Lj#;?Y2LSeWJOk^@9WhTZEZ^-Vr%} zQ~6`|Y?*ZuGjnxKE#7zZn9t}boKv!@YI&25|MDN~9@i%yk%~Rr`*+jnCnjq)yBwdp z)M-M+aZ8!!jeVJ3OD5M`%lgltyY0^7BMBR1uDm$cv{G!*^<7Jzu9>&zTIRlA8EZFh zc;7B3_91Tl!}G%Kt6zmrvud4vTy^#l2R(_}3&$;gw=4A29O$bQ`lI||eXIVT=t8-@ zt4_-<@$j;lp*!*Af!9andH%`7{g~`@rL%xk_#cd1U#t3D8 z$@+5H_o!-ieB3I(Z`ZS3*JsS~eczvBQq8?NpY`savO^CgG(*d|cRUenob%;v_@2ZM z?|m-(N$2a8+pYU1E!Ekw^!D}j459HH73|Sh{}ksgwp*J0?dgO`AGak3aUSG3P%ZNy z*iP-m^<8W`zFn7^_cLLN_UX9~ikm8)T)BJ9ut)XtUo)%PDe6JXl=kX%ezK0crB}Xo zZ+P{cyFd0nc*}e^Njuj(sP9ju*D+UHKC85aSN6&L$kT7T72fgiBkQ5KSSQIh$x{sa zm2IZ6JfBngHu9gw!y&~ny#8{E;7 zdwxXVzWFR=BUiDbHlN(jWK||Cmalfb9&g+4+-x+b&bx6Q+m^~@@88`s^Zc~F`r@lK zZ?<0gu2-@BP#n+Z57#<1zSNq;R*&cSLC_P`6KWky>gKXsw&%Hm| z&3&wT_DXcx<$HHFA6J^R_Vd$<6UXm#&T0G$%P|&XZa(ki`CN4Ahx-TbiOxUpYuVb>*$i14^`(OH z^?&SteLYv%#duT5pWFS z@???Y^?!8N_<;O}nXY`zX%{m64Wv`&K2M;HiJb&TJ@>B`8sPg!$Z*r~5SB48mO?u|- z^5%=L+Plg9#@V~8UnVd3aWwlucZS0D4~Hcc1T<=I{J!xv^7D)Ny#0sXDt)_j@1yCn z?%Z1^jaNObi)rQUkx7wz@Z?k0^rQUkK^4J4zmR+>-*NMOQ$8-Hpc76V%gF039 zH*Q{vc%t1Y+9uxD@_b#Drp%T7{B?4fbqXKKwy(SUW74Bj-qOt?VGA#R-@|s|)N^?= zt8c6B^V!MA{#brg_+?eaCClC$@`9JuPgc9s)^^Br_M;f@;S6lKki3aZC3h)1+JU< zcd695F}}z$ey}?HM{nZ8+ixS+Tzd8VP21x_MU|XYa*VHz@H-X!^ z<;bo3Z;Ax^fAW_IC^*o=P@dc)Ki%@l)&0$3_gJ@n6#cVLx%U=pPe((MU*YlK*Z(Tk z$}%62^7xVT>(8xAwTml5x9NWtyl#4~M*l~dP39xrsJo?`mpi92ou2f{JiT0|dEV5l zqLpgvm+sA9AM01Y`trd`Jy(RM-kR(`_2{R+(@$^mFPVG0>V9Z^=@{u}0;YN~C#*l@@A`ULmAPLl!ydgku_ z&)}c*(Kq1RjX$9lD_x5tUrj0T-G1uw^xb#&>z2Oxr}=6h=WN%F?T5GR^HyQ-i+Em~ zJUQZ+^80nBAv>pi zGFH1XVX|E1@g0)KABNT_et72_{qXMjF8i(iHx}jVDo#Cga)QDA@)dXZ_+^qCgE`lE zTI9dXn`>%UtoY~-yU?Sl8m_nId*1vU`?BoH+;!JxnU-Gqw)ev!eTLf=&SABYo>%(n z&TePm^L&1NZQ>u>i+jY^|M>Ok{?QK{ra^*AKDxFJJxRf z&#)=`Woq#bY5Q$3ot6oW56caz&)A(6(7wSLeRJ`?CCCo%{#O zA8p&FUy?AHlH~nP@5bBH>6d?A^FOLlW1ahm?cbUHw`KId+gOa6?aWs7V`N~ zcUGUfvQF)*gsF>zg8saJk=rrleK4m}-?k`qx#(C^ZIi7p*QYP9wePHx_))(6)wh=q zJJ&7QTGE^HIZv`_Ub*1pdBv~$*bL8=)~Vh6A$I=ot(rL52`3e|%V*r}VLP6mb?nFf z2Oc)+_BSpEN6%zQ+;d{d33j=!?4A3hV_xnPy!gkZ#$V>!uDM&vIkS@3BCbx6G34#} z{POr-wKe$xeWuD1Gd-VG3D?C*g=k)wpBGY`#@NBs8 zoLTw)hp)c=o4IiIQW;YXF9Scnms@U4%G58@b+oQry*7UDZp919AC7JP=*TW>**yF%Xmoz?Yy>Ycss zw)ftN&U$}$)7CE=gC9Kaw9$T8yh?BJGWUv0i*@1>bvJe#bE}&=|6#88;qrQsoM+c_ zU2bWLGd&Z$IOWho$G5$=t1j;o|G{+p*sX1Avvq$(IVZ}`pQ(CFTA_z0;XecaI;+B? z8Go#Q6felyXRvqMzN^t0RDubaN@SAEpHx2yc7ESM4!9CNK` zm*=T#VcGi+m%U%5^`oLf)=uTH?%f{4mzs*X6O~pT|Ie_x|Jcf!xV<0V{JL^}Vf2E{ zLTp{;(rt_{YO|J}Z~v0HPx0k0o9UNsN8XKFyJot;V-1-%;m>=R9PJK#sFI$i{UNP+ z;g4&wX1aNg{#{HDHTF2=D0x1?Rx4@IlyvofwN>|%t2V9Gnp$vW!L(^rx6Ja)YW8d^ z`ctyCH@;&Q|6y-ku|xHID(9;%vhUQlo_hbv!}0|FoTM#&n;&GmtD1*-c~f?7%`?jTR5oq4-nmoPUKt;Z|Il`? zBK*j;eF~QzO?z^dXIANlqwtSH)B`DHXDvF6g~e za<2a5k`MKVZS5XEy!yN|Z|juLEG@db?IfCCurFVm_{aK#Or7rat-X5pV`I&tz14Pi z*DE&7U3(?r!KT6qeiiR~_0Q{teA#~TpZ(Q7Rr%FHq3Nt=Zu>6JbiMV`_0!A6+ooUh zjStWKQk~D6HDAQ!wXg3qTcyak>A4FYnr)P=J+QoD^Wk}{8$YfIn-w^9%R&q3B{OeK zW#8v{*8bt~!>?oGk9#i5s`_yZGU~ zR=jFLrl$U1+SL0O$gZCGqjBtLP%RllhUXgjd;8fJvHFHBwe(In4U7KmAZG%mL zyJdazK8bz%KYYp;J^P3;S4L=)bWHC##>7v*iWtw^9gM5G z$%f^~+_`SsKa(T8S@ynUg!D|WGQyd z$tWr#i8|&NB&DtGP}t@#ap1x8=6iFZ zr);Y)U)ov~5w+#9+tiy1euCCss z+q>m)&dTi;sR<79=85yC6rU6=ez^W{KmU(ex5KOVmVUXqt;ZxNUoLs-d7qx*$rF33 z3k>xe_DRl-KX|KePpQVEuG^OG(|Hw79%M+~#{Mv39?yqko7YuLdhc|hw3}PqyKJX! zy|KHXtAYW~s^evm1%~HsdWx5Cne#m5KZEz5b5b*SRBcrDZS=H$sk`LStzBMb-l4bN zz5BlJVny`ff8zcfx9VoDzZ2`fWY0Ra>F2dxF-_tNmwee%{X3{){o#2Mm-hs1+hw=9 zzB2VW!=~6>hT3yJZw)DtUmN+My~XbCAv@F@j^!hZ6%p}hA)4rLUv6m>zexK&(}Y^8-At<^Glu+5fS=6C9YHZ*xOsL zXP?~mc9WHUmz8=`$yu&LwrnqAb{~+cJ-}mL6ULP(&!6%meCfT~X^xMKQoI*!7h<`! z?o^B38>SFV^_?nL<_qnU-QK3Kt@LAy)RN+3DxV&2zm?4X!#mGXq5QzFuzlSR@_C&< ztSp^9H&yM5_v1Hj*a~024Z6R%XG+|@SiA2#FLGr|hD~{O`Fqf&qRr28x2#(%-DX>x1aIW%cvu_zNoHS68767>~Xo{kL0aMKf-Pw+O_@2Yj4>ajf?BVO6DFb*HbEU zT2f-&Ao+%Kd5!f4(e|zfA9c>I-!|!1jHZgRLg&oy3AxJZtkr_oWkT<_++(`*b-wW3 z=vPrcws+lQo~d$x@9^c+L1o{T;vJdUYQk&n&K+w$@0F?eoTnPX>$%bL3{ezO=gH_rb7R;vIg|muDB>-E>AU zy)4M;>jSQkx9_e@+4WER{KkEXSG(7?9ljK$9cis?7h9P#dGhV*_nXZBss9i^SS7J# zzSDL6e3uQYy@gNk6mGjCQ@DG*&Afeg!p^Nue;_U2R#o+~@9e6#e}5!T(As~*pYi2A z`489T7nm;DH|rV0JJC-8zoedBe|T=O`r%mnqpu%vOuF`VX-~9O`vj4R6XrA-@ZFp7 zC)4_h|J+;m+itBl=-+(s)cmUt&pfR*xm1+7`&hX5-A`drO7ENhSU<3Jet2)?s;qS{ z*E-f*xa}^puIplM*c}H8b)Ca6SaWJDFW9jEXW*z?Te~u5##d4GHy58<{+b+^QO~E7 z^ds$`^6V(LsZSK5#ee=PeJuYtqMpBo?Vomktl2+}ZqHam6j<^0%TvBoFzF*&`>bq9f6L&od|M?`K_?&?~gXM9{ zWq-^+)J|Lc_(#cG@7UkAyP8yI=Uu4$bKF0w|54w>#V@OVM@Pr|>aGc9xO}kbsqx7G zKjXfc3(v*9N!GRgGjIO&`d!oH=G3mOx)N@+`)S$Mozu2^uKu!p+O_-TkG(65&k9x~ z^53jk!1sBQpXJ)uyvm0RYdAm3KATuxb3Oc9RmrZUyH6~WP>r0@+TD9<$+QzHzms;< zci!iJ@ZosJZ2#sX%Y(ODyX34e;yhM#xcUBu{|xf(`RyNm1V4!HD1X&mQEDBnDa}8v zKlOluOo83^K1E$?OfyZAxmgUU;Lal+oQqjw=Dgjn^$Mw|DU01<-1R>zPw!# z=qkGKgh-$(0}PAiyZsLTwsglP$sPI~|CV>H4BN7No~;}Ewy@0R-o~ouw{{f-EDaX) z6Wzylsc!o94>IW%rdstvx34dMRDJ!3uk_Jj^~BA)ccvbPpZD& z=~7AFacJAO1q^jNS6!+IKkk0uV|Mw(lWbEJmDrMZ2;R1}{Hy(ZbC+c)r`J3_&s$5q zx7>~wsmy(v{p)@47n#MKVcwiq&pp?$+$-E&b1m-Irki(`$_!}BtCD(nNV z+t~8o`f}R)aBjh((%#8Wc%+{x7(ACLKJnmlmmK2-8}~=@lCH@qV%nb%^&Z%8&hbfs z1^b-uYuC4h)tOu=;f?mc7#5r=vdnw$a_!w&pMNH8+GF{jfzxmHqn)#zw(s1%zfWy? z>L#%XtG*uU^L)PG$+zcSk0x)KQyKd9``hil`)&Q#9y(>Z;mXFW)l>9KChtjFt1kU_ z`KnJBBgJi^7i7!He~c-c{7Ud}g_@wrWG^ujmB%`NMIDd%Cr%EjiF|loe%UsY+G20B zTip{@%S<;sIn9`JZPSLZ$T z595V?WO3w{re`eaGjMS&Y(37v^YN(f>KFBbZ~jOxe`RiFSJq!DP@$)^%USZFJReuwzkY9GMY;ROvgMDW_gWv;%GVdV`#fXnx6Mjl55Bz8 zc#?TmJkM)8^Y+8#g)ghpRu(RQudTVQ=LCCPgr0|toX7F!Vf%#cR-Cj+E-Zfd+j{BV zX;&ZStYl9%P)T0@;aBLVPbbf1ntrM;oW4DHF^?^$srFrK&q$MZ&)%k&m)DwXUpaB< z3pPTe!F;tcjV|Y$17``TEk}k8AIDtM8k}TkOBL>zVDUM~Np@3K(D9 zZ_9KtTJ`Aa{&myzwt7XlMooT}AAQ&C_NFaUrgiGZuKnjWzpF%FK04E?^x5jH{WrH? zJ6V`nrWZQN<1RCkxb^XvqQ&#`vNQiMK8n?Tcz4>y>e8n-?=&U5)EUp2r>%ZO_{Z*l zf@|$~oiwN2x_47~yJz%-E(V6O7uF%-{}ethJ>U8^amQuTOp^x)I>d$oqGDx0P?&z3;q}Kf{ZCc2{ytHTUSIt9~gv z7xpx1rn1&-$2;W{IG!(fzC5nb|IjY~uCMyi(YGTHs#HyT#wFS;;Bh=ZX5PQ8>Wwwd zkJidv58Qs~;f{!BMd~*W&ts3voG12CzT?Y!5xeEfqhd{;M4ad>-*Mhaq^NH3r7hEU ztL+T^_4eBBtm2^XrJU!ApYGqaR$E;z`?Fp2){<>E)qEfG${&%E@0g^$d&h!3kxbTp zzePFUMbF`RJnwE6zx0pn<5p>lb^ANk@a{b|cg0$xozrc(9?apJU(G)2{73uF^?#x( zzUQg!tn?Nub-JmLXCK^G7`@NvqkNaCu9L2RXj8I+;`S4V|72$SX+{=T-p;r6p0e`M zbIX;dZ$`#XpSkST)~lDlhy8xN+$mn{hx5^0ZoR36tN$}BUNT{|v)tu|9S`{P4=u{) zs(AJKK-oUknQ#6xY*J%Qp8S@lQpVtzfq^6YysPp(|CC}?f>*ejd>j&jDF4oB|TlZZ}*Xom~V~=%j6J|a7DY1zoV7HLv1HS5d#VcLuy)}_* zeyk3go4!=haG?vdu^2gx($4a6Ga9by&%I_KK~47TkP_|iHz-;ak9^v^19y>p@Z{8FB zh+p8I-F&0l=UI0e392g;c&IN=ylmS4;B57gsM2NYW~BuG41X&0)QznyrKhR>wyAon zX})CC-TQX!%d?Dk#@|<6lIDKU;`i!FwI469_u6^%vqfb5y6e|Bp7ruFc^p+db#l%0 zphD01$c)*qubp=C{IXuizIW}HwMxN-D`UKpTy@+$SmwEJFm(_8aJ(n=deWt@tK~P| z_q6C-I4j_cRmxLOxxN1xj?I7g)5g8>akTc0EvNTykGjM8*i&%gG#ACG8xKC*P|v?M z{^PNokAfe0ynjFO?9UnHKetbAu>8KVyI_mx&V6z9om)MQ3%=F9QXG=Meede;p>MAK ztT%gmw}uW8;16t@&?XIeI;CvDuPEJ7;xo-kkYqWzH|%>UZjg*Rxe@ zj=o%48+6L7?Gl5{xA2n+>Fe{Jt@;t{@p0|@4*in(+()i|&t{yv(9-)!lAYwfx5%JS_KCKl)>R5Bd1`*xx5O6iIk{?$KL9X@hhs&8s`spw&c z4=22)DtfXs@!PKUT(;z?$=ZDVsaxM9b9I$0cIUM$zVDtH8*BYJGxyu3oB2E0dY4rk z+>@Qj6Sh`tm73NH71k*an(AVnuhaU^a3t6I$Sk{!bF&^U-qm|>!UoIu;On#2CqLpB z%-mU+F_W_GF zw`yzGtWEZs`r_fjpy@Vq=6-(`ToiWeq;~nwoV<$D2jwg;m)!RL&md4cPeX6fXC-Ln8fxoctg9 z{jP=`J`!iqesIw#TkY^#)noq|jI`4$D!-<(I)1ac@;cB|WX)ddI=6ezgci+>^q%D% z_VZTe>D249ZfSqr*Yv~O@8jL8(^ls{td4yDcFhFakDin4H6!LOd7n6;pep4<5xZpb zfjWtg@f|fGFP9&9xx!)1VfMlRN1h@+D zPrK;foy${G-kwc8`)p6gI)#sR{f{|vOTJ}()qE!4E-^8%dve2qjm#<^uU}gDabEjl zkJ9}cE4sZWUHdqPS!T1gkf%&d%de{<*GqGQk8HEryTtf(!F2CJ?p0q?a&MmZTiw5Y zZ_ba?N95G@Tvxbas*#$#S!v>q&%157Oq;w;&;IrKPVRA0t*Mqz-s>X^Jvzy5Th_YpbK$-nom=JU4ih-z<6xVnGS^VzQUI^{|gXDVeKST|27 z;+J(?_T&EXs{affOQU7OtoLt?KC~6 zo-G@j8;ssWeE-jo)feigd$KD2>y_nk5w|Y(O7*JDx7Rn_lJ9X(KQ{Mr^e@prlBtj7 z-*|tyJjpTfnb_P3lXf1Ew5bl>!}~B^x?*zBm4zREHk{9D@}BU?sG;5F3G>U#Kg;(& ztnd8Q-(I6!zTjt_k9f;Fy&3o1W90rbv?ly8KVo&qPIc#=3t?&VveTNv`ZpPCTK;F) z=l(QgvAVjttnT{Ln{!TuYH9>8bX)vv@8Z>aXI(w1GAlbef7#mUHR=!kGe~6ZGmiFV z>aS-=JEO9Zokeaz+1b#Kxzl#%KC;No%QKIe-P$wFLaVqxu5N0!)5rYIJ*JN$^>P(= z{*F1YF45^tZH3G=-FvIoR7{WBzI*HTS(Qs?*yJ}c3*2>l-~95tsHRugjTrDI{J#M}dA z53W}KwLdOZ-?sM2-fh#QB`25IC8qKo&olgW#mg&j)23L{*LOZ|ym^jUc|H4#>sdwd z*&&b1-yN;J_ifkxo#8GY_U&Jlv1{wU?pkK&WoM;gjvA(FZDP|p(BOE|P2!u%ys4W% zOg=DA`J?EwRo|uuIBjs8nZn=X@U%gFTjAH^Ibrh6dZnM2zbdPW5i+_XTD?4|Y{KrQ z=66QN7ubBhwYI{mUh1&j>imVbVq!d5*s43$-VrzCd6%#^g1MpaT%?=j+SIZ;qI7Etw(eG~+^N&=(>*^rAB`9JK6&3-tk%ex)Nt~bx&rs($V!VqqYcXy$##By(Eae;7CHBg~Eex zYqPuK#gBgY?!SH3J?~mA)%?w?pXWtPOP)7pv+(h?&VR4uT#waH&kwFx+P7{gr?ti{ zKbwm|RX5%KR=?jY`yij8V%GNq*Y7DtH}cJ!B>QT8&%Bwh&pF7h);~~H-t(@;y*Bls zM(^7v0YA?Q`K(k{D>#y;kWe^z;+3kdwM!~yADvK96l-svy1YHv{Z5lupZbgw zO1r})g;UL*d{v*P^+xJ`hl#w@(Ulx=-dAc?I7Dtw-|))+@}Tp-$!E>x1Z{tq?DcM%oT*~ik~#CsuFRRbHf8GC{OHWjyC3~$;Hh!g*e8Dd z4e#DP7unm&XBeI0kY&I3{tjQ;uC?(8W?gIj@ZRr=o~fzWbd4yBz~izfmACo%27lbQ z{Bdrw!{!}VA5Be&XgZK`{;u5I)l=t(e{5U4@V48x@JlykPs%i;DTJ@ky;v`kzSVbb z#J-S8aout6KUyhW<64p$dMbG8`^8hQ-U{qpbJ_RU+gBMs+z-{6eN=0%FJ9!CZ`#`C zdUBGRzs|2@7CD1@`K+BE&L6DPyK1WIX)?1xz(wlego&3eWxhTC&u}%&hF!d`WIfCM zyOFLsQn6QB&fHXucr5d{uOUpny(aQet<&Xm zGq2~?@~k|3Gq|;CQ_cOfKWE*2LniIMy?mkgH}{U`AE!vUO*HbZFL`DXp0s=RIwQun zlYfNN8GTsaZDYOq@BHxWjQ5vZ8JRcp`CD3?_|qGH$+WjlUn1&N*|h1}wcMK*C?_-b zq_Z^N-E)JbJF8ob4Yj4sj8+~$WpU1a&zb5=vjf^TdX`+SKc0N_;XCoupU!yy zJ3skZc~Dk7*S^j;tCKe~zV7`kxu55c;-kHVrMAJozNJKe|uzV$S=wCcC4bHzl1m z+}=5-OvUWt@xW`VD#C-WFZ>vBZOvM}Yp-s~u-yvJpV8B9`TEo5l5fi%JyzFTtNZlR zw&lB)E%h=fc>DRYwzb#a$~kk_{8@WZ;N>p+Zqs_v=*Xq3*DX@xS-HQMjYV$ty!u1y zDsKCK)N5U%fBQLSxlDuoEU!1uSK3_uA}{=-+2dpVx1~$h9^C7^gC+Ltq{0KT^<3vZ z=67x7mwXizljObfS%Sn0b(Jp*H9eQ7roPN(^_r4#Xi3PEr@HH&EPFERrfPO{t@Q2} zu^;1FAD?*8_dND;+P1ck`#hVyIHpz$Hu>9DGHrQZqx)E6k9cbR3h}NZ$2T!KrYi6h z_}Nd*{Nw%6ynFqY(;iz-sDy6s(8)T?qJL?Vjq^wOxSb#VPH#75ooCW(fAL|7a)HXa z@GC+bCmuXn^ls4>vF_aMpRHsvAF7}2T=8?sTJ4=tXLoCCnR@SZyzQ}y=tFikALU#1 zN_FkL*)OkIW*8&B`(QhlpV#9XJUnxD%}G`X{}A3}6S?+P__SZf>;gykJ)G!yP`0{H z%bqu;V%=qj-DZWpygi?$)gD<<++h5xZmNCbpY%ul{L7Z=&CM+nICej?B4CFL!!+IP z77RR-DvoK#< zkKXw)b=vBs&PCtd+zdUsDo$-i_nt>fnGUmods`o``h>s4lFeJ?5xt5(1Cz5K$-kMq0##MjG6`R$flxbKcm z;F48d>k1qA{r$e0t$g4w`C^|$bI9(n?VEPRe#m!XPDx)^9}^-kP?K^`{rdd?k13~B z=B1rDzVQ5)wf>TSBCeaht)dbHAWxWyG>)w1FwFWDG_~W|4W{R4{Yx0 zujhY!-t|xN!~L#5j*o6`iDj#JawW=GY4N0mQ)CQvjC)ebEYCVVcrW&2^5I=`DOEo^LZvu z^74FROK&ev{(5J(xYf*3uHrper>EY&e{svZr^~}vZR^bVmbSmOPNrgh)W=UR%FV+j z#vbuDj5K1DeCKf7_U~%_M{JGN%d+?1eD?9l%rwDi?B$lnT>VQ|{MdK>=!$C}{MD8g z9kbnNe#T#YpY3bu$b1pgKjBqvv&(Y}&Y3Me^|L7NoI&UY_ebn&T`HGcdAFatD&oHJ z^bLm|X(T?@4B2`qEBtxb)zd#qz3x@NDxGKYBlJ-`?~kOzA=lphXL$V1_G7EE++yW9 zh3`X3`Z+3A2Yt|bz2@!Tsq*iVCpv0LRw&PR;`n|nOJAzu_%W;A-hK1eIj@+qtw$#* z;-ssDEWh*dy@oc$>oelG+YfzjdUosR+6bfKJBadP-qRySuJ}Dc2!5^sb4ud2F1h@y zz_apgUHgkIxg2hLp6lLMy)rAzzgF-4(~BA3Q?^%`?HBLW-BN4xN_j=>Io%1~dI!!G zH}1YNkKvt%?5p4h_2OqAcgJ#lT+sJ-IYaA&NgQ?$>Plzk)<5E`iA`L=&HZ$5)7$h8 ziBmf!auj&jS~CAEU7K4S`!T3u6R(@c(|;E#%ht)T=^XFd`#Eq;Nb=Hu(e*Po2dvlH zI^TY?Z)Ej<2C-SU?(@FA_OJP$Rz-T`hrPdV-H(&hd-$|5r~llVAM+nx?k?zTIhcklk^oUh26`>WYfR0Xr&7_Zo+6o3iekdD(kG<$o+}*-Lj` z*pu;(ZPOL~N#3;<%WjDDtZKZG+-JLT_odcZ;lFSFZWZS#tv(jCb?V!SmAg$-&s=+d zcDMSo({>CW(!0LKv%Zq*-Fu+hdrR_!^}UC$^an@CiGFzBwROMHos4}_6VrEp>N(SQ z)P0&o@&taT@cydXAGXNZHXrydF1F#^EX&;WO3xGRqt5>b)bFu>XufCi;R#;XS7%*3 zb@H5Ghx+{=SqhJys_(De{l%uoUMO|PtBD5^wePKo-FNA!r(It9=FR@OLY~|Y`5AxA zkNkKi%IS`?>?bkxLkG?y5>fp{khopnW@2{=7lO?Bh z*(UB%q`S?oIkOx3Sar20PI78IX>sy+P1S=izI`^HE3+I+ZMA+$KAEBHS}N@JWRlg& z!^!h@d|l3}X=KTu& zm2zt?o~1fTSy@z-P;%QSE_X``tkXnfbqIaL-)!hm7k*T%vkq0 ztjSfG>(v>4Ek}v->~jiy{xfjcNI&8id;Pub)?1w=O=6#o71(8jj4y9k{P5fK$GZLp ze@%M1;oPj0;w{_RSG_wBRPmpog#XZ{8nb`;o3G`)`66BUZrP_ZlR9LbS!9G9mHXz; z__})PoH;@9&+na2o;PWZX7F0eldqRe4=np$Icdx6yRTDMz3?r4_%uk@w5ANv&UhKRfyD(tB_3zfV`0zi_4RQH^Em z@B7;ysc84QS{OQIs>=K9lkwTxW^d~2udbSV{OEd)h!;||3;JXKU7VD`yfKoK!{cSl z8av*P&427RfArn*VXoTCC9Xyr!&oI&9y6ZjTvfK_yvWOYx|_ELuXcJV8MEx~!I{=F zg0b`4P4-K^lIMJ|qf@2bp<%v`;fd2iN4~!EwC~TGs&#SMQ)&BS$JOHJCTzar)F-yz zTx-j$nzeU#tEOjviC%u`_mn!J3hpCv3YWKbztB(G-gUR!ds|E%_x!lMzR53cvF%?` zaUnyB^-gYW(IkmUVG5S6dWQ?x<&}0mspqr4yvI<#S7Gzj%T8N%?cTa2_Iul%zejT( zOuTQA!#Mf)W!(=vb~?L07G+ua&b_dATjw1C%YYXl&-dR=d;EFz_C3$Fqo1zNR$l2_ zE%9*0XHB&=f1jS-Z*Hv*ZPAtRK(kyZfIZEqg=bHiZ|5Vx9;edb}d1_~rZXcY919>uMkP z78L)k>6pV=4oi(9PYauJyQ$&FX8mXAGCe4^dX;0rk+%sc4?ASOnCw&eF@M!-E8AtQ z<;E7<0%ZdE3g^xEdd|)8x=qNf;NAuM^^a`TiilcO(be}h^6tru%RfwZUppBeU7lK;YCmCJ5%_i9P*SsCNM{gkA_Ms`VN*-f>pz8_l8@?-H4tG?yAiG?yr7TeF9 zRFq`4+aG^z(;xXq^Mx|^$y_O!&5?KQ+_Pkp!-=7~4SRq6z2(oDEoZo``sEf~>!7)1 z&+0cFi)}b(_u|PvhQ})(ZJ85q+&X>U_4jw@e9>|fc^Fqbx$4th-zAea@9X+?KRtEP z-tF5LSGb2?`KRFg@T_q_pRUu()QGsW+Y%*iHP(Di6V@0pDoi}M=J$UF&WheW!E)WD zwsXF>70M|kE6G*9Vypl4)$f?U;43+`?Xzxs@2WmBy=cwEhZFbjZF|Sbl02u+Ds-*e z^CPp|I~4cq2>y0ZBb2f4?UCP&_m+FgEi^@~YS zRX1+^SpHD9{IIy4-|C{XWnJ=_3AMkj`!0NW&rqIuPjuy~o4anuJ1)1IX*oq?Cd-4J zF@Fv)9JXY>ZF-<$chpC}y+ysNGJnlFt-%=ejJ@A(&IZvp{`rso+CNa+n7nSWib2Fp zy?N4&o6iN@_|sZ>bJCN;ORnwtuzmV|**C?HpMCT*YMIsha%I#@&(F0}b@R4=vh%-o z>7l7+*aLn7Q=I{i26ca_!Imx>j4eR{FPT-SNjao4Sr(3CvxWzVCOd zNMMvqqN_*%BMe8?iSKSZd_=5#a;xD{wMP;uB^H0Pjkei{ZR>wDo3XC(?VdX)mM>%w z4h%f%xHInB%l)Tw{obtgeVnl>SF_md`mOI_`zLEot?kl^mvxM#MW5%gJS!{XT9{Dy6aB|1ABkfyL|?CDva{mZi(EJy7XY%Mya{? zXU%3mU;N~@*o6NKTih&PhrBnnXOVB4_EN;>*K3)x+U63+8MuD@vO9l2H~wDL{n{-z ze)k-2&ip7GcdPE~q2jQ>y;El8p86Eld-Z$O=JS7eKQae@SlYHM=iRct+d)d2JMH2g za30?*Q2dVJ%hC_xU8dIY^0zCxJ>93hI^l78YjN+3i~nQ{|Eyl}!M%4&H9vE96zjXm zEYtamRJZQ2xFgUPygbQx&iws-2AX!lKR$bY*tUAbojWf-#BTXG)lq{*&&^1CThNx- z-f_QP{;iaEo%Zy@p@f$Y7n{61?iaRb&d;iCw=ZscTe|7;!eHNzcaL>{WYVn<-0Eyl zbZS$BW8T)OAH9!tKAIc$=$~tsv2jZ40j5du0ugsA-W?8@b?;WR$?otSO(DE86Vty> zoZ!e}lox+&%bw!3Km2|l`5SX-VdCbAQZ@ZiH` zmld*4EGfFKWVmD9<1K|RcF4DSJ>6Us{`>16UajiTpt)8-ftS-3{S?}j8x^}t?cTER z!}2n(qxjpm_KN##pLpq)({=gXFUlI5>Kf#at*-Ds{%d>l*VlW!?#gj;y)D;1)b@Dt zg|zMe#DBbZyilT>bnCVE_MJQTu;}zHnDTv%J=2d}mtB9%PhWdFoA>G>&ae!XfP+^j zJScwgn_uSR%UN6BhwPdDd|}J1#Vvu$Rc>eIO8dQhxBjxryWh7L&dh(*>m2&=+T7JQ zk6jlJ`+hN2BlKLPjK%rCpJUmN%oog_)!rE%cJZ;)zECeyn|*{xNN(>Yocsd<#!77A$`meCqjWku7h3&9ZUT(OzjaHR+Y< zzRtT*7Xq)n-o4-1|B?Pt^N(@UQ*)IZnr;b7u`m>{hF_{vieG-1!$whtb#3m_sV5^o zIU7%V(*J$6^YJ+C4|Qu7M5s=0+p;_QhjO6qqv+*xwHX+6ew|dJYyrx2mzjb58 z?Hi42rs=BOe3LO{(V|O!@At>+b{)RBT5Cgbp_lolF8^t7Z&jT-y?g7uZ5lN;KRTCY z)bU?6Sy^(sa-H4}qZ2z*eub$Y-Y_8hUpC3(>4u%*lQffS*GS~Kv8;FA@^SLyd4`KW^yRbMuGr>T`Z^#d*=e=Z zydritlmc6>n$Z0)A}Z^nK9vkVB^%7hyJn-vVXHRR;*a|@7=G>>$a>u zwPm62TD_g~x-^ejW!%bNcGvt)`;mG<@$e6Nt&9IoQ|b2J)OEv3%{({2(r#<duE$G|I*if*0UcDM8s7j z9mu|LXV+ZEMZqc;3pdZ*lOVg-|L(cUhwCDXz2ZOoixyT5>)*K4?bP+Hmt(f=D*iFA zzjWVkkw2V|_a^&%=v)8rt(AJU_vytpx5ImHi^(B8q9e#NA-Bi8lEVEkPMZ^f6`l~Je&~592sEYLwJFn-4Jv-)Wc}ewg=l6BT zzCNrupC5PC>(b=>?d8j--JjSqWyQr7%`La5-Pu@kw{q>7ZM7-ym;RQy-~1=mZ06(H zzH#^L%^nzj3eGE+d2YWn_m9)Zx9?UyO1ZYxqGlya; zx*@U~?VTg+1x!ck6b1~zz2YmaQ)}MX6 zo=?6_Y!~mgsrj;ZYW5yrF0KxqGhI1w-`?tv0S#j*DR7r$@5b88Q;6q6%s zyGnJD@on{Mi$26&Z+>>M#yS5{teEu8v`LaCKbvPfX}w}mKa(SAiBZiOuP5n}YtJ|D zQ~c20_Epx+*V(J>rJT}))sxC5UwHDV@V)PfgDVM=~&zrgJ zR^I$?trHcyOu0A|z8tgW3VhO&^ydBT_g60M-@Z0%O|r$Ox94-qecfKgN>}U6{ z_al>e23_23n>`+PDM}bF6K6q)RfS^rUaA zzH;oW=jjixpKe?m9yDjA)70sys(Ie#?=#i!z0A6M>OTYbKE+pYlAEsUzDYKAUXdun zQJ!P*{Mqq>@V*=0*YdZ^3nzRywsh5L)j2}vOC_CD1H77F@OxeSAh!R(Y<;Fz1@|*w z>a8xg*_Z$B8v9}I`yBrn4prOC)4BX;|0TO~&rg)_EK6{3KEFWs=T)_()_Zk-)UgHk zta$h{In&bGG{4__*;?(JxodZQF)o=e<-Yun`{g}O6J3>~?-(yhNih~pV6&In`%(Gm zb*uLsZfi@El0T>NZgFp%)5BBsTqbzYl^Wf|$3NCRxcv676 zE4l3}_a5s^mF-bs=#-cCU+XvNX;)O)@2}?HUsgwLRoi+0mS<*O`03TV_b=UYXY%p= zqV^9}Km2W*m(*mkrNwPt1hdlWisWPe6t?{+`6t$-`DBC9mdAz-Y>($pd5}_SGx_>u z2G7UxA{FUjANKXFeE3(7H|gFbl|6g=ZnA7XwSqA%!P2Hqc6IQfebyho_8<1{74kLW z%wMYTcWGOsgTztG7qfc*R=?afzi^t=r#Z55p}8TUdvBkPwBEM<+nRM>H}*fY?=t@< z{o&riMOqw-_av#@+o95T^N;)UP&?5d&mKE|{BrB))Kz!=Rp(4-(caBC)6?RQebmMe zmycMnu3P$u!}PAu@sN%CHgYvpe4p_woRx#UCt;(FTxg~2S3Bv7+m0W;cfNoBe#;Gg zmWfk(QzW_PeT{Ou7Ipibkyk~lx}`c_?wZLfE@fBW&eq;7_N!?Xg#Ml66${ zl&88~s(Q3}pU#hS_m4`gJ^GZ@1y?=TVF)kuA85%dg$cSBMVp$FhBkG-toYJbN)eD35z+7Zh60V ze{hbg*N(2OiGG2B+x4wq%-wrecHX{d-P85L`;_nf*mmk#ba(8;!yGOt{oGsl__F@& z7y5E?pXBX|B5Cf_jB}5z8h37fAM_{eqj>ZCEvq$Z?3XWHKb0Y}^4z!MY8%vce{g+% z*jG$?F5jJswlk-n-P23X46nQ)qsRPEl;IA)fAK_(t?K%p_fK0NVRcd;&AL})npG{`w(O!w;px0h5;Kdui>x0S&TB0)ym$Vv ze@ECpp=)2cXRb+{<@s1+wNdSzz6DadKkPnI$9u^}d3AJ_R7~*w80IG@+-x>S*7MFj zxU2mLcmEIXgvc!$GnLn*F!3y$qImEN>waVZNApwm^B+1^_AMe?WvQlZ)#tnBOP8Ka z-MZ!4ul$e17f8^urT7 z)=qNxz{a?3LJ_}>+*HkDeum!u$FJNgT$ukyE(?F_r~*vs>YLlUQFLq zo@@T=KZE}VJLQfYiXU0COjlhEDD=`*U6NdO^}5-#?cR5Hm+Wl+u=r6-o#=;eYnOGb zeV%=1WxC@OxrV<*^-|Bj)JxpYoTvBi@}+fYU7ktPB$Yd7RGxTM)WW~Vh&kbVKviR` z`{BLC2e;j0zE-lg+GWcXeU)AM=_(hsE0r^zFj+m>ZueFEP;C4mEB~IfJ=aWLEZ=}~z0{U?6OunDcz5!K>c7xC%mshV!zr+L%Dw=bRAWykrWv-Tms zu;=OyA7c-$l`{>mzmE8)@G)oC{?4SUp+1w=p7L*vdD6zd;QQMB0u{|3{~20-oeti* zttawm%_I{SCZ6hjsn4%^iq;>u)A+Dvo>J52!@p$PCMQfLGY80 zdGqxT zm|r!y_VUX+*ALH+ZNC+McyGK*vw!5m{d+R!RNrnKBfB=`oa75ZRvE9Ha8P=htN(?c&vc#Mhqx;mD6llhgHErr){FQuCj|=UVt7dwIu)x!%!fo4VfI zKd|xGy4~Aq-%PNrs&iVIt*#k&`ntce<*m6KflD4eRr^x2*5CELZHa$&{vv}f>xJ&V zk{8%=H|nBX=eVbJJ~E|8Hh5xV0dH2m41|8dcOFp&v8a>n|vxm7`VLjVpi%}*KLG;(2n`u33=(w!ywu+04zbLDSFEb?JWw{wG^Z7dkCjbtqISZ0{uR zySe-8;=XR(`eomLhH};Hk4eAe+2pypTg6u0?y3F!I^2%C;--z|itKXUWyh;kzwUBd zxcE-8y!qL;bH09CZO>nmzBsdv^SX)mU8Q@G%jS4ymwDV-<$h+y@#J%!&&#Ys_qXmd z`f#qBZ$qiAk@U%R0c&&~zmt#Jxm7$vf8MuGH=Zw+yxujnQf=MeD^n`J`Gr6G6T5EO ztvTN&K9(?vmv>xqK2y^0S=n--)@GYkGSp*mgu)Y6Z38y|Ysq|5%By(l6gvhv}c?ut+mhT4ZVujSJB&W?NK`TE|sm)W!Ti|r}-r?P2l{+p?rJro3c zC+4y+Ub&WB6E&}%;o!r9i`*G~4h-q0^^g8D^p@xgaPUoCb}*@v!*^m&O5?TJ`W-f^ z#UEC?Z`gTpjmq`ha^tu+cW$UZRoJe$LEPe<-IPgTc~SrNH-@U)XZp?Mb~|ZpGOKNU z^ve9zTi37NK6CDe*~iW=$h@Z(v1akE*ifa;`Du?O`zvj}{eJvuZGL;akjZ=g=xl@Y z%cIYmzM8_TR5ah`>R#ic`-IvbHePa@DS1`$yY%Gia#PR!F|230mld_E;#S!~xc8#{xq-7E zo)^=b`BB~XdSYvuf!7(uW6n?gCEoY(KaBck`SJ1HAIIzkVk6hE_^8|p=AKpGY#Pt; zqRy`ES+1F6$%(o*>T~*wDs9=-Cx_Ij{g`&>_mSQeFUmgNW|^DX$i&8R>Sp|uCVqti zH%*mgkHH;!zfgk@YomhWF1|jqHG1`->-)XmblPdwcuzkTy!6N;)zTgX4h9LPttubC ztu6hq-TT9bjYoUeXg}TIllORC^|kn;ve}2D=65W;YLY8-+OMs$d`FvT>`lug51A*Q zvg?oS7bvj}J~%6HYU;A++qR&S;+geoeJx*$pRTPJDmZy)O>Da8si~7TJ-N8$Yt^?) zzxKWfjqeKh&v0ma|Dn^_d0jmbC%5FQ-?$OHV?syh61aUplu$26E z{>!(eKk6UZ^W3WN4!yiJpC{95>6c6MH^;_AxvOkYXXiSSQggKbanyXSKcx#RvT_6N zW`rxqfkBw*#ZkZcV#;clz>ax2EpVe*F32 zd3m#))ydMQ9JMB`(4HJ~{D{AZ<0Iar>}vu?Hl5tN&*9Xb@4*MvB z8Tc$j7EB3=_WOPNtG;m1(yFP+oCn<>KC9jv{B%=w_TFtKe{vt?a{XuU+-hat@@22W zafaS!n>Kp*Ebfb(!t;fF)~yfsJ8DGJKWy{0czNR2=6w$fUuf+G_j+3E76 ziwhf6mXwx#UFTK= z2AkC~<*)mv6o&keMIOZoZflmnQq4q37wIkLTvEJJk42VSm?4QMaNK4}X=v zjF!{>`1IP!#~P+*qprOB%+eZbz^8S-$#gzPro4db+j~=Ueiex+-4)Q9fBJ>C^&|dH zli&TK>y|E#a_E?@trK8=$0Fx#j^L+x?Gq20Y?-@g+Wc#Kdu@NoUE1?(&YG>BQ74z4 zSod?!@7$HukM1AIu!%MD+jb%PZ4c;<+6Jv-OFxR1`nS!}Z(p#XM{R!2#LA7wPYWza znHafWbnANdSKH^6x9>4u`cg25!96=?Vo%>6u2(77Y=ri6zkQp$z5Lqe-#71`7GgLc zb9u#e?X6#HtKL5G6B3opsP+qaEHbHY&-78Tj)4Nc|G;RQRYiF}J)x z%Iwm!Nw&v~Ztpo@e9SJyhHuI96|4UEyKMc+JFmZGy?!#KG5JtKb=|UcADUlR zXFh$s{O62grXNM#y?K0g)#g2K*4&D@R+YIc`p?UZdcnn){wekg+=)8!PGUo!>(8Rv z-h@ByA7@-QJ!u+|5^d?TD0Gt9&8HhISp+XM_f1{BiO+j5Z+~m#kBciR;$8<$|0lS@rrU>Kw|El&y6naF0(&&<1e_n9Fv$oH zVmFEvF!C#&^L5RWzqeQ1y}$d)k3RE9bMpCqi?(!4H@ax?M=UzhJTvR<+O@@VxBWP{ zD(a7w9B-mb*m8BA8A(RPKT_mR?flQcQ1LzRL*C-@HIarbaq3f_2_9rtmi&_){4l*| zO-XKU^0l=K_g{Rx%Y5R^Q(Xb)TjdfTt2A`>{JmG$XYmm(#XQ+#jNuy}RPB zWd%OFWcRAb+b`2z_2TM%@y7ZG|1$`$uTfn0%G{${=6Xipo}(`~-p1_tr`NkDG=Hs^ za=lie{@KfxYyUH}M{RHGKcc_2V%o`klf~R?CJ0WgnRxK4#9950_crGGJ!_9m&YM*? zYrFK~KK{w4VIeYl!dRA8biq6$|EnJyic&Mkb=ZoC({=iuI zqbK&syCl|g-Z(61$gDG4yxLM`PJgiHvKp`L@?48P?6{nJ^`Xj1qXl;gk9jip%{+k-V5A*nIY~zAL-)nW|P1+Pxp6j{4Qrl$Os$aHe?A!inePo-SyZ*+@ZJ&)^ zbqn3$ZEuwOlWuGG*Z;x&j#={?OS5k}tr5Db=oBy0_qF<=|B+bxLm#qMsD4=`bC$^VRo0UJhNfyS{PivWo3N`Eob1Z^dlqtjsM@4{NrxuvvNh!-iAyju@U7 zc`ugz-T22eUH|ZHT2cjX_Z0Y5{LNnb;d^gMuJj}8Y~z<3&gK{eaf{*h~cXUS;|g^k;{ie2b9(Ccuw@!IN_{}}{6ewcLm(AjM1?o5^B!tFXmPa2|c z2r#^1SoNPlWGg>Y)~qe&b#fn`_Dz+av|&rx%Z(iDleg6D-hb;@?dv5U(^fu6ejsag z-*cPxO0BeKZkBg4eUGXwF0Y^ZXWINHVPbP5{e)JZmJ3}J_g%TX=2D*b`XAf1U(U1n z@Wr0TuVq&Z+t>NkF%v)6YR~$S`%&ukA**F;W>vH0x+%qjg6g_-Lr|VSXwtWxWL_So$jTW2ru6g+%k4^h_URro%%Vf*0 zXO{xFPICWQBGY`}L{9nbzP7n*UdsvhA2+<8xyyFxyt&WYf7=MQ#PHpz&2*pYYHja- zJ?Yi&s;RGnOO?oRD@*Ir*EiFP{xck{m%m>z$vgYz8`kxcy2Nv;-B@#OReTQl zn11lSRQF1ixm#Y>S}OSng~rt#zRV!MH0e+3$GYZ6+!NI%E_Y7lpC)|T@wnHUHG6`W zWZ7>%wlXs_RYv$_nOWdHFS{@AK5N`LzVp=lb9??At>66FHr~ei_4^}F&Z_)pDEH!Z z)1LI|VxHW0_xe-+s^m4ZCUvfVHi60L#z6@ip3tm|A0>OYddk_<9M&dkrjTYA5Lq{ ze|Xa8ntk3by|e!rZ1>F0z46B|uAaZWhTr^fHgAw_bX0qE?a9K-ZymQ-Z+Nvy`rbFY zdqd@MnfCf0OCOYdIDY6Xx6kAwg0GTt!#;iS6iQf-p*zK;(o&gW^08Xh6z>l^zx-!t z7u%<_>uOl)j)%#g>k1oRScjhsn7+B!W!|3ishckR&DLM|b=SJ$-pA)n<}6KDFI~K8 zca+`f-0nKg56heGKRkPFef0{Bs{xNBx|$-YCP&=o6My*eis@eSqrU=oHANSyE_Qil zv`O>bDQCXL5^o~p_%!eH{*$WcKDsOP@3pCwnp-#WKL6PmQhMsG<@25%0jpBWRdUQ9 zq$=8v8)p>1*3MLl_B2U~oGO+yzmmP^hINDN)PBe4L*8?5zW#ju*YAF{6+SiOuHxb?^dqu$fiyl?-}_nZ~-ZhJj#%vZ$RIr8msl}UR-@yP_MexG!Sx6!*w?lCq$EIZOH zb=$*JyJ6Md0@ma|sUN0Iez^1B@x)bYKL|EITP$SU)gSPIzdih6U;p}>6^kC}dXra z`z+6yJUlbs?Eba(XMf@k&RkYLTc^e{xnlXLr)xsO*5`f=e_g-lMX5huh1TtdWfNCL z`7^)TzU{T@9ZreRo(X&m-`2&QKfF)+iVaI?^NM@7UKPaIE{=9rsti(EwdrK<%;5H0 zZhmFyD^310Nc}Jlx>&MS?$`b3zGugSH+Fp#JpO)Bq;goOg@yXOs^ojym;OjKoBiR@ z^&{d^Q}U*}OqANeJE!!(>d6JqGGBkbd_HdZi!YiwUW>UV?gZ$3wOYWUM zGx?#69Mk3x`!@V~K2vYefxmOR%fJ6;cpYx}Fjv{}qx=z-%cj!ZtFlHU`mDW~&-}<%seqKR_R7jnEx4-x%|Ey0Undx~>^UQg7JfHQt&hSU}p(^$1`3vK9 zA4xc7G92XX%bvUM!`H3nkLVh^Y~54xJN8dmx0b=fx!bg5zDO$D-CT9g_`|Z@ODkr6 zv7YO7>vPT`)k!u@cZ~`vB%bel87%R6#i^j}v-eG_zkcGyipNe%qeNERuP=>Uwq)w; z{d?AYyI%IqWKZOSUajL!7fQYPMZ614dF>?MtvQo0L#_1AsrB=B8L@GwH=jH&%ipz6 zzM|aigK6J#zNM^ZuRh9~B%*HkvH#`YZ2L#zhxY~_n&mqEcK*K1#7HG3huh&Y%#qvW zct5t>W8C!7>s3_AE!%5PTDGj)^prE4)og;n!S>)eX;bE`ijR)I8l7A7FD0m#M`_uV z$~(V)Z+>3)sqp$k&;JZs(c*t3AM9t#s^?w*b@%I^!J%7rWtVQ(JEamQVa|J=kImmE zd4XvCL;co0qUG6ZVza~F=BpUa->g=ir@Y|#tNIh7;RpUR@P4)RJ{Z-vPydp&h5R#r zW7a-~bJkz}&H1{fo~c6X`;lM&RxgdHm~`1^)~%E87DaDKnk;H@dq?d(ubv0B z$_rJy`tSG6{|xa9IfD;Ayz0(hX>BeSm$6%I(&bp|yRYvw`&_Cqt^X)>=x}ISzxTAX z$a$7rq71^jd#aK@u6-}^qK@I>pUQl>iO;;3t~so$vgS$u4?&x&`mBGv)X5?|R z7xdCRSZw<4rS#g8=(~~G*OTiX`+jeJr_T9scD>g1Q_R^ilL`Y~OXVN-w3B|ZU2K}q zuKx@-r@!r+v`H~1bCu6M|3b?j=O13neehz`?TA;eSC~wApC0zq|G8WD!}o0R zEn>TNXT_CmR15QntV(Ws{f>Y8a*@T>!Fg8M>-~2JA9%P=^T02()&SjI@4 z^FRB&U8XquVgKP?|D*d9_Vmd{SzNlL^yWy*-9G=Ae^d8_??3Z&?VfkP^H!SLny>AHJU0*<{M9qL8jEzkF-)cR7h^`7)6&3SMRB>Yn+}kRG|DaAVB# zyyENX%#zQR|LA_;n|xU6&#t(|>mu(h+N4u-fdA~obB;C%zvui8akDvPJmuf-m+S6d z{qnnS)~1lenXn8$m$)UwoL zoyx8bgDy+U{=Nr=G1ulk&@AO|S3dHsP9@Z1-4f7c9_CiNT9xI?o7ODv>7Olm!c_lz z=V$AhZT^@4@jVUpX1B`gshoZ3<;_!pxh6lSo!!3ZX;{~t?H?W=iWC1BI=^Ff_|Dx!Ull&gNVXyZ;wE748 z!#&sQIIjG0`E^Mp(DT!Qc%JG4_PD975A4~`KRPdYdO_6dkC}NVpZ&bN?8_}9>7Kr# zaG8JXTTkxvo@i@VmKO5zFt6+NIkmrU-k$bhQ{HLstX;3ZZhgNsL$}6Uy+2ps$|Ix9 zd}Wp2GAnQQE$I8Z`L^ZTD0_h~^$bTJne`v~ct>r%N%z+D9ho*;Z!t1Vo@AjuXU^nv z2CVfz97HOf-FKKD8`-(@)^)Dk0_**Q`_HYbiTjW?`(du*n%q*x%BKu28%|!|dC>B2 zv6pe-(}2leKfj1sp?Pj;)|KS5=_<4D=}-Hl>`HI_^5T!Z#jNxO z=~gWUo~lQi)|#Ae50~fE(No`Y`;qCSK*c^cR}G2Q6YS3{0xHj|JeFK#XZoYMc;Sm# zY0GTF^HA#Z+H3XL!~^eW(OwEv&^e1 zo;CgVR&CpQU7LIV87fOI9rK#JlD{xx_U31KekVU2f9QWo>tyzY$q)Y?Z^)@(Ug=(& zy*sq*?_suwb^ErSud&$t!Ef#3*{AEpkNC~FmiOx7PWR8E(=&KD6lCT+UdQVCU_V=? z)Vs-#yib0e`9|f^EwL_>2}y+tiCdWX%zjp$`1hY-Yj%z5kLo4an_q1gzja}&cSL88 z*MEkZo{x=vm48`-wy2hT&G!FcHS_#@VfUNo%$6<9w7z#OY>T+|rmH#g*1q0tyd{?V z;N}{K?VF09WGW?ji|aXkdF6Rtw%7aPr1OWxs zqU?6KRKc#yfLOy*ZeeB#XZQm@J!a_Jo246k;PcVP8e1f5oJDUKbDViCcJx@)r(;t} zp00TM{MyqiML}y@7rW-BP1o0*yH>qq?)CHDFLG)^KlnFo(R};l!@up-mC}cnKAz+d zD4oY=argQ>|CdMe;v;@=oqkx`enU0w>WROfCQo2Z{*&|}c75wov4E_TRfi1jrQ}bX zQ?klV;Ya$4%s7sVHBL63(g#;YsXStqNRK^i^Ki$5KFeRT{JtvPxx4m9?%z_bJPE4} z5gEmn+RJA7#f$ZtYZ(0 zaEUy=;_iCRJ@OA@!;fqacy()WRMbJvTW^j`Pq6;>{AKVTyC3EGwIBZdXEyRToju4hlX)RlGib=|I)wL;RXGONV@sC~PY?04~I%$>EHV_bVb zt~Ovip3~g7^RbQ8#gG3PnrhS+SIn~J)sEeJ<*n>gpUb{ES3E295}bbK zWy!*@;v->8v$a>)np}E&+xwgU?h7}6Y<{?(E#p_|k|@zzvC~^@j%P^6%RJifWk2^1 zx%Us3MD6)?Z!_Pnb0@B4o1`&_Og*o;TV3*4#aYkC``dQiZ`aAudtc+Z{NAm*(K#nqt#5^-^+bXP2M-dOR!7Z&H?i>|eWo%LB~)g>5MUGtlp`B3_P zN5RePrqGMeBPT_!y`OTi?&UWtbDy@`huMPf$Z6UzKCI`qGPCpFTO<-^(wJ!0(7j%obJf1vu&zGwfYCD)X1G0WTe-(B(j_18ZyUrK5g$NsZ5 zH?Fyw;nlzCY3tW=FReRgcf73Ln|G&tb6l z+q(7Ry32>mzOT=JxRYmFBipr{bc;3pf;_2p}cgsw(LhgK+lJQ=4a?Dzj zHBWBs{heJK*S5Z=#`uA@K3~SIZGDWp_HXFQ-r+rI!)~QX4Fwi2C$PVcmNU9m!&k$- z^u~)a?)-8d#q_!}b#q%CKPn%XmET@to2ZrTS#NrT@qYG`g~y#EcI6+gHOp_kR%bB( zh_K}ISuVf%XYAK-Pd$J49N(R*O*s+(^=|L)2qql(PHJ~_^v@zI~|-d%oXO6b-1 zsVQ50;@NKfvDy8ja>d+wFWq(S75^EMXIaMS9CMnpA&jx_P2;>7zn*`A=4_?RoG0=GVv88y`An_@hql^uFC;bMO94%~dVi@?`2H z@3Wcv)(0zYre*Q9( z1FRv;PtVtc`U_;t;;|QaTXH&c>YJ4P-ubo>>jdZM{j+5}oB1d6!})d-@0+?N-cNV+ z28hnJuw2>gC$RNWef{%|HkL<9D%x6eN;H3;eselx(&qb9kI(Yd%`e~DTi;#uLniau z#EMKl76$)4&vpB3U+m{&FVLSf*K z^AEpB*>x_-y6~eb`gE-Trp5D$c*Xs=PtBhIQrn z72ev}I`?;;PPceG|AT1bhewAGN=@&5pZh0PSl0YazD}B^l=fJ>axl5}`weFrX`(!D){KNEzXZLrM`ns;)dSzSJ zC85KWw`ALYKB%p_s(M;4`*p6(-}-fJLesBltcp8#<*|O{T~k?|E1|Pv@Ack&e>Lhy z{n8(dHgzvoX}d3Vk(|sIxp$|^e}*~N%)1wTxO%)#=V7PlmczAD+v=ZBEa3OgKYVTG z(jRW;!+!KH>JZ~5DtcP0w-9PFCE$7sg^<@JG~U(Yjh+lwsgn5X!=r0s#i z?mk1Qwi+qC#ntUp(e$7Hs%1@=hMrm`HdS_Q$*d=vGMBIVG5@^lrs&r-F&FFP zZ@%jN&%iOuW7|8+^qI4HsvZb8SiZ0dcdSl)psnBfO+I1j>~QVQDRUaMr61it{M(u~l=`oMG{v-6^d8WIsXHA)P_Hwi%i;euq1{knhkl7QPXYl1wR?(R4qb1lBnhF8C~OibL;7z+*ReT_w9P~*Vykv>+>VGxp@nA zTvVI7c%H}h{J^G=raApHG}ITcJny;cTkP~<+Wg0c`KdPFr80Nx@LbAMG(Oay_!|dv`9Z_wBxK(eaD;+rP&#Zv0Wb;&^2m z-+Jx5&gl)>bAFV}W8eF6@0U2kjp9-%({jR-w-j-TPS2C{P$(+y+wtpq@I(F9Te8;= z{k|`DCp++X!Ma1%K~J8fU$(91dS1u(LQd$4O>Sl8BkiBM3Essj?y8LkU%s3(_4SYP zmCFMyPcC1(KW^8*^rH`U+}A(*asJJK=D^+8OWw@Nn&tKCTUl86?y9)A`(!THaQ|oE zX1ixSgQv=-_~#70*oL>Kg{lHSHvTa%-D$re(Nkyf1QSn<6Bd>SSIyeiyEwka@p4Ib z_3>?6c3n~0YA(1TsNImJycsm0B3o*!ra z=hva!rc#rq|NPHzSUx*0xaZZwf-Aw77kinNZO&ZZy*zH0RK19aeEYTXiFbbZJrDjQ zC3-j4^w^J!+ZxIynSZK$+OK}O>t)S-hFdk-TefX#ZQEpj%`m5@e%@FAN7Ebs*gia~ zb~2~bv@75Kb?L6Zj}~)0coiHGRsJm8*KGFY@@GZy{L^>Mow}RGeg&3#j&_2GQWyFb|~Qs0(p-B>h9WiroAxjB4$ zLf^N^F2G5+dbZ8*Y)PCeO-O?b#Arw5vlmL zr9WDiM{qJ;dU_?PEz(iTMdx9}Qx8jq$=;9Vb5uBcfAq?X3R_uTpY*x)x9{bZwR_Uv zHCR`r&)X_C`$5@`kAJtdm#%kv{rqiq?`#ob~*kJ_d9LESH9e}Y5XZ_I~|KZv4%7w3IML93sc6*0@o=?$(PpzUMPXs5Pvkbnzwk8gh}zC3-+SseHF%k}t)lfPATd3CkxBwf9~Yl?~I zQtj8}YwzB@UzE>WV{ysG@$t4xPp->JM>reK%49gl_-;X1eAgfAWsw!fc+E7YdCYpL zV5B{PL5J;~t+D6Aiu$;{AJ53iUtIqv*6CwU!OwSr+>DdBH7tHQ+FB>A__6Rc(mrBWsGX1zyM z-lpw+efQm(Nf&Fs$BG}#Z@(x1Ve?VBxsR;ZMwckgoH?Cg;^kIZ?fBpyg%9(8I4t_; zbvOEOX@P^7!HHAK0SlOW9;-{*6nU z$kzLS{D+A*vVS>eemr&IWVY#P?iqJIA1qoaaqRLWN5yug<+GN&U%U3z+HFg&9(u5H zRpDIGK7F=|Jy+K4->> z^A;qtUzUFOwZG-b$1{Oh-A`X89;})Bym=mXO7oYs_04j;AO3BwU2*bJY^3g<8J>Qx z&anH)*L;o)i<7*xHNVp;uTgH%uhO+wPj;?Tbh_s=@ z;Jv?oy5pfK8Hs<_tX%RqS9ewSuCDIQU7M~htqsZ#i~MoG#$eZ-X6MedO??g*by_~L zCxtW_8CfWNzSiHdOTA&se+FTL5BG1$`(=i#n3t?}v4QJTB|FRK$&;!RxU9A}UH1N1 zmGOPnld2_k<R!!~>IkAn}+^ZzK5NVxpf;SJbP-9 z>&x2Q=Qr*KmcFuajmn-q{cg~;KP%0iT-thT>$+cix&Jc=o9Z*~Z!h^#W1EvaQ-SH> zjOWGWrn8qt*4WQ~@ORGlvX}ZDN7gOvYTRTpaht|*ivu#{&uz1nkIWPOu&N^8{puFq zs(&xnzrE(Uc4^|adod3mopd;&&9r;>V}&`-w%2%mICtCOgW23w`&LcfdnfYKwWP?p zy_-F6ae3NS-ORnbGvuyM$V#szwb$lrOL0Fe|0BFUzM|*H^z%K=Ig_GnigJP#bj;=$)Wo+Q)oW&Df9cb@MSmOraCIjVCCIe;3!{P`JW-BM{euV53?WsZQCohzOZ=B(j{dZ z-vuf^IN5h6dH(0u;eX6-)qRe?T=j1m@87&xJrA=Ar{2D}YsJ9_s(6>+6+H4y$uyoKF|65#q#Y-&yW7DAHH?2-(yv*`*w{`6PIPri3MLy zy!=;n#Y(*`IOIon=7OlK$G+xyC-h>=7YT5uwz*5Nl)mn2j`+~FI{DF#Exq|+m(%U4 z7JFtYdrI?sKFw;sRO8LEr_0a%YrVSN*2mP!?(>T&m0_zc&kszj(cj*8PpNcMv2yxTW*G); z>qq|?n!m{N9cGa#TQ&XZLY_;Szt{Fnop+yqi`tLmr9YNkJ{rzzdr~P|xG6Y8%guvD z_VId!2M-dOMD|zAp1pO?mY3USyja?_($6AeXR*rVXIZ}Y;zh3?zMHXTLXCMmOKe7+ zM)Q$hIl?|nvPJ@L zMAaYmZ@0?Z_^>xTV%OEh4Y!^w3GzHMcL#Id%|CSwsekM~w6|@2FOd}$wsm#P%W0=m zz6-`UE3n4Ox?SK ztAnpB`|xe?OKSM@`*AW9EtP8|=?-7nMKS%kOoebYSTco$Y{{ALk%WQSHaOZMy>$uzNLR0Sk%su<+{jy`{kL5}q{1vk@ z_u=ivVx}W}&jJr8ZT{o`(4O_+gT2zBmreJ2Zk66`v2@Rt&mxC;TG<}V47zcyYUA=6 zmmm4X54(Ryd#@M0{i-Q7=-55k#^T$mvzKQ7as43I|L{KV%TLj-F2CKf*n(o4#E8^=?9>iq|nu z=9+Z{91`CwpWj~^NB1E= zZ`>b;X5YP6)Bl|pdU96#6N7DCO!|w8EH=-nmB(8d_eiH__nkN116 zU7xY-{NvTK%3fE3Zp6kP&C-iV4UIkYPFYzY-PSeyqkZGoyVmhiW-HgcEH~cVam`y& z&f{FwoJ}kL+G_>unUZdKGyeRSm)Dbh+*P%v8tkYNpSsPn=u4LG=}^_Jvw!B5$cxz+ ze)#QXu)cN4tcO0zXEM{vtvjAK`4-({F}htN{A0b)sUxm`Ckd-tu)Vk*`qBU4Zwf=om^6scg(%+>iP%wSu@S{Z;so)TJp&H^(wrjf>WkDvpx(xXV^1mV&mm& zJ3mhSY4G-ZeBHdcYb}1xH$P$-zx~%9gFPE}ZJPQ|dv|um+WBFVHeGsm{LGU{o+^{7 zCVPgPb{i(weNYy2JT>{c+*iMSyNrUmGX5OeD|vCHR;jt)8I46T6tdA zYP-GZd~+CgRT|3qvG1$rxmKF-BkR$l>v5asT{4?gI)USgjF7+lwMC02HwT87rKiO_ z*jTdjw)ZUaZNJy<`7Q79C+Ner-4FjWv`X>zZ7lM=GpqORrEPEiv`GiBKjSU<{!Pxl z`(RYwa^3aw7st8o<9xKstzThk%0Y#9ECOy8Hl^&c{C!*Vg|g~7wq%x8TR+_sTl9@J z@^NauM)a)-ZdL1w7-i(H&adR}$=N6Oa#!sWp~K6L^?ZA+Xz}yL?&R(FlH(PfrwPuz zeyi+{`NrR3@ox)Fvxs`>LSC_78M`!Pr zyjEr3wbftb_AU4HfAgO`Q8xR=B6#BVyz0K{kbPPg_c$(ktttEWKwF{G>X~f!^;MYs z{FhZ)}=O?0(plIg?|Byso`o{WdxNcpS&aV;vjh1#4#++az8LODj|8 zvucdGb^dT|wettxw$&@*<<(vq3k0#t?u#q@c`dxx#`DqHB#C8L73UtwV%lt=%zSxX z*1W}!;>BJ?iOvxhi|W25apll4ql*nyHHRC&sJ{+=?_0gid)fWYP2ViCx^I29-1H8OojN7 zd79VsCLR53x=E~9x`cUBQC2+j{U4kE3EDb)T~^p3rf)gxv3+qJ)ARmRQTFDq_a$E3 z>itutH-E()yNl1IEuvzy(^mw}saZa6{*1M1Po8TmeZBRcyQx;e()Q(1t7|Ls&pp~* ztowfVrPJA&dkTM4A2F`DcisKc^UtM{OEMmXo%3c@mz4K^{>8K=cX`FJ^WoEdufO#X z7d-hi^%;-EbB2$T`~LL&vk5kN>mIY?6xKU+nydBH-6aY9{~6Yc zu6}&_zOd)IrT11dZ@ukhwB*n2&hIOH4^K4#pNPI?v5eDN3$LuH-(s%k-`&?+V>j#W z>d8N5AGXum^x+ywh>nrF$vu)+6g1 zb0zvD%ii7L+Mwmg%<5}@Twcg@Z``@tu2-*BEZy20s4&f_uc0CQsZCE4$JY}pauPq5 z%wumAlWx5%diR3Q`K{hEbC?hPdXPNH^T{mTlVZ>I>i>9qVa3^`tYa2c{VqRuN>^#G zSbAp5wClImPRu?qkK?1;%7<^=BR1XHR#<=hu-4;+7SDIQsw!WzpZiDoF{$Mp`8hUL z7yWe%W_^&rzfGI2$Q_-t2KQC|Yp0YH%W?z``o-C)iQoNtz z{d-N;zAv`6%`aa*(Y*1G?4!Bm#|v&mZ(;i-_F1HP!W!#OY=+nEb}Xy7?R~xEKZD58 zjO$F<9}AQjJD;9B@Pzq(SGVhRn{fWFXS3Zl?Va^wv9a#1X*I+a&Mds1^h zT)Ot@kz2pVoqrzZ!d1IvO5SCyKiV%)F*|D4@3QU8Do5RQ4>B#h`p5TiMU8g;k}RpP zwW3WLhGN_5H8&Z5+9B;9cWmjuPj-(k|GM{VLOy4tjnD0=Q@@mL-kl}0x>j`d=hRqU zo2nYk>f)uD*UPI+_dMe6Tv)hKMI}MN!&cH$L4fh3jg0??=Lh%cU4LiF>+c`d5_RNI z(HhR%S3b{A46zYill@IfZ^Nt_aXGg|C-nSX?c(0+P|ZpO$RdGs|;(_Sd)7 zGk=xHsrMg!xjdtFT`70(X_2glktbN*vdmllpW%8>;M$7nV;_G^v*ryuxTaLtXx&NG z@SJ)33+DVwTJ>Vq^p3SQ*{LgUMciGskY`PDuw*!UCd-5Z_qeSaADtJhnEg+v!qof6 z6Z3sV51!9G@*w23w5#gbPyZPVLl=6>a-G^eeZy`)yKmdGYxPgB_brXi2>sFgFkkuw zi}NGZ?S1h&W(SQ8kJ(-cI{83e{8ok5@gr;=i!bXNTomG9JD!SHz2 z%Cm>eHbuSM{-{z?oHuob*4hV)-kyGM@_gO8SA3_pt-PPUJm)_{`#q75aZ4B8zw^@B zY-8{BeyMq94lvct>HprpH~d4{{KuU&j+IL*;%@mmy>YtiEfcgRM>)7Hc}MF3Rri=b zcdf466aP59YmfDV*E01Loh;4ji{AgyWESvS> zg4~-D$KLE${?Aas{F%A0U0FeHfk4q#bvm%}(XXjaTL;P7bvRT~RSP_9|Canfb+-6LtApoi5J# z{Z8`VRzp8Oql>C9v+HNBjl8^6>PqnBDZ5t|TgFD-)sDK~ZMw(*;rWhTb?wQet1{pI zom(uCk;n2lLGrkhbM*)QxUb6>R>&U>{9}=udjI5Ql^GkkZnBpJ`zc_*tfKp2gX$ z`#N((!fyR}yKS4rLr$y0^+Cnkji2m&D;;;|TFkB6r+s%%_|fileT_{h>x4P8pU-hx zxOu+89F50UH`s2T6)#*7f85};_p*wn6F2Xebag*FC0(KZo+stYb9PzxecEd4*S)qg z-ng^r(%bjfKBo8_IqOKbM zrKvZ5$RGRs$G-Wf*mX1B#lD}OE>~>sX^UZSJScI_-STnQ@<(suk40@M+_rY4{tJJ1oAeu97|9lk!2N?82?{Y?GzUu9jJs3whe4uT-0_y`1e<^w-Vz zckH}oEXZ;2w8zaIE00>+hU9O)ne|un@Wbbgdm`7}dUZWaf!n*3*Lrb!0mH8^2i5;G ztPS|#edwOSH5>2pg+KBlQfKPkdgMAS%z2{+PX$YX*T0hg4D3IqAF~RZS(~~vBForO zGtqKu>(ZF=yPK`6{xgVan;#axrx-7Od}Zdh^6qM;lUv?ug%?f9d46-&N;f~hAg^oJ z^XB$cE_}1tt$EUXqwU8_tMAYDu8LlCzs!G8Me}IsFy6#0ZFsA&&q8k5 zni`i6|8_sjO;~&P-0c$)`S<+TZRYgMzi>q$+fMbeP1N*h*RC7Ir)=sF+5M!bfZg&x z!|UW(D<8)uAFKB1so5rPv&;A1y}wBJ$Kk{GY&Y!_t5do>@0{E5X_wBdkr8fiF7Yjz3mgw=f(Yu0z%`p?i^S}eA3jjQ^sRZGj~$nZ_=T=irA(W-w_ z^Pk_y+H_lkQ>H)fUxfVoWKpxy&_|Ozf7Yq3Dm>^vZO>B8li8)}wQm+&3fsKx*XHVj zaa$^-PoBC~H}{wErGgPp3}uy&3uH>zAnL zk9xCL-~6$PTUvXg?wjpQtoM$y-gr>NXfucZ*piR$n`=@R#{QjuL_2T0&Vn`Bib+Sl zuuRa_T=tRsN871Sv3BpQx9$*fo5VYb-FZi9^u$x&*R>zt^}H+pt3;k@#gj?Tiy9<8 z&%2wkd)Z>qy!?s37WWhuuMLZNHEot&>T2(hwcF!&Y=3l~`^Tx%ho_bAy1b|Gj*FbY zO@*E^le6{*;|%ux$mj2TyERwmWsXm-$mCt8)^YMMy;W#%kLmdpnlDrF`pB-|`i?|6|^lvs~|wZM(($W>)Ro zE895UY~G^7!NO1}dCspwwsu!qeB1Ybx|=`dp8eLFTd+Md@8WKa6I@4xjO?aX-8~hS zb?fc=h5b7oa)pRYnX~uWmFaqYe=hCzkFCV3_VBkT08+PJTI#bc^#9~iydLfeL?$Nvwv$ilPgk}8vaM%_2OUXpQat)``y z|E}rAld{fQyqNC0e%){B`+|F9AFtWi3_X!!;cNFZcn#0`O(>SZ!YT}mM{OR}3wQ4+gwKA-zC_C)Rtjzm& zd*@!;cJ+Rm>%;xbKaNL#n74f0%i!C8n-0A`G5u`O{zK9VJ)b}G8UFaT`k&yB>_=;Z z9j=zXHTxyfcKW^e1H*$4K2JPnTloIwKGFXSEtifT3{SeJnRMx0nvv(pThRP9@Yyac>Y!&kl z|N1h^Z*yg)@|xMA3zMGoJP_h|@OVzje}*W3=FENCS86izX2ovV7{BAEFR#ca zzYp7|s@`d`H)Y#e#c7{38A_8F+3l7*YPT#_SzCYj*U!n*Q+DvMi4`v9befgBy11>vaeEvC=MBaiNt^V(_{*RnBjlGgv7e6cXRhwMa z_3ZNOONyp^kOC22D}K0lHF-f^FKw*GSezP3NytA6xX-`4uXhgW{b z9tn`Vr8+r#SKkh~JA4&SinQGi-&6j$ba`vumb>=;SJs)leVUdX5fu_-_`U0Se&F|w zv-%(QZG1FW{Yd$(eG{__Cfm-weacI)C5@%|<#$%=$eri&r$0zPf1V@p!`aX3%a5#? zb$#xw>wE9b)p320&+()Gh@JV?%V|?}^ltW*dl>C?S1GWMn*1oNwftdi<->m$BK35i z9ISn^^7%Rk^-rSn&DK9sd~_t6yK>&YaK$hqMqB^?4ACD&&P!(A)9d^2pW%@6(!0@K zH+UnNE@s%~?wwyv`Md*$7g*eyZZ_tx#zS<~jcv|^RKwDYnTPwr$* zHdYDDzj5w?@D{n57PcO8UxSbC67Lm{mx|k;aIJj3f?K4zyTT;)4;#-J&p))nb$wRV z^v*Y?)*g9jJEN!06Yr^)GJ8-|@%up7^Ip9_0k`&)|5{;qM^d!g<4EqwSH%~qFRrx< zx%BMce!<@}wucqYxhtA0`gQN@^6ZCS@=M59RA4`9DZ0+WC^*Uy@ zXXD)2h4ZA}&9nWx>TcimN73_{ZoQc3Sa7R!Mp}>IPsgGZ3;QsWY!35fzjBUEF|_D7 zS{&>8+4Q{h&Amd`V<+#QALjYco}alDvGyN;{d1e+JjTo<2QS=w8KB?=oQ-frCYyETwPn-&*(1 zyez(L|NJL4*Vx;Pdi2y^OGNCrl3!n`v24C^J=eW&-zRx57Q4HeUsCSmpGoeOxSM0 z8>dxI3@u+6&Z}IpPvPZ1wXIiS$9d3mLu-P^UF{`jX)nm)usd{#5;mC86t8f;>`v4>~e8Hl6=@ z)mA+AV_JWC`LdT`-?!^qs6N`H&9rgP%TG?uFER z++x=_r-<5aeBrC!`^WJy_eo*@>m_f4G#~!GwC01w@jOlmTiD z?uvtd^jBn?O`MSv<>RZw)5g5aUv7Ed&F?GrsIK_&=-|1oa&b*Dl|7CCrUWHK>o1MUIcZYWAbN+3R2Yx~#U;qWZ)VCWp5@GQX~v zMcwb*(l4QVc8a)A{I*An?s{)?S7#`m|NKI6NKI<(quBW1`nSINL4B{>q^CW)yEw`7 zOHS3*gK>dVr|vD;{;Wzg>sYVWmdYj1-e2;HxgPamPGxSc>6IHFH~whO%uP>UpDEQ7 zaFTy!uJ*dbjGqkcFRV%|Y%QLI+>`%M-+jC>?V6d1RLrEw6DM&CSXv&pNoKyhHmk<{ znoVZ;;#;okjw&q)Xyn@Ge!9Hy`CArV7E~lXG{nN!CHXo?E-dU4!ZT-sVTW9m7Ehl)m@moImU2mV4^~dIlO=NcZ znmaE(fNuQ=*;ym7Jnx-7@3ECXD)%IpKayTi!mZss`>5}^2^(0Ns)ZY0)$=banLORN zZC-U{PVwdCej>?HG1qoK`7tZ(S^1RMb-!*#M%I4Y^=SE-kK_wo>tD z+xLW3ReeTol`nmNG(Y4QdlB{c#jdG$rye==Tj031?7f+f`))GKslH<6*Z$Zx{+NKH zXv^sp2erw5p*NzZ@ca1%zct*MWc-9+hbY0<*pyk z)QMi&ni(WLSL~ncx9@>>7i&H2nwomfSyQHgk6%(nFzAo#b(?(4zSBo``K`}Y(SExA zR_@$z=APApO|~2sw#6YA_k{mv;BcL~W`eJ5OX3+#H8*p^WZJK|`wQnp z9q}_54<)zsQ0Pq^3(N7AuB_k zEN!116ux=S)J50ke2=oe`)1l*9(&#&@ke*f?^*NZcZ$oEm^r;aGfqkzmk~ZGTlhY> z#`S{fUiNUa>(d?c9u=&8Cdc?y{n8re)j#I@ew=mZM)X;|MdhLqcA1t0E*wl%NNJ*DKvyT!=m zRHUbZ0LK#{j>i`+#e9x?6!x=DZBj&y&gJ!%#ipzCvR-aamA9Qb`~BjiAH|2_%=Ub+ z{m;-*BB{9N@>?~-7}w_Z4I_w*4wUT_{t%l)LR` z)xS2Q zE@17G?rWZW`O?Z$ZdkEpmr@LW&t=uhh_kLhavzP4xm)wMdixaC{FZhl-H z%XRFZ#`||m4V=HVbF9_lyP`X>_xMu@mM0C2XG5>=F?^I!<0{v`(sp&M$sx6ni8In| zzR7)MdM$PIeRs}#rLDWoFUIJ6Y-o+JntQ79!9`uoWx-E~q=7Z{v5dFqW0r%X}Z3zKP+Cg*1E+grar_~hY2w&)olee9gkvzEl& zy2q*Q_3qW*(p}!(Z`agGeAwQ(^}f`t%&=pUd4JA4m6^Mwc0F$| zJ;-|X!tWTP)_l_sjOUD^H;BqjEqpYW|LChWi4 zM|Pdtlz7$TuAB796t2_7c^|iV9#?Fz{Two7*<)SZPuu@kzVr*(@NuQB;8dG#B6wnFm-~+1=H+P&W)AO9u;1G4&+(%;V)Ng* zdmL+v3zl6EX}bF6ri9T-@A>!m_ydl!-wE?SYWTQ*!)$`@X_^d)}P$d^mOL-XHZZ1MfUP9=Ou4pj72~UG(1E z{ERKVyWVVlHFv9B#r12YSDr+Eocgfv<-g((t#3Q6{a5TPNlE$XVOw=o>UWg+x2(VY z$BV_qyH`AVx9f<;~0&OI87x)@+sJNl6L$Cq`g8~0C_R-9aT-mj%T>g3vd4&VIz zN70h+Cdx@XxpS~xmd`#WEcEJ2&!}I<`?V(bS#|eJi8m>&)(u;K;+OxU>pi9X!Zk)0 zOsi)rb01zA8@);^_otY25TCu&qngN%X|Ipe$!@yze3n_;CEJOuZ?w1n*!$?Oar}?y zhreHQOXNIk`}OL4N;2cj#BE9UgJ&JQP6uEynpI}ZHwt<ynVvlkRUIP2}7x4GQsjYPS%nzsn{e2%VT{Mg>QWj$-w ztlE3idA?s~`B`ip@+;i(fxPgGD*vARysy1Vr^7bv*jy2H>7AmA&+n^KySB5e~Tx*plmT9G&HG4}yQ zzeg5t8;ak~dbv;WkMpjNc3bmTyqb2KNtDNC@9M^gZ{hc3ryn;sb4~2qG`qZ)%8e|^ zvWAUsJl6F;*4y|ndi8^U;@izOXz5*$o^W_yZE>)+$)ag<_x<%OYHjv&=Gf?eQ&zfV zv;6$0lWA;j3h5V^7-SpP+?RBG5PsoH_FZ}3h*I&(3BN1(oNWFDwI@ngi>s?M@W*Yv z(l1hBX(t~2GVE81_bScPcgmG7zw}$K)iWjU{)0bT!~{d;dKIsl5)}8!@11$>XS>Xr zx0SYmoe%oE+7I6oy|P6jxq*9er?AHDu-*>u5a(cO}|@!WH?H*J6T z-QH{Whx_p#j;@>fC|Y0O#kQ(hcV^5xa>r?%!UT4{(-W`s?)N`(ZTq41Vio=llf!=3 zP0THPcI+h6TgGJd9ZaiYHdMuZ`@Q~?&^Y>?0Yr;ZCI_9 zS^2&DD@*TI zUDY}o(yzDid3Lnf-n;U(ah;j_bM-s#*ui?^PJ#wA4mAdz{}@$i!t#JZdS3cP)E}|aOEWh_>I8J0I%c?|@!F=X_QEfAO+U=b?7r_( zj>?si7f<}R%n&YgdY#6Ar51rtd#AqDHf5WA{ciQ{ zm)WmQ{bTre^;`GD{|o||g{ytDSDE;4XgbK1&)V?9cmk(vS@PE08v7qJ(-%~fhhL65 zb}ur&h^KGCrdnHVch{>n+_@jNuB|)1JF5Kd^YortZT5$?*Bg89?U(N{S+P|jW&7>4 zH3rFLJd#t}6+Y}~;yC8Yx$@L|?>brC4NJLZRB;J-`T1^}wcYrVm*>j3yX$W!%OAXF zx#Pq8{)g91?zTNnUZi*SXycOybzO&w!TUwR*S^UxQBlbUh*57*jxXV11dz%5n%F_P~ol^TY zKgd=0+T$5_@7PskPf5-@O#L&q*L*!2`=ft#1=sK3&65w`lfGQCx`b=p28WfqH@>jG z)_;^=sKV~M^M>sgO1^BZSio(Z{(hUK$y1G2Q}6Asf8fhyI=SbS#nBZvRVIhLnY+HS z^tSiAun+H#%+)*naLGN{Si2jiweyT8aQEk2xBl?`xYho4)3rgq!iDA=IG%B|%w1e& zRLvK?KK{^_E!O85?$&5arLBGVL(g=_^Yp%toPDkV5v->KydLh7Gd^d0HnT?Sqkl_@ zuX;px;H3pS<~{T}P{7dhtI_w<(cN*st7>n}y!`FzV(~!tsr$0E&25G9F4e5mkDH}D z|3iDf^x=P2zFD8{N`)qcs>N~ssk&<4@y{?{ID1l-fJR?s3g03*j+`gSvV2+je6OQ? z>;>QCn{rFM-*WcdcC&SjmoiSxpVII1X#J1vksmgEToctdeZkGlX>|qpN*rRQx981a zJgRzHWXtvHx~2ZN!{)la6<6C>oE;r&7n+{8eea|Tmwv2#eAfL)XJ&cn^4hrxy`p8u zwzQ78I0XJD`R&k%CCPVQbslId)%%S6_sVns zQrR zZ{}_BF4@*`LQdiUdmf*=>?@P$IznY{f4#}Cni3l0vRvG{#xrxV_vFa<^DcY6>&5md zyFcchy2HSkQLu$us=Xqtg3%EAsv`c(<8&l=8Ht#qVK{k^36{u)gnIjs4^5 zwOOaG#GF)}Gwn&v-R;$y=eOTAUHag>;Ezf>@vL2J%NHN4tTg>Ni8D^&cG95AAa+M#{@R&tDA2A^%h=e&vg23EjVYVy()Y zjj~#gDyE&g{zz>8>ZAF2-#*-BpCsvccf4lwThheldE@>I&Qw`@3#w(yNe_L7RFbR;*r^HudZFU2ERw{fc(>K4xcq z{g3OzSi57dE`_z7VidA=6P?X0sla&tLWtm>i0S`CKUD;$X!GQFKFGWKKB`XZNAtp0 za?F>vWZN3uyBD2u_|$^D;&<81hi{#4lYTh&-po}Q-?m51xUzKCt!EX7w*(rwnXPkY zF4}1EK3HVdl%@5bKbfu#3Y@AHVi~sf=FJs1w=G|M>3iO-y&nI>EB<{xoc&1SjgoME z=24m8L~~K@{jxiL-(Q+hWBOydcFLw<+cGQHoN^H2F;x!GKX%gR%>Pw5cXetCSW>&NPt z3tM@!qUSQ*%+3AY*2(^1;)xaCQ^7Ywy~(>8rMI^7Z1L@qEn(Ytu32BcuY1{({|uu0 zRF`-EnQq|7KV6`Q;|gPgX3jr#jUS<@56z-0#qO*42(T$kZaf~t!(S8De}sE|yHQ2H zpA=hXChITv*)#tvy|4ULcTT$H>TT@@HrD8L4#75(VK8U$oa?#s-(T^l{<5(Y|7VH zOg{WgF#cw4baZKNq|yxz=5<#6*H-Bt?e72Kkn~~Yr)xLu3JlvUCD}hpn6CV&|A?)3 z-HWK&rERnGGrwi9q#RoyZntd3%Q~$OJAVYHE{@9xGnd-B=F>^pFB{pW8JzRrIzCl` z`|^dVkfYk3r~Wha?aGObniRCuueod6wwkqWm+HP=j=H&h>D`+XAMlH2iAkAvyv@n| z^P<$O!N=)&W{0KBe}>y$J3rih6f=+KN-5KXL+U$w7IQM3VBc@L`=P&VMY;cv%Id`@ zm)<^EZT(K1rRMY-ZT5$8D<7tO>|1Q!RdT{qRx4U9UMVyz*zBp{B>v@Re^rON-5}R8IzgAWzb=kE`S5Dg<`sJvZ{M?a zSJs86dH-tlH!l3B{HW)jLDP*GiOoDtCLHVzT3r>tV|M+hPkeY&>eaJTXDnK`ZEjfF z$sq4wA=@A!dbuX}${zN@>}>tEFEe!Y?9Qz$HgMb*#2_ijEJfttt8s@Bi@7hNC5Wl^>7lF*zfIkP-nt2?*9w?1_`H@EzK=9L58kFGpF zp#9JxDZ1juBm?ujHRs#r*aCMwksZ7r7OpW!mx5L-0tzMe_ZGZB#OMepAX4L6P_0BQZt|$sW z-Ltv2;_Znw{bD~h)eD|gTU@DaNFS+>~*#jS1sELB@p zq*j#ozHodKu6%pNL58dSvK5oPuG%EcYS`eRbF1KA*c}bY^CGUtwDhOPhku_QCz|cI z)jt2-_rm_LwbIM0b)#S2I&xp|PyM=z`M%p~oo>1IakON3B{NiqM$hm1eqD}z>xbJX zSeGQ1WcTgeWLwET>(-B*kNx?xw_RJkBy+<}odA|p$L}4oS+>T7-w_d&Nm)-|+KfK)`M32=#w%}r zsjcaOmal$J-BKR+cK+V=|I z-#6XIC^n4d)L#L-L4sn*8P3G z`|elo^TlkpAGNJqUJ>QbwdbwqzE4p`hLc~1*$Mvm9Q@(k;?+l&9ef^>we3Z#+0$*j zclz^ZuZ{T;{Aez}&t)6GU3;5iJ!>ZFPTu*SA>{P_O6Dt1?e(*|A71Y>dCy&O$v4hh zL$7Fw)(Io){|vnuZ^bi~SLd&5*O7U3G-Rd4j?dPvE7sM@t-W6>v^%cqMcVDx(|4)& zuKhZDwf`(N{jJlLl_$?%rWN1ypFv>%L;Wi%`{pL~&Mi2|z`$i1FL5jOkMrfy>)SdX zHV3u6e0coSsZDI!{eD{e`%LHa-LL3=TV>a~{AGa6s+!f_C7mHDG7Jj}kNPN03B9~O z-*4HBS(oNU%{y1)Gt1QP<qeg#8^qm8jW=l(~?fLC#G}VE7 zQe{%rPT~2WCk9ZlYbrW-L-QD|p>(*P7WFH*Rl6gMI*u!iN59{NdQ`44e)*rsVY{k92 zlBZr%MYg>7)~{Xnxp3OKw>R&Ht=sMVAiu+^uXR~Pv)AVIN!Nou&GI-Fp%{Bup-e?^ z^8Ji2tM&>1=v`HjRqIx3=cyDKp7UnGL+1kKs+5ms%j$&oeBfPvSbN3NE%LXGJa@|a zG01zJ_!0VeuKl51_txZnxm|rjFZYy7>cLO*ZQFO)x81MWeJJ?0%kZ=g-9K(UwzhV;W4W|8OXsl=;h3+WNq~hPnNEjq z+t{R?dgbx1c@k4J3ZF4Oc)af6gj!b(H=C26ZvJP8+Wc_yJJ!Q#l0BQHW^~`Xb8Y*c ztBW&UFY7K}cI{Q%kGUVs@+Bpf%yE%a7F^+A#Tb0&$Me{$b}}#P79AsL4rfQqRtIFs1cFo*V_;A^e z)ci$(JXDbuB0+kd_?K-ivYv=8vbn2X zZCmu*xAUp-;hT-U4eYneF8|<~_B`-IQ^h~&)v;RFF8h4`K0~ob;r7ep8%-9UW)-`< z@7rHrZL1xtrY3V9b$|FQJ8a$FtLeW~x9y$#IKIQGZTF)L)4f4AKlRCOcX66v&o%#1 z`;jXjlW%){a1@^`wIJdOV`ETF+DGwr(^!Yo4_}*Z+J1{^(Y%)O6{i0gL@KiWGaURC z5;jlj(%RDK>eSz{U&JydomY&Xdvgl&q~f1fmWqqr{r>yk$D}E*qWQ%p6=dF3d3h|b zFjM7L-mU1k?<{WvakzfMEhYYe zLhYSztLO7p_LD_JIX0N|&?d_PI-3x#w&Qd;9ZW=-S8kW$(Y5r_vvPCBbn244G*$ zTy^d1EAsT^qhs%8mVJDA;Z#hNyM#-CUjc)JY<*OGkDcm_KM~g7`6u&X_4@W-Wm6NE9%jA6`TOSad&Tcv-4_S$+xzS76B}K# z<($_F{j^=BReh^(?XQlX`u*pOe}X?&+|qB#-(xY+aodw;ZmH6%wI5FJ-kK|Y?7P&t zc5d&YTsg5@J8!Ky@K3&Ms}1+MA9nhTS-a}?KK#w=9GJZbc*+-&>#f_(-rI2?NltV4IZ-ZJ0+r0DRiu%@Zua$)atg;!kKdiS>X zw!Pb~oZI}PcXdVlv7p!KX4j3HcF(@@Z0FwkW5HQgk6ur*d)D?)J^eUib4uN!Z6*DJ znf@Qu{jQoyr_4I0-8Ly=x8RnK(f{l|nzwC@mpWLPnJBw&{&Q^!k;2BHorx0ntiJ7k zlpB02DeG#;tEIeCc7}VKioIL6?#rcX(XSGJygxqcdB-j8vr*P<98B*f85ywIX6GN3 z7XjS@Dw+K7+4eS(O+kyZ8g9OyUp4))e3y;k8j1ZIN?yEq7~v!m_gpsHKJue@``3KN z%&_H$s-j+neS0l?Y{9fupJPM=7S8kCJ>vo2UaR6RaoyR|m(8vFwB+@w39V{d!naKN zdv|h_hWWbP+VA9f{$#GX`NKT&!?&qf>D%_~GCp@|=fN9`*Z*N#_@VrWZ}5TdRqfN} zImc@D&TMCq`8Yq0U+!xD!}KH7@mw#WmNstMKFj-R>V2iA5TUBD^v0Ut^yPm%w_VR$ z*jMe5Jja_`c$>q=O)Hf5NlxAQ?_G7M#rB|g-{N*vNw}>^Yz|oV=*g|ice8Temwekc zd*5`$59K}Y*Vd^uRrq2+dZ3~|Ll=S zNH^X8V849EE%ko&YwDNZzDrKco#??BIOn?dqyG$o5wG@Xb$xN_WZdm3DN-O_pc0~b z=F-#4+h3JT>-)@gtM6`opSt(`i@ci9AJc5&pPcw`P_R!?LU08$Lr~No z_p7Qu;*%d1OZ%qhaC(Z#q@+AZ;VUpOej9G5p1qIb%Ct+l?1y*N%~a^&T-wGOKC%B^ z(t(u8=X^6Onvcxm&To$@o4NGm#Dle5b-xn-ggn*wv}N7<>-$T$|ICr7GPPZz8hFfR z)k&54YHvO7h5cUlUe{{Qu9~p@@hrz5w$0F8pgPsIQrYfLlRekw59PfLD{sI5EN=7b z>igC@#SeM&7iY`gwyKJ`=eHz!<3Hxte!gz6w4dKToh)TAx0Lhhq^!4}mQ0>@de$rN zb-Qlf%)RiqWWA{C;vcW>hkp_|DJ&L}`sHW8+ziRp^`bR(HHj;|YqgH7S2)OFpz-0{ z?j;d5UK_9E=PK{q;GSsWW1-#Ce}(_t+KNlR4_WnhKc4JzNoPy9rkecjZLI-XP5g;( zou2k2m;AN+Tc%ZaZ)?;l;ojMko@MXu-?jDH@4dQ9*F}GHKO$jjYkl~`9amxRWw)Xa znlwB)b8%H$nffG8mPxf)`Ca>kbp8bAW^K56`!A)HSf6(et2pp>0VvD%>6$Dr-QEiEQuD5b!BsB-rn8#Ioa;VqoqarGQGcC z-|p;LonaNSQg!RpE9+UlOs@O<^?GcTQ09I~z1)40+na^7OB*)cxm{Q1R~YmDuz#m< zg>l>!{k3wc)7~jc-tA+ze;k|N=6<;CM}19ct{L~-+$C!4C1D)=G3nQtKdsr{DyMnT zgkLOc(yLoJ;@ir_ayGWJe=km9Ro?DYd_3`GIDg9Qr~B@H`@?_UXg>erNy*cUL@U1* z_QaI?+I{j|S{?5je*f(4AE&%g-l$-=w$BGZs{w(LBlGjho}!rsAVfAD8!* zO79n1wsnQJyTufb$YX5Ti+@x;%IC_MXEy26XU}cZ4vOyCov<*lc;4Z@udR>PmV4~` z*b}}wTVk^~le3rwgUprXVwawlUH99!w}0E2)mINBY_vFPsx>j(S2g|gH?eiG`djyU z)+zkBf5c90OV{&|uA-F^uIWw&?6OwZQy9L&QJP^26bAa?`)%Ut8pBcGJ`%VY}3vN2X^F z{Eq)+_lB=*0Ym!yV|)Ho?-RclpC@l$XM6tKj{L5VH@~K>zSL7GV;SY^raiZ0f34Z| zSh444>y)NhZgnp?=J9jm>;DX|j;4q8cepr*OgO~A`&q!&H$D8;#eXunH$D`b-7{J} zb^V!dTpEkES~zuSEMS7+br~BS%~t1%o)&FgB7NeG*4*ezy1mbq=jW(=I@2d!zqI_R z_iR~LjnCB=FYjCJTRqvnb-qJQ^rb)YnIHNOm)UXc+%fH#Z_)EJl}nQ9F66#-F7o%u zeKdD{jqxRu`1Ws7JFYC47QNzFf+yb-E(7E9EZ@H_`xE&g$4=;n=fk;b=OdZ}Dz~2Q zo^Pc*)l=@?mE1oD+WK)H;``t1(OjN&T|eDya{2z#Q}cFq==;8?WZj*6w?}5;L7SRD zH<8)Pou@kA3d?-+WvXfUyR~8~b#3`CREVunmYTepUF}Ztrb*>J^Yzxd-QRQT#hRPh z2X6TvuHN7NtNZnZJ7zocja7H+oR!+};K|$k*-h+r?IQ1+x9wx=KC*pNMQcpd8rP)I zoH?J|)#ok$A{zYg`e9lBBUOA$*VgVo-E>B5n$bhYx5p*zwgx}^&v5wSqkf53Qd-&X zmzjhG#kgy~)!>@IVfp0K>Bi&EXKS_}*Ne;dm7TZi*Zg$(Z&h~JZ>qe{G*wwDef;kB z-OHw34liH#-Szj6qWF$kImL%%X1Q$tc({N+kaAa)stAT<1RSYkzpwI`+3+ z`^qfwYjqhR=94sacK*}t+P_TO`EVTnhW`vLpDue{{W|HwnkBvkY*%f*GS4%7AGXiv z#XR{-rJip~v=7<@{%2S{(~Z+^tH6AHorEv%zyEoY-*MRL+}avf`>N}n+q1Rf-d689 zpBw#p;r>VO*?zctebAd-oxb9Dd96+LvYt=Lb~A0R+do{-Rbd?Zqr7lU+$-^ERePs? zj$XSam|yRiL5H(}!o(|m94b#HpXd9r^nq>sp`hDN^HermdGo9_<<8QUiO=mdnH3%+ z&*_=-K|4vl-K@->C*dQ{tTREr)-ngyxBZ%+k$c(ieEjL%Uu6>grLD3Gw&d^jEY7-< zv}T`Z+WKYP;cMG#^e_Bj{m;O0Z*%2pzvTUrzm58es*3zCgxNQk+-H6jXL3b%Pq=h_ zdbj#CwJx{bKTlJ+jFuEQo4IdT^`C*?PX5l1ZO7wg9Y122`F3gUB$t`x`EKkIPl~+e zJzwsZRp0)ffxFaS=#}}~?3KOK1ULH}=a6T&{Z!AjRW9=W?C8vW`>)+KGn(^vuefLM z7Ln;@8@#O7nq2z5SNi(yOZN}|=4Xul~iT+&4-Du+V{QJ zMY}Gqj=FR1W$gP~CnwiLet6%Yvo+P9bEc0`vfihShvjy}JmC2z6Slp#M)bj7^@FoY zzfOI-_3Yat(aU<3xu4GW(^h}n(mz9CV!^O_kc|L-t>y@gS)OSZ{PAa z&0g?jxK-*GO_RXNKD|X@0baXuZ*iQIF+68{tbp4qbGvr*b>D5*{~WZ6sB|)US*)p= zt+B6G^<$jYt=IMC3+>zX7(U4Le)#p;^71vW#j5V^J?x~LG?7J!@iY6+sk0X|9%NSd z_`3SRzR3?}macyM$n%LuQcuTh%d`ZGZ?gXWA6Ccn*RU?WSHT=`UH|KeYtPL7-rf0N z|AjF2#u`!fE*sZ1nb&^(yri;iqj{nAf{Gd1t2RxXP%ise!fyFCUQ4UVh5P0=e|=Sa ztk*`BHGJ~Dy>sX96}z;l_i}&k`qfq6RGSYQ*SKHK)nD}4q`UjdwjElxBa_N*#h7uj z7VqwnGn_c*;-mTe6;Ah$1>Ve@WdE)FmczYIn}rrUpL^t2h@HR(pI!U=a=)Zs6EU33 zR{Tlh?fE#X?<@al{s=pN*y{Gp?&muM?4&$Yp0;l*(h^y-SmNaE{Vz&RO`hwub@iow zv;L`D7x~8CRa;+g_bac&UZUhb1Ix|m+qZvY1)JD8+>7Af+gBJ-HNC|~QM}Q_x9W1} z)#!j-+y66oZQPj}(tG`>YJqufl6mv)35S<^O@E|+nAiKzhFhm=A8F`|J<~T-?zD8M zV!COm{PJhmw~Y^c#eIL|E`PQEwr6p%RpQ$3PbV-Q<@1}Br60F1I=5iClf|tmuR{BG zOjdW%;aBbzg|Lg@<-`_i(mDH@-DBL zxHjscSM)S4iM-!CZFs(%T=L<2>zDgNf4nw*__J&F4ac$+e_Ibmj-UgRstWiY_uX9a zC-K2-Ug;zM8E%^Gx_ji6I_I}Zr~Hhs6n1&KU7WM@M`ih)U7OZC4d->5wdvBSsOXtd zC)Y)9zk2uk<+|oa>)ZFqWPUzyPc$+z&LAyQEy-MNM^FK~4THtn+LQ{W%MaJh&R??l zKSLJF-=AqGR^1o*BmM9!v&W`?=dT9+^IX8M7<|giDs4mjfnBB758G-VE%-5a!Ok6% zLU&&FVn5)n!L?nwc*`7t`xRBiR#$?aSJ(W`UH7c>IH#63uiv}q=)3um>gOxgm;HL3 zx~R_ikLbhoOt0z=jF;0530B>{Rn=rpZ9)6e8m2%rSsJ?iY~bPP(8o2SWfQ4 zm0SNAdgr@bEUnJ9dKO)|q#=gw)3b^T`_8Ptb85Bh@!xwn6=W@+T7Fu-+}}QKx$@zF zLl5s(P58ckeYn`=?W)(cxBa$_`>uB{K?;~x#q_LZya73dq4Bg1AeoI2a^{3XV}E>pW$n0J%5FF@Rgd}%*C(7 zzn#?f-LlJ2!@%9TL*mcwu=Pjpv)!(U4w-b$*7>c!80R!eyYK5b&)I8*7xpAAUHoc4 zOV*1+OTDJP3iR@fbqkBqjtld;URSS@^CzwQU?9iC4=2-`PfB-xz1x?qeAG_*gVYaa zhbv!J|8*_()Je*9x_?g2b4JfbhNkezJxmM?30w;w_p_+=>Mq%KPrE;C!=6?>-6!5f z?WZR?s}&W`5uDRd+gc{4^I?ATm-UR9+rz9T-HrE^OY8Xj^mp3Q(>K)?{ms3cyDmm! zP0h=5dt@hViJALzd->#kzw6t5t$03!EqxHp-}+swTrBl#d(Lsqq_V!{>-QGh^93I? zpQnGty~pHn>GG|!O?*Yx3$JT>kOLK1T-+S5LZr8sw z{`rzl1_gg_)qP!ZJFM?w%yzGnnbPmR-Z^pcjg3-GZMMuti7!WISEsopG1$~Ts;xh# zo&GrfkCNNJh&?9D-$WP8{%N^pZLrJ5cl#7GZ@Gxu`L4bDr>wW2M`Y27gXUlC%N6(Y zgv?X=QU0x7=0C$B+w4c7``bMK>{#~c&_mA$lP7T=ui=j=TiN_0%PVaA{n8uv*4wB@ z^Eyo`_j?)Xc2+lK*4><~x!KEu{xkHO=(nGI_*Xvk!lFsmyLU@0-_>#MXwt+9LJN5K z_$3dVkNdiP`N0qWPCxX~WJq2o{CSd_Vc);y_cr{~tB|!(E&L|DV(sZwY`QWtWvxP@ z&L8G9`OnZkOTSa$qetQj2i5F!hcgQr+?~w6Kb|G^y!%<%r&@dY&mt-twq~vpxiZ^x zrR$QXW%u^Iy7;>E-HYi9*_&((AI=xbv{T)2)zov#>t6d4)rNToeSZHr`|2i(fZ57( z#^+-Sqy95+*r-3aeb+r`a@>_TmL}mRPu}Sr{xz%o@cee~l@-dt*VV5r?o3E>;Z@`Q zmB619X5LUEuHID>xgz7+JjH%bgIlKeXPQ)BoXQafJ&xJ#YR#o7JC(j{zkmPyryIv_ z1|Poo>!`=?Kex7KAKY59xHNtFy8jHNDHr$Huc&dmyhiVNM#=RZN|}OPa~u6_>O`xL z)d_qk>wGlh&6c@wzk@d#E%?0duIKSOQHMWA%@4#e)@C0scq!GloyBLdkryY&a+wET zmDgE_x<9IG&R+D|DAIAobdM!BpD)xgoRfFl@_5vYlUt>-qH^nBN7wW&b&~m77@D!J z^nKB`Z8fXjzq#)_`_kK+S?9JtdfMNlvqo3(!p2Y=NQo?3?PR_xt>}AjS4I7vjrDw=g72n(PF6l>o`iEVoY;8HN z{`}l_$uFVdBuF|+rKWy{%1H-IHh2#=HIwkdF5H>&hFm5GEQ^H*KJ)V zD;587ec0YoI-le9t!WEYk65+Nz4Vj&)KMd=FG2h|ON|_5*y4l3?ReCiO3n+%oql8? zm0i%{w)=cc;r07}K8DrtR#oYg;M_x!x!b( zH{Fc7bKKx}j8U$kk+KILhr+v?+ga+x93RgrDw?nR<&Vj`o@6HxgL_vG7B62rb;-`l zn|dZ)|Csgb_To}W8}r(a(q7&jN><*l0#y!Pw@yswI{r#zlI?+&d*UDNXLWw`_3|Fu zy(TZ!15_r3m2uAxQYioQhc1AzUwJ$Z9y^Y$4=3nrX$WO%OpUe5B{y6%tCE>CHv`3xhl^tPrg1iQ}*jc zYegI86+eW1e$=mwioNl3)|$SWncnI7&#&#g-yS92Y7_c6`ggogtbcOCHY2N;14m<1 zSy&jpyz}Ewe)=+~#_UIC{-eG8F;|~|CK<4_A7qXi^?a+H{TfxBGXT-4VPtp||>+02hw?ucjrtdaXX1H#Gc#r(p@zxny^zWNlo_U^4)oyX6J-gp~VP{64?&)w$ZB%O-w2h6PGdz3CdxwdR) zkDuVPdpnfv4lOOZWvZ@!I97k*ma8GJ9%=-6dq>ZVI(z(H)~&r;^S-^vsqwq`Ps&kt z&OEVgGgDG{3*sK$$hR$6@_;|VFzTN6sp^F!=Jjn#!c{_LH3D!;S5^mLwt-s|ZLZnEM%<#Dcv<7L3* z6|-mGettXGSJ|{>rJqDrd6Dnh%IF{K&sW@CTK09@=~_Yk#v1bnvdIT$ojtd+e#MPf z7w*#M-)@AlZ1K0a&bzP2vzhMYn?4r@t&{aaW6uqguDOwz3GqY51;3%$m7;5nVS~00c! zHfze$AWg?ikvmJv%k#32ecO9~Z_1WWk{@4@_MOu)`yua7j_l) zIj|RPSD2IVq=+}S#_UJ_(pR(8)~=0vy;5dd<~EBv4^C7+;E%8Qw$_fbSiS7}!{;kc zb9xJU29^9wShDWjnt7`(#H@Yy?n~DD@Z0liaua53Kv{)gqBnjIWP-&DM4+nm<4K>%aYRZQEB$UO9Ym z!PNJ%Qctt*_C8s=c30`umshqw_7y+Szu<-VE%o`VU#=ORT;a5NW5>A{+zb+vR;}@4 zQ2w~CIp)LirY-y1rE0IX{@8IvEhw#X=gpTVpIo)?*w3d^W4s{qbA68Plj{QPs;Vjr zkJsJ&qb>bUKsK+weO7vR()Bmz=9Z-Pd8nM2XXX^Hz$YOV_9~oNHe&g%Bhx?iAmap8mzg$7UrS9At$F#h{H&)-6R@9jO$X=EGOK#=r<8>Qv zN2cu16R-GHdj9dtkUfGAtj~*7tPi-jru53?dG{{9J2QDfNva#y>F@1lr^i$?zm4(> zT4@)TYim+J?f%tYpD!=<=61eqRrmE$-KRa$S0k;L*8bXCvi0~&EB}_Q@m*4N^Vb@y z_3EtKe4_8vK__D-u8HRySHb-H%xN zjvD9sykB<`ZYW!O+~|$&n|uCAHd8&<-`&Ty-I6Kyt9jYt@Uua~Qf5*m^L3fOR@dS# zT?~9y7JfbO@vFdtmye`L%qsLV%eA(Pcwe6J?rpC0{anBEkIsH?lK0-+eYim6HiK}U z<((VPcHaDA&vNp^VdpE4eRo}6vhl9F^ri)z+N)%ko4gu4zuG%S$xGEq9(|DcXtUL% zJ10JJ8cR=N->!0Xt@8n^*!hQfwd4QY5EqJfk$>~_U&WQ4hQb4Xw31a8+^K$j>3;vu zdG7ol&A2;P@3`duJ#)$O)sxG!-ktaTwK`+Qe}>jy@r}wK^p+N{zGMDvxqVsyyUpa2 z?|U9?+$Z~D9`E&<gX1yT%Ja#`t9E~=fB1EKM=7tHuXAkQ)!YRt;y=qLo|pak zxaZrStv}M9*49=1dR6V^w@=RGj;^n5?4v6=Yp#TASKW`5Tl@NI$cJf-4<+|0L`S|7 z`Y9EXS8nDlWPD$J-rxEKOMV>8ez-d~E#r%l`qtk63?&g0Jie$1)GKMN-QMz_Ve3D| zn?I`kuDGt*US#8GZ5HSe|s?RaYrz zyA@4;UhkZB=g!xHEg7q~ZYq3wH!3XCdacl(?fQRwKP+$f(*5C{^wm=B+m+#}c}s(o zRGxFUvNJEZ<1br$ZI^BEKheL_59^v;_h?zSZ1wL?{-X0gT0guyz4gm!<-cpDUpmip z;>;xBEfX(%JDYm1LfmWm!)Fs8owgS|D}USOV&Sq4tcx{{vPs+Uth9Nq(7)Sd_KKzF zzWp(~9eb!Jv1O|L>R{i~Y4bMySbyeDoyga0*F{^uxCeij@AV^VAIr7(UvF+)W2ttR zUGj0)^M4}yn;-pXuKK6kVB5HILrISRC!~AvT)9{M1alIIazh)74e} zGcYi((>ye%^7ga6zkilr`7>YVq0fEBd8dt5{k@lVyJyXP+gn{1U#Cs$I(2)IXP%A0 zeZd^Qh0FhLcdK5n^+>d~_sRBC9tlQEi+3xtKYe9&RbMpIj=%Znq+T)a!^?e(cbV*% ze&*9;l{YdeJ%yiBK3=yp%|AGg@8Wx#(#&O9yIybIS?gx-HE&@)e#-gwS-^}K5T_RTd$m!A6?9DSr9t9Mr~MQ}ry zR*Tx(1yi~F*wxkddO!Zp(7r3JH9561{juAXh4Vzqw*9u?7tWPr^Lg-j@^^Qc>T5^0 zH`G|>e%K{j_%$MR-^2~M{VM$NS-z_>SM1;YPrm4}U&O8{Pow5e+7)wa+wHPlfj`2w z?VUQQw!MPc_k&Q4-4%WPr`l_b(^vu+j>lySKU_M!G5=5Kny4S!uGcQUVSW3=+NMoS zZ0v;-Zk|x+-9I&+xk931xzF|G+dk@4`G2!oEU~ox%x{O<+fH*IG?{IyIA-?!Z2XVV z56|u&se1ayTBqq&SaDY>iOSVOKNUb0iQ`qj1BuV1fhS@uz6@9frvoYm)Eo%S{r zJ#}~Yi@W#l>K~pR&lvIJv(?_6Rw-Jy8ImHN+j?4>_CDTvq10c@IXm_DYRP;-#=A`` zVwg{STOL)B?=bn1?zHYzS(k4_#KzRl^WNd-lQMrwWAl}Vl@ijMk7+yQGi10wvXPRV zw!hGH;T-<0ey1volrx z=-V%AOiIQO~Pm<6pc=W!W3Hh&`8gFrRpN z{AI9Jm-qMnQ@3yDzj}V=`Jcdshmk>ke16_DO&3?cR$Vsl`=Kv;*L2BoUH-#g`Qdu# z-m90)uRXpJn;W<|h{aXl`SKvoKdo7R?6>@=&wsEt?r{KXX?pz~)&qfE$A9>L_*oOW zG+R7>mF^m;viEmS>M_q@{`CF*t8C@N^SCD;u`~DQetGNC%gZr3y~3xs7fW27JN?E~ zmM0VJf-F_SCiUC=tp0m{-t*0k$AhND^Q4-d*)sLAm)EZ)v%9uLg=M{cx2~`Gp?YhL z>ZAR#XW2XQ6Sr*ixY=yR=J9s&@#Rn7N6Kkm+M~Pl$3JQ7lD5~L(N}v|f{Ppp*xsU7_Uhh)x2=@A@`$jNUvdR4B zk~^y}&ppEb^v9JYlb=7on0e*TVVjeiZ$>>{Jjtu26j5?(XXBQ$o+4?aqGxbzl3%qDx1D zN@CR|TwlGJ)Vn<}v)FoX)%(j!{h40eE@xg7H=12s$$7H3|Bl72;++j~ zZftKR8Aj}y-*Qi0`1lgF{of8<=jtw)@H3g=Q-SB}tZbhBmA0T~qGH z=*jh`E{@r?HSOKj>1SVT-MI0i^&u<1?z-hpA5*U_U%tibkmbTaC9{hYVr1lJtH0~B zc)qq|+J6TAEfM>qmUpULdHe6GCigej0c zddg~RJAO#-GtFnHKjfTTnyoic{G{?}Ww+Z06&nKh3f!aQORqHyM=}8 zNl&$TlZvjci?2ExyE|iBT*`c&J-QFxR(`FpabBAh6}hRuMn1Ll$kWXY^-vDfa`Q$ zgW&7=pL>EnY;Q5$n|;*iN3qM*wTb&HmP|9OHlH@>&B0Wb;vIU=4zMf8%}`rCFKALv z{PXp-K3BCOvWnIQiDg~Crh9nRmbkNPW&gz${Rlt&PvnZ7`puV8XWC@79-r|{?LAdl z9kL^_KWKNw@q2%?Y|9VL6U&!6y7a~!s|e`^n`=}1!fiig`E%6RUHw`wdvH-qmf6el zoz0u<1U)Q%A762-nrr<>?!(#-?+Z$sU)d(Hl;iVCy;a7&HzZZ~cF4?0nlxu}SI@WC z>;CRvlJVio(zjXH7Hqvf@zYD`)u;2;FRs^)x%%VqgZ=CkbWqZs~x!_1~ z;~d7fv0vA=x4iw&kbXDpu}99GyEkv1Ug=WUap%m^@cXOlLZ9vztYLrD&y)3j*=wnJ za|`O9PQHEO><-~i?^tS<%NF?A{<^-z{Q>uRo*J%?GSjCYbG^Fu&5~|DZlxuUn;VZu zeg2&PK;`b=ALV7=AO9`2IT^InPhc*W7MGvcCBbj~^L{Pa8n*k=>DBv=pZ=%RWwF)M zW>MMpvnS6N{}Y`XC8yAR>dKRN!#SnWyZW=vuiw1*kHs(f$Ef4==TdccmYjz=vuTIy01}**IiGB7~ zg>xfJwdAF)R(<*7*Q26wUXbJZ59yd|_pXO;`^#Vbaej;GT>S_8+u!CdnP)xyn%?_` zmF}uGvqRbCX0mtfU0V@-bXq;{m$$*8SHj;+UY6Xca_;`Wt&u;vS656A`QiNVcW;!Y z*hBqwk2>Rmd7vcyw832$G-bVu9wHjZ`{3m z=k|`1np>r3hEJYgHTmF!l*_(mk45&Mzr6g9@LH`2%ek(my)8}MuN_z~yZ7C>TaoNN zHkK=1+|%ef_BznJa?eMeO()!Ld@9^A$$^VsW%6ZH`~EuFABzvqI-R-e?AM;p#*7S& zH=CO;mosO+JaE1)TRwPp{71k2vU9G5*XQh<&tg+EJ=medR7{E1zBUuD*l zKD|eW-%hq<>OLhHcn zNB>c)yL0#7&iTsTafBzxQ}RZ5o}2V?|N6YGdmpYBs#sRv_VVFx@9K$5qj%fC7g%xU z$i`Q;zS`9m<|=!(rE2v{ceG@l^Spg8)63lRi?40YrK?}}J^Ew&p}a@W#(dRlvli!6 z>7?@B%{%yJ+EjmhAGuF*_A$>@_cQm&Ha+|IbaAE>cUt1q?!tR7rSj&kyb~p6SFpA5X<(21>@G0Nz|R=RmmwY+XDOx zum7mkczX3*w*T~ppZK$;T0H#lspjO%C0l&$`(B;DcilVl`^2b<`lGx0yLH|?**xvk zzjW!KJe8mWUt^xgH8eLFzm3{2WMln^pW{_^{<`S58)}Y5ZvNG^c2#zr+V+n%R?TkD z{xei6v>i@g`TBm>`H%BGI{~7K(bsW7iC1?7>?Rnq1Hn)k1 zCTe<~UcF`g*_6v+F)Q_F-?;qoeVd&^=5%fT&NX(Y_m;aV$1G_IJ()0Ca!}p^x zSNCu}+N*tVnpE3bZFk-y4u|`9_mrIn?KSv%@=wSwv3dFmGoo)Dm>9ig?YSci8ed+p zMqaOpd@LJ(IPAjR%w1ci3Fw_z`rCNMjxRa6$}cjl&qi@Z=5Bvvp^^AxY3GzVOSbMe zTY2AO$#%cfap%4JFYXb4)V;pl`N*%hwaaar&a3V{W8@d+@g(@btp(o{J~ub<*J;=2 ze`xR862J^jF*N zTFey?xRA%?+24C_Z&^jzT>PAh>W%Y~Tpq<4san)0T4o~7{ zC_Ionr|fvu!bkl46-T#zT=II`qDxN;9A6!L2R3X1Q&VpO)U^)YP;0zq~CDmk2M_ ziu3CFt@Z2GdfnQ0q1(FGJ==d&pXbMF$L(#hWlwvKDV$nUd{BOAqWi;oIsXT*Yx5$K zeYH~AG^O00D_i{DvGn7tI#mfe%eC)s$A`&E&-^KZWp}W zWWc|zUh1`8oy^_Ldfqi#Pks%lSZBORbn>&fCy%$APJDd*`b1sF zcE_5|=;Oi_arYj+(UbQo>`40@eA?nca zp0s_pct6BcNmwBZRo^Q>NtOG|lN zJx$j>uFH$~>6!Iy_rBTsX77IpANZ&GG5m=Bo88hk9?cb<`y?qmLv-RtW0z|t?*+H@ z7ngrqz0jiJ=?)z~cKfJ>3w~@rGU4^(pbN?St7jf&H9O&L@Z92fTuVavf!Cp5XU`Wp zz500l%FOQA9?c>rWj0`e>GL* zQg~s(_sZGdYwmvi7hSSH@FVv@JCzG2x8vWI8*DzbmMfV{ScZY!v1{eZ3htwV70R9; ztzJi^o}0YFb!VZXup&!a(Bgs<$N0}!o_H*>&+58O{;JytZrz)_My0yURp;9#ogCQd z%*$E#ch^7U-`;&eJg&Svhz5-jnAh zZ!YWF9oJtwcal{-`w#vj>JRr`+q0|5H9=KzqI72QEB89X2s`Ev>YX<6t6m#slz;oM zw{^$Np66UY?>2b6{9e`bSBux^`|a}^g&!#Cco?<6cVuV&t@_JI-+&IB@MPNZ*(YAfrLF!?m5B>SQXIku)*SW5h z?eg{NyZ0sAUhdh&-fZK$y5i7vk8RU9xAH!>=G0naB{(Pj`Zlfey(YfJhwGHRE8h$1 zE6+?Wo8`NzWr9)k2HE0(46FHFCFdoNTods5)v|W0&78^eKmXOT?{Gh|-D;t4+`ag% zXBC{*&b{4v;Dp_?rRJJP&GvIgJUIG1GAur*!ZP&fYV9c9)AMJ&RKIn$=5}4{e7TDH zM{IM8MeH;$-8$zPU^IPqTO7yZch=#)>wX9yvGQ*)x$7NxWqZ_lF$LGe1F{xxBkk;k{2RLznq z72h?<`@`4$6JH-IJm_ondCF6jb#HD>x*BD(OZ{x_yYD(biVxqj-t)ot-S&k?rq4=U zdve>(kR5_sa(kY%A4uG?-pMao;=!!)L-#pFLL=AL#*GF27x;ydkq^@}!$iH@N2+_wTa08qfK9p3cRsvsZk{_P)6;wyrRv%}wFs zq4nyY-qdQxcLnt%ZM&ZRXY2N7MUGx`wMt)|i~hYm=xOid?MB;;U){TvyHNGn#cgO*+1(S?6#B8DGA--|Ezd`j$PRkNSn~WzLh^u`T;XqVXnQMTZj{EFUKyuj5y#`j~wSJ<@-mc+nI0g_uo3nHz+J$ zRrEln1kZ!?{qj$WL-r)Es#qL+Manka_sWCaD%z@dc!i%#Fl=X@mnD*FE@_?lGF!@T zE00Om#eUPLwNjI(n{}G}(hpsoas6X|)1UMuFU`zvExp<@&3wa}YnNOL;?H!ph3-n8 z;P_zT`>0v`%{I~Yhh46z7V}MMX${S3I5Mf~_k6E2A7lRM$jNWqekJ#5+pT*ymA7}^ zc&g0Zz*fufb=Av9{~5%hEBttkqJ14pel8YvWAO=SzVM`ge|yyQs)<>e(NA}-u{7A4 ztaWMfj1GC5vhMrd<3EfK-qX7Ft(Rmu#8hVetXE+;++UwnsnQ){>KBs)md9JKFwapu^Jln8+XWy+4 z8dE!Nsob8!SM~StTfYx;|1b5Hf2m(XHA;iH&=h_ zIj^|0!M&cvH@7`3H5Zxs=GLWOuNQk=`+0Zz;i$Fq`*KUHdHpQDa<5*xrE__bz^OB$ zj;SmSp2rF*l`SNdtz$p@XXuJQ((Zoc2zTkX#f)}k9}dXmvy|CxZhqahn)TWKl@+tD zRlIrk@78o~EjDQxqY2IlpAR1Q+W*Mqqi^44*|T?aznwQoG#5D9`FMrwE76Ck%gt-; z+%^RqsrKrge>1jvrD^%nyYseviv7zs|Izm5()+y5JXY%#q|AK8x4z2+~zUpxE3y=_lo_44?AGuD3d@XT)SS9NEe{Hy;!)kpD`haVSJwAET4 z-uCI%Ad7)%Sytm{(kRR5Pe}+?z5U3`)-|?kt)5RfLoh^U*e>Ko>A8G zJ{!wNcg-Z;o4RJalV$0e#AN(_{=cohkF3vD*^3`6FV46WH}jKn;I#BN46i(G7%bHr zPp-66sd2kn6Iiru*YX*9Z~rq~Jmb?EE9rNswW^6<;`OW=1{b$ghxwJmf@ygP; z#k=plU1^@0E;4oA{-SNuuPk0);e6C=TbcQ+mXEbv|L$47RXNNyRfcJK<_iwHeN(Ug zIDJ6sdix&5Wp`d#byU1l;1$w-o^gD6)^q)>{Gzcx+N_5Gg3l`YYhd0W*g zEJiE%(27&5rkh+_b$ROhYB$}t>3RPdR%Sc=sDG>*{qWB{^$okWiV2*#xa-u>3f4A9 z$&(KX`;Tq;$Nxh(_#@xam515ZO*_p~y(BGn_5qe(pRX;uSmH1BGM>-w%7WW3#e<9| zEq*%jum8#e%yw5BAN=N*jpKECemG3{o(fOc6K92>X30C{0*06O)vlT|*X_~T{9XTM zNjgnB6x^D*{p{L#n*uj^F59`aylTDavS~UuDvU#~?Nf+;VP*SFFLlDY$0saoKF_l_ zZ}VkYP3Q-=g%5QLUhbNfaOXu|p zyPfCkqgFrG^*$Q4Z?ST=Ro#;5eXn}97n&4_sWT*g$aE65T=Z_uUjEZN){7o7Ixlt5 zsc^xqEVHRgvx{RRZ@qV4wdu3f`Obe#*KBliS*qs#tW0h30A)8>K5fH2!jI#BION#) zOrK`-Qaq!~ewH&EOIr+sJ4?dnD}sGm{L(QM&nm^_1v0JX?&g>}&Aa1-TM(mk{JZTe zCF=VZuFc={bI1Iy`3I#K&Yzvd4sm}p?mTl>$a|X6=mKQ zXT4H)t=z|lm0iY*CP=eO7f%a3DPR36YgzvzdC^-h%nc%M#h*-4HS|gddL=FSgwI{} zSCQ8H!(kt@v%ddo>&z|MTsz~iF;9=%5o0EH`$KyRLmoU-*Xpd3+BfZ|#Hx*}{X`1Z z1y21^HtA{a+;{i-qrXM#N6q4I{S#dISfXUNQh(i(bxEolFW;#5s_!rH7s%MP>2`d~ zqPt5P<)KXvWD)Ub-Gz?E&y(~a{^?kp~j&0V@S_ujhqVO#Vo-aCE# z*RB-#qwnCtcpW2;be=U!ix2$1cc=gItj!PqG9NRa$0pt(Su*2icPu-O(%(;pEalrZ`@d7X9*t-vJ-w+ddGbZ(Mq_Sd)0?%7pX-UcBK3DEu z>0K!Q`RA+^$GIc@1w*%|mfa5AocCv~-nFf_cJEut&($w0YaHC{w0Xz=?OUByZ{6A! zW%4G{kMkTK({l^kSL@qK`o-e2FZ(7Z-Op^~`}}<-;zSwom zwuvmuWP>EGr7<_His7pl{#O`QBmPl8=tJqfWv3-N-(5dFac-^SWBbNGEBF2ky1xDo zYmvhKvQ<}B{LFu+b}OoM%FgQCeRHc*Gd5Hl-Q#!5uBYvJ;2!JbMpeN*%Xdh3NHVKW zz96-D{mVH03#E(yuFm|X>tg+WDg z*-KN)cZZj6TN!&Zdu{8-yzY;jYjfBCaa|f4b^FfoU6$+A-0tje7WOQCcwfr(L9cY= z8R3lW7k3@in9;9stjuWB1pa$r0d9`B=P`Uv*PEAIkIn z*c|au^;ze`a_{bo%zhj8?2DWjZrzalsd?^#l*Z4c5-azZ);|7WBVVdFdvVt0mrVY8 z>DzivE%}%97 zx!XtFmTCkpc(P=c=dJLr!g_J{b$dnkY}I{HC;YMHp2gHNpi{~1KGr53BLT>7f;o^`^~v%B4%JYOa)3cAg0%l1>(-egBD)v>jj zB0SwV+Eg!H*Y?S^X@BDvF8|1W*j}JSGHL5a*;&V>kF1w@^fXq|>v`kc!XWz^}M-{F5g#VuwklHzCWpQS&jSTV?|LezkZ#PaWh-f@;uMtSk|0*8XxD( zEl}e!@usnZ$G>Dj#TuDT@5iDPj20~bwgd^_g|0S?UFX3``hLDZQLKd z_50-Uq)&Wv%SrWfMth2kD!x57o&TWvyvXg_S^DR1jbP1PlC zz55hpzI;)XRGrX|`ZX2pk9eZk=GJdZJNLYdS>pTgpMNSAe{?_ieV^P%?u_qIQ_@0a zCQS-U2y|2sJ1@(4Huz#`zu3(meb#5Ku6>gJe(vhIlU9!xDm;q)4u3a zuZ>PDS=~F^<5ci^@Xr>ing*%Kq(he>G{&M$_a|%TwhmkLlT*dUrDG`qZzt zpOxAP{HR?2pWzU5`J?{r?xLGdZarkiU3lQD?SBTV(;w7ZYa-X5T(`e%-P>ESW`Z^s zea)vnTgcn$_99~HF+O&ii2=9IKE6@IwSC&J+`rdaE=l}(oob{|SCL>TUp~2qkFEG< z_y^PVJ#o2Sv3j>E9&4~3UU}lc`Q_KYF1ze|uIxX9y;G>i)gFT%uf)~+xk#8aq*7b+NI2i zhv%_BvOjReiuZlzmiOX|Uv509`!j!vOI?C(ecVk``To2=?kis9m`Ycs?w+_I+}<$% zxX6^9%SB6nL>-^odA8_|YUG3Gp{p+4(mj34GTv?N(zUg^<(C((eO%8_aoc6<<}0Q@ z*DUUPWvEjZbLMT|O;*>y9sS3@+evptmb~6sa)d!;U&g0{$2_DvY)W2+?MYu*aj4da zam|tgI>}iccUByK8vfo+D_)-Y@I&pEPfE?aPpxtbCr+GD`9z>zO1LP>)$aZ!%i?nq zr#@R={&!)@&d2MGb7RfE?JCbY?Q6Q*@Q>-DiibAF)vI4@TVI+qolSebTEM=@Tl{Ay zu|K@d>Tmf-o+;B#>*}5mX`ihV?mMli3-Z=;WS4mGaYE($uo~${^93VbRPCF)eCzES z@w+@#VtytzC>NYO=Fc$k@5Omn_OX6ExAnnazuzHS+cL@;CY=d>>U)QA{^`$hi?&Rf zZX9;q`)zG?R+WX9NWqOPFQY8M{Yo`=wsn;i)oj0dcW=)0gor(X%PY>^({}r8>X{~R zSnfm5r)dltI)#(`i;OR?V_g1d_Ic6!ud~H=FMl zQyUw!cCf5-2e(@?eByNM`}u99jqPK9kr#G+yZf}O zPi&bvW65QXll=;S?FL%hslNKb+5&z3YCz?v}`Pxs!_3?}wjYDS6V^ zAM-opzKD%!=|kD9h_Dadr8##)Kdq_TI@$Jlr^$Z?A-4~1=WE_Mt;ugwXPLL-dDr^K z>>o9!oLze(=9nkz_g(LfKlc)t@{~7hU-rB0v-S483|Jax*z;xI$H`eyrh0judeiFC zp7+-ne`NN|5Iz#drjgcR6Fj>$HC1~aTX}U6yWO2@+nVzqcjvcjgqb&c{+6Iq`mNDUD@L+5~RniU6T09 z>hml9rOtj!a#@#8f4y?6W$>Y}P(xAasauP7h3)>4FMDm;-gWQ7KTN&fxAseK*kk9* z>))+;n7h60qW9EuRx6(L&nRJEsLl|Y&zgBp=h`0cZ*R4(J=A+Ub@tSRS6rJW_f(}@ z9uJI)=l*(L_+?ev&cemcid(N-6nc2z!7B0N_8*jeKhz)5O+R>R+VbMOerd1SX_NCp zL;Eak+5AQB?wpgf_4R)SM#-Zg-vZZ0E#F;z)OPN=%X22}dN)09Sxw=ORr+E&QWcq7 zCCyoSqxqE?CoR7Jhd1p<)Ab{tUmdy~zHyRv+XPL|6qd>J9B+AkT^(iL{l5O8{pGE% zHT78UZoM#*hsRk=(%R3yTZ_hT9dY$?n%VwSO?K{I zZ|q+z`8HMZA@uI$}T<^EF}|CE0ekN7A*HFK3@?-9XP!CeBUc7X1_oMj`t zBx|}n%RhC$ZAPo^>rKhs{?MmU&+m~@t>v?wAEzu>p`Wp4=gV8aYIofE`A+GK_9=r1 zv!}Y2Q$l9#s(ZU`-P||3Vs}S;;&pm*_pZqi0V{@TuJ!)2EET6Nn#yH0N1!@b`;F2h zPu>1g+J40=HA8;PzJ5hxQP*OFMO_*UFuYct_nv#=x~Mp>g_G1zo;dOH`0L24>mOX- z+J984X8I~Amg&VzwT#MNkGi@|k*=M0`^~vGn`b`G__SrdNzT2~_oDVIzliUQv#S^W zqxj+9Ql%q{c-`LnJ2Wu1w%t7buQg(qf3Iorhe@Xo8{SAeC8;`9mBTLg-Pt+ce_y>) zlX$JhaOEG<3+uP&YTY|^w^Vw?60XJi7TdS7p8WSQMz5AlTRQMZ|B^d3=9@o!u`1mX zba2w;R_PhPXZ_^z`#7sV(th48`HiWDfvYvcGKXxXFB_ov#a7; zR4#J+i_KM;p|bGC+4GVw=kd#3`OnZAr*hrK{!#bac%Mx>vUldn-S{&{%P{EXiPxXj zzmAgUtEtXjRN;L@%JgjOltuqar)hT8edW7jaNc(ZcTf4?Fm`!Yg()HGu(E|?)s@$zkIRGUN4+gCTG|lB;cXX z(mFA;$n*69d9VB<`m(R$)b>q_4P27lDlx@sLP+)VP~Zd9%;; z*ITx8!7ab4SWVSxm35ac{d%3PS{)yLRL(Zm{o%jPg-e^(M5WFt;Jl{0FCmn<@YiFL z^Spn8y8V7s+P4YayPvamdJ)^3zuCc$%sXl%OCR=H-FDg#UHPa%=lz`N`B7&sZ1rdL z{4iC=)K=(HZIN~-k9km%o8aUFPipoWHu!V#RkN-6xm17uzS+5-?A>Nfk<~H@@~#Wp zC${vXwRirOt@)|R`VZIlmY(JM&k&WXDEYQjJCOGf$3d3nsn#2hF`G;N)BBTjykVb` z=Y#(YV&_+!%op5Iny^}{`T9ET;D`Oadn_Nm=g$^1erdM(d?;8&C4%U=|qJvB{o#a7L8QExNv z+M4^SZdOZ$GdIadg;jSTemoxc*-Q0Ux(~7cpb&Ibd9fBd$#P}l{v@d7`gkC zuPrS)c}%Qk`_Esq|9$IP9aq%9Wm~U)nc1c%Ki1bz_dR`Iuufxn=a+15d!>7#TU*@b zMKw;)nm7L=bD%tT&L53wXReif@>be)%+Gtb;d8mKi$CW6lk>V@-uh*Bc0w{+`lsu~ z_GRj_#ZgkvJNHQ3=QH_h?0Y%6J)pC`*5K6@ufV61!gK%GMd`mf=+x_<=@)95G^xxp zo9%YZ`C0Lk^Y2;gXZ!I!?t+df>t&%A(OwcUo+3G?7E4-pygYc`)cepr?JH|+3bWTm z>fF!ivy9SR;i;`8aq?HtK6Tjn}2=cX^tyveTzeUW9_2dK5svpyXo22 zH+^xZk4H^weynoMY)^Q?=9Sv#nN|KWyuY>b$MK`z=NVm{m7ZK!TyS^ytXmsDy7o># za@IJ)Tf2I;$GU^F?#1u8C?`|kuIQ{JeoT9OWS;EC%W9L9MVB}#bN5Yo-y>(ce&C7t>z--0)$^mgG+lSzz5ns6tk>qL5y6Ld9CeMocmC$R z@0)#NZ*O{iq5ENb|I!P41lME~-t1n#-6wL+@yX)MPuaKo{4+Vv^e1@wq3+dD&N7bg zLsq{JoWOr=>mT_?>p3E8Om|&gXR>3-)wJBxman!pe%KxHVej&u^=TjN`mgUD@3mEHG6vb!}SZndu4PoFK;fYS~mIl_q_Q>OV>`@b~|_Cy~u{b9<)&M~qD0mW3zJtd*^;m+kL7U%}Ou z+CML~<4E@6sgt%|ojQGQ_3d2Ug~`Y6i{{lhKK!k#_Q0(>RenmBI7{-zHEWfRMxCy) zi)D>^_UfQs%8nK@FW3E&A?F!ASvOd3wDnY9{A1@MfA-f-=N`LV%+-0;bi*kn;@Ibg z>aXwWjl=b9(jVsk2osy7x@;;-_{LA)8Hy@iep%#a)2s6C?dR>j>;E(G)L!K(wcVl` zcvQ7oWm4g@{d?Z4t-p8u$Cg)#71598K5KsPdOz=~HGy|)&dC;>y>0XD!L|Cs{*te% z#Jks<<|?U8%kH++mCj1%db6gs{qE{{LLciU^EZ9n&!26jHhYD$>7|&PXA3zddBkUi z9edMY*kr(dFVC-H^M~ojX6d)vxL2-tB~`ljffot(m@M zN=$yqn#uFEw%)xv?OOQTVtxOQOP{yfwCQdpXSBS z`xiCqTxjiDtCBTy*QbkS*ygLBdb7Uz>(xJ}e;aH`fQ*3A5B?56GPs~T@@ z*e9J;C-~dFBjKZ2JKJKOYp1>yojTB=7Ua(1uG%a=d)t}vN0Wml=X=-5MJ<+^I9JPX zIopyaZ!UXX-sL~rGw$^6@=Z6I57`S&KYY)w|41i~(I!L1n3|oIYyLBI$64DMUdt=> zyk?SFnd*3eA-KlopR~Wsf&4cQt>XOWaxLIG<*zJjl~T*Ow!VA19na*DN%0&n!*1nn z3=mB0(UkA_F1bi>sif=8`@Z(U4~p+GS8huWHe4C2duPp-JwaXGvA1r$UiLJ;qh5IZ zpXjIVwQ4UD9XVo(c088&H#ObkV(HD*Y0nVv;6SAeM@cJwa1>@c1(L|=5l87_vCGw zr!M};udco8qgn0s(rTTa&Gl`a=kC3|dv|UA?9G>xCHE=%CVynp7l=L7^f2|FnCpY> zQ42r%AK(9BT2}BYak(Iq`PF$0qUtSQ-)hNs&Z=9!;`WkXB}JAyIv(@Qu#o?L?cUV# zV^aOi^N&ru`%+4^x3zta^ocf62N9Xajc+tv-8f^d-{)UX_S&?zW3H=TVc<2Jvn9K} zhc5kmQ`cPYkH?SB)fJQ7H+#Q!>$A>qDV(pL$MAL4`HxxE{R{^m7F^`c=yPC5H(ma* z`RG0AYm2u_sm#nXFca1zVQ0=(qo?v z)^*A(;8`_+ueMR4|3r1@`L_Flx_=BG?LO=F?v&*75-p+BbH?}CKd!ZB`|brm5mR3-O3((JowtPXt%4b&3^{FW0ON)uA2HhP%|=X zQnuUP)7#Jdelh97#*gNYTIT6D-98r)ezL=DApZ+yMNR#gvZU6S+sR(YDfw|be^zpw+ zUT-zI?JMjbUEPt$Z8P)f?Q2t>thrLU`}bcHeO|9cQ_@3MY!#d2?GbBUURiqE`_-vw z_l33``H?E$w&?QPsaLm49_l^*agBfLe+EH)8{Oh{j!E;%zx8OXnQ?auPm{yjIeoRQ z){gT0@9m^!=lUP^D*chS)G+RN!HY|7M`SiQ8TapEPM0`wEIa?9+2#jxwY{#fZCtkG zy0E6$j|a+CkJiOZ$aUTQ{q1*|D|H(?dQ!s-19z82?c6I|maDR@YTxv2$5j{nxVXh% z+I{T|@w2Ua4ygF=KJj{9vkL#I>5uaJmV9hmt@~yn&*lx%0j25-7((}R|CsN0(N5*& zt4+6@OH=ypquuI<-RmWeRxf`MCY3t*jKtyGyp1bjo-;7mu5_QK zX>IrIXI^Z4ZrDK6Vp|IxaxV$!vXr5@`d6xqot3l5k-_2;=#@son?U1=iW9KISZq zNOs-9<#}&^iEz(vp83~y*|*Kp`7mwrL*KZ2psR_V{d#W~bH>v7b!0t{P4L2u`vS|a zY>k$9pDT6Fs;v&U;FnZd*{Brc9$pm zKZ8t6e8qeJ>x%+auZVw)Ra$ZGnLGdG{azbC>K~12+qzaZI(U0V_X*jPF?@Vk@7mY@ zNcaBH$ouQ1*~;Zhmi{|6vBiHG`-KpD@jw1ce{_e>d+fKl>zbzjX(2vV)wD;G%KmMA z6Z3QB<<&u@%I9;hu34MyboO)Qw+lBv&Oh=yHvf=RS-5_`g zarsR4?HAYOnOxa5DPzh;O|dt5A?F$LcnUx*u645?i7ox`>Gk1lf-mZ1H*DSGvH#L? zfptG)z9to(Tpd(#{m|iuwd*=_mmZY;B(wK`yy3TBL6gI>%&Y5UP4uQ(^(|2iJ!bao zV$`d*_wr}%kJbD7qIhD(>m$F`w=VwhCE%`iW*#T!hE~~r^{$m4{xclC^}Y3-X|}JG z^wjymA$_GGDx%WcdiuZ5-dp;gfn%R)MxE$~XIqm?mmDrHuHssuUw!wN{ixORmYOirV_PRlURN<>czZx)a^IZvStmYj?_T~f zZKdv&GpW zl33jIGN8_w6mFhFRhzce%`oMdS-u-ugcWfS-*b1 zih1SfC$L;qWN~?^_=&%7*IZlo*LwGa8oQ5Eug(2%J>Fje3$M3P*tJCL)W*LnYj%3;I}|s*z3?w|`;v zR+no`iey&_k6rcSd(f4CQZJ<>H|gi5GOdcqIqZG>p8CG3tMT3QOfLR$U#)v~+I-d} z5&=oBKMSlrM%fwtXkC;wkMnZLY+IvyH{T}Ty0qZuoL{rl-b=gM{`+uPFKSika_J>o z!s5=mZ(D1fyS(mbeEWPMle7E>XU*%oRl8+#?9-^QfJpxO<)%|V+&^aa%e`m)x}}#B zue@Eaqq=RsryKSo82VX}5kH(q%sOZP%_F&Uq8|ze_Z1b!A@Ec!9BRYV@P^ z{qEhSnqMXVthnXBcMAincl{$-OVFukvu?ZPD(&y{OuEHkm?wSxV~}g~kM1=UPLGcy zeLnn4v~7Ck9zotM+7b)`)r>E_xD0!u{r>I`_VIajb#<7*oRFaH#?k8erID|{N1ZNu zf5cwqNAr3-F|6qCv{2n>LgDoUpMcN>~`tCt9ov4 zSPwAUFlZ%WTboTe@sbBZLUH8w`p8d!3n2UexS7u5T z#nevv6>PFwSvC48^Lqb>tL1s?6z~49kKS>0+Ku+fhV9errwCc4e4NKGdbz^?Xr17e zANl2p#mn5)RvW*IZocZiG~tiM$Gy|rzw*}I`|Pu6|As4XdUU39?$1t_VJd7|+W2^m z{^P=|pxm{4OAJ>_URo@1$n&$=nkzwbuf03>?QZtEHr@N(&-Z@3Hh*nY!}Wms$4dnQ z=j^g5>_4@|Cj7B&)bFDcv%{}llI}OL*PJuw>iV{MDj$w@Kkk1keOK*Tw9Cl|QKsc~ zhd=yj4fyz