From f6f2170369e99965a35175f4b65e62eb5ddb6305 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 19 Dec 2016 11:28:24 -0700 Subject: [PATCH 01/70] first draft copied fix_momentum, work on the Kokkos View types for the arrays. the next step is parallel_for and parallel_reduce transformations. --- src/KOKKOS/Install.sh | 2 + src/KOKKOS/fix_momentum_kokkos.cpp | 181 +++++++++++++++++++++++++++++ src/KOKKOS/fix_momentum_kokkos.h | 48 ++++++++ 3 files changed, 231 insertions(+) create mode 100644 src/KOKKOS/fix_momentum_kokkos.cpp create mode 100644 src/KOKKOS/fix_momentum_kokkos.h diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 4f1d83f29d..02d8a26311 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -91,6 +91,8 @@ action fix_reaxc_species_kokkos.cpp fix_reaxc_species.cpp action fix_reaxc_species_kokkos.h fix_reaxc_species.h action fix_setforce_kokkos.cpp action fix_setforce_kokkos.h +action fix_momentum_kokkos.cpp +action fix_momentum_kokkos.h action fix_wall_reflect_kokkos.cpp action fix_wall_reflect_kokkos.h action gridcomm_kokkos.cpp gridcomm.cpp diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp new file mode 100644 index 0000000000..d2d3f8f3cb --- /dev/null +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -0,0 +1,181 @@ +/* ---------------------------------------------------------------------- + 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_momentum_kokkos.h" +#include "atom_kokkos.h" +#include "domain.h" +#include "group.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- + Contributing author: Dan Ibanez (SNL) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- */ + +template +FixMomentumKokkos::FixMomentumKokkos(LAMMPS *lmp, int narg, char **arg) : + FixMomentum(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixMomentumKokkos::init() +{ +//this is done in FixMomentum::init(), but will need to change +//once Group is ported to Kokkos +//masstotal = group->mass(igroup); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixMomentumKokkos::end_of_step() +{ + atomKK->sync(execution_space, V_MASK | MASK_MASK); + + typename AT::t_v_array v = atomKK->k_v.view(); + typename AT::t_int_1d_randomread mask = atomKK->k_mask.view(); + + const int nlocal = atom->nlocal; + double ekin_old,ekin_new; + ekin_old = ekin_new = 0.0; + + if (dynamic) + masstotal = group->mass(igroup); // change once Group is ported to Kokkos + + // do nothing if group is empty, i.e. mass is zero; + + if (masstotal == 0.0) return; + + // compute kinetic energy before momentum removal, if needed + + if (rescale) { + + atomKK->sync(execution_space, TYPE_MASK); + + typename AT::t_int_1d_randomread type = atomKK->k_type; + double ke=0.0; + + // D.I. : does this rmass check make sense in Kokkos mode ? + if (atom->rmass) { + atomKK->sync(execution_space, RMASS_MASK); + typename AT::t_float_1d_randomread rmass = atomKK->k_rmass; +// for (int i = 0; i < nlocal; i++) +// if (mask[i] & groupbit) +// ke += rmass[i] * +// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + } else { + // D.I. : why is there no MASS_MASK ? + typename AT::t_float_1d_randomread mass = atomKK->k_mass; +// for (int i = 0; i < nlocal; i++) +// if (mask[i] & groupbit) +// ke += mass[type[i]] * +// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + } + MPI_Allreduce(&ke,&ekin_old,1,MPI_DOUBLE,MPI_SUM,world); + } + + if (linear) { + double vcm[3]; + group->vcm(igroup,masstotal,vcm); // will need to change when Group has Kokkos + + // adjust velocities by vcm to zero linear momentum + // only adjust a component if flag is set + +// for (int i = 0; i < nlocal; i++) +// if (mask[i] & groupbit) { +// if (xflag) v[i][0] -= vcm[0]; +// if (yflag) v[i][1] -= vcm[1]; +// if (zflag) v[i][2] -= vcm[2]; +// } + } + + if (angular) { + double xcm[3],angmom[3],inertia[3][3],omega[3]; + group->xcm(igroup,masstotal,xcm); // change when Group has Kokkos ? + group->angmom(igroup,xcm,angmom); + group->inertia(igroup,xcm,inertia); + group->omega(angmom,inertia,omega); + + // adjust velocities to zero omega + // vnew_i = v_i - w x r_i + // must use unwrapped coords to compute r_i correctly + + atomKK->sync(execution_space, X_MASK | IMAGE_MASK); + typename AT::t_x_array_randomread x = atomKK->k_x.view(); + typename AT::t_imageint_1d_randomread image = atomKK->k_image.view(); + int nlocal = atom->nlocal; + +// for (int i = 0; i < nlocal; i++) +// if (mask[i] & groupbit) { +// double dx,dy,dz; +// double unwrap[3]; +// domain->unmap(x[i],image[i],unwrap); +// dx = unwrap[0] - xcm[0]; +// dy = unwrap[1] - xcm[1]; +// dz = unwrap[2] - xcm[2]; +// v[i][0] -= omega[1]*dz - omega[2]*dy; +// v[i][1] -= omega[2]*dx - omega[0]*dz; +// v[i][2] -= omega[0]*dy - omega[1]*dx; +// } + } + + // compute kinetic energy after momentum removal, if needed + + if (rescale) { + + double ke=0.0, factor=1.0; + typename AT::t_int_1d_randomread type = atomKK->k_type; + + if (atom->rmass) { + atomKK->sync(execution_space, RMASS_MASK); + typename AT::t_float_1d_randomread rmass = atomKK->k_rmass; +// for (int i = 0; i < nlocal; i++) +// if (mask[i] & groupbit) +// ke += rmass[i] * +// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + } else { + // D.I. : why is there no MASS_MASK ? + typename AT::t_float_1d_randomread mass = atomKK->k_mass; +// for (int i = 0; i < nlocal; i++) +// if (mask[i] & groupbit) +// ke += mass[type[i]] * +// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + } + MPI_Allreduce(&ke,&ekin_new,1,MPI_DOUBLE,MPI_SUM,world); + + if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new); +// for (int i = 0; i < nlocal; i++) { +// if (mask[i] & groupbit) { +// v[i][0] *= factor; +// v[i][1] *= factor; +// v[i][2] *= factor; +// } +// } + } +} + diff --git a/src/KOKKOS/fix_momentum_kokkos.h b/src/KOKKOS/fix_momentum_kokkos.h new file mode 100644 index 0000000000..ae63648775 --- /dev/null +++ b/src/KOKKOS/fix_momentum_kokkos.h @@ -0,0 +1,48 @@ +/* -*- 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(momentum/kk,FixMomentumKokkos) +FixStyle(momentum/kk/device,FixMomentumKokkos) +FixStyle(momentum/kk/host,FixMomentumKokkos) + +#else + +#ifndef LMP_FIX_MOMENTUM_KOKKOS_H +#define LMP_FIX_MOMENTUM_KOKKOS_H + +#include "fix_momentum.h" + +namespace LAMMPS_NS { + +template +class FixMomentumKokkos : public FixMomentum { + public: + typedef ArrayTypes AT; + + FixMomentum(class LAMMPS *, int, char **); + void init(); + void end_of_step(); + + private: +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ From a1b441a71fa7fec16cc12c5c3cbe880277f3cb74 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 19 Dec 2016 12:02:12 -0700 Subject: [PATCH 02/70] draft the parallel_* constructs based on lambdas LAMMPS_LAMBDA was added to kokkos_type.h to facilitate this. some member variables will likely need local copies in the fix_momentum code. --- src/KOKKOS/fix_momentum_kokkos.cpp | 130 ++++++++++++++--------------- src/KOKKOS/kokkos_type.h | 6 ++ 2 files changed, 67 insertions(+), 69 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index d2d3f8f3cb..3df4b3d4b0 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -52,6 +52,37 @@ void FixMomentumKokkos::init() /* ---------------------------------------------------------------------- */ +template +double FixMomentumKokkos::get_kinetic_energy( + typename AT::t_v_array_randomread v, + typename AT::t_int_1d_randomread mask) +{ + double ke=0.0; + // D.I. : does this rmass check make sense in Kokkos mode ? + if (atom->rmass) { + atomKK->sync(execution_space, RMASS_MASK); + typename AT::t_float_1d_randomread rmass = atomKK->k_rmass; + Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { + if (mask(i) & groupbit) + update += rmass(i) * + (v(i,0)*v(i,0) + v(i,1)*v(i,1) + v(i,2)*v(i,2)); + }, ke); + } else { + // D.I. : why is there no MASS_MASK ? + atomKK->sync(execution_space, TYPE_MASK); + typename AT::t_int_1d_randomread type = atomKK->k_type; + typename AT::t_float_1d_randomread mass = atomKK->k_mass; + Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { + if (mask(i) & groupbit) + update += mass(type(i)) * + (v(i,0)*v(i,0) + v(i,1)*v(i,1) + v(i,2)*v(i,2)); + }, ke); + } + double ke_total; + MPI_Allreduce(&ke,&ke_total,1,MPI_DOUBLE,MPI_SUM,world); + return ke_total; +} + template void FixMomentumKokkos::end_of_step() { @@ -73,31 +104,7 @@ void FixMomentumKokkos::end_of_step() // compute kinetic energy before momentum removal, if needed - if (rescale) { - - atomKK->sync(execution_space, TYPE_MASK); - - typename AT::t_int_1d_randomread type = atomKK->k_type; - double ke=0.0; - - // D.I. : does this rmass check make sense in Kokkos mode ? - if (atom->rmass) { - atomKK->sync(execution_space, RMASS_MASK); - typename AT::t_float_1d_randomread rmass = atomKK->k_rmass; -// for (int i = 0; i < nlocal; i++) -// if (mask[i] & groupbit) -// ke += rmass[i] * -// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); - } else { - // D.I. : why is there no MASS_MASK ? - typename AT::t_float_1d_randomread mass = atomKK->k_mass; -// for (int i = 0; i < nlocal; i++) -// if (mask[i] & groupbit) -// ke += mass[type[i]] * -// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); - } - MPI_Allreduce(&ke,&ekin_old,1,MPI_DOUBLE,MPI_SUM,world); - } + if (rescale) ekin_old = get_kinetic_energy(v, mask); if (linear) { double vcm[3]; @@ -106,12 +113,13 @@ void FixMomentumKokkos::end_of_step() // adjust velocities by vcm to zero linear momentum // only adjust a component if flag is set -// for (int i = 0; i < nlocal; i++) -// if (mask[i] & groupbit) { -// if (xflag) v[i][0] -= vcm[0]; -// if (yflag) v[i][1] -= vcm[1]; -// if (zflag) v[i][2] -= vcm[2]; -// } + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { + if (mask(i) & groupbit) { + if (xflag) v(i,0) -= vcm(0); + if (yflag) v(i,1) -= vcm(1); + if (zflag) v(i,2) -= vcm(2); + } + }); } if (angular) { @@ -130,52 +138,36 @@ void FixMomentumKokkos::end_of_step() typename AT::t_imageint_1d_randomread image = atomKK->k_image.view(); int nlocal = atom->nlocal; -// for (int i = 0; i < nlocal; i++) -// if (mask[i] & groupbit) { -// double dx,dy,dz; -// double unwrap[3]; -// domain->unmap(x[i],image[i],unwrap); -// dx = unwrap[0] - xcm[0]; -// dy = unwrap[1] - xcm[1]; -// dz = unwrap[2] - xcm[2]; -// v[i][0] -= omega[1]*dz - omega[2]*dy; -// v[i][1] -= omega[2]*dx - omega[0]*dz; -// v[i][2] -= omega[0]*dy - omega[1]*dx; -// } + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { + if (mask[i] & groupbit) { + double dx,dy,dz; + double unwrap[3]; + domain->unmap(x[i],image[i],unwrap); + dx = unwrap[0] - xcm[0]; + dy = unwrap[1] - xcm[1]; + dz = unwrap[2] - xcm[2]; + v(i,0) -= omega[1]*dz - omega[2]*dy; + v(i,1) -= omega[2]*dx - omega[0]*dz; + v(i,2) -= omega[0]*dy - omega[1]*dx; + } + }); } // compute kinetic energy after momentum removal, if needed if (rescale) { - double ke=0.0, factor=1.0; - typename AT::t_int_1d_randomread type = atomKK->k_type; - - if (atom->rmass) { - atomKK->sync(execution_space, RMASS_MASK); - typename AT::t_float_1d_randomread rmass = atomKK->k_rmass; -// for (int i = 0; i < nlocal; i++) -// if (mask[i] & groupbit) -// ke += rmass[i] * -// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); - } else { - // D.I. : why is there no MASS_MASK ? - typename AT::t_float_1d_randomread mass = atomKK->k_mass; -// for (int i = 0; i < nlocal; i++) -// if (mask[i] & groupbit) -// ke += mass[type[i]] * -// (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); - } - MPI_Allreduce(&ke,&ekin_new,1,MPI_DOUBLE,MPI_SUM,world); + ekin_new = get_kinetic_energy(v, mask); + double factor = 1.0; if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new); -// for (int i = 0; i < nlocal; i++) { -// if (mask[i] & groupbit) { -// v[i][0] *= factor; -// v[i][1] *= factor; -// v[i][2] *= factor; -// } -// } + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { + if (mask(i) & groupbit) { + v(i,0) *= factor; + v(i,1) *= factor; + v(i,2) *= factor; + } + }); } } diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index c1176122a7..cc096058ec 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -920,4 +920,10 @@ void memset_kokkos (ViewType &view) { #define ISFINITE(x) std::isfinite(x) #endif +#ifdef KOKKOS_HAVE_CUDA +#define LAMMPS_LAMBDA [=] __device__ +#else +#define LAMMPS_LAMBDA [=] +#endif + #endif From ca30c1ec8850578bc9abbca4e8602fd4bd9b9972 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 19 Dec 2016 13:08:09 -0700 Subject: [PATCH 03/70] got fix_momentum_kokkos to compile there are likely still some compile errors for Kokkos+CUDA... --- src/KOKKOS/fix_momentum_kokkos.cpp | 27 ++++++++++++++++++--------- src/KOKKOS/fix_momentum_kokkos.h | 7 ++++++- src/domain.cpp | 2 +- src/domain.h | 2 +- src/fix_momentum.h | 2 +- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 3df4b3d4b0..2465183b98 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -15,6 +15,7 @@ #include #include "fix_momentum_kokkos.h" #include "atom_kokkos.h" +#include "atom_masks.h" #include "domain.h" #include "group.h" #include "error.h" @@ -54,6 +55,7 @@ void FixMomentumKokkos::init() template double FixMomentumKokkos::get_kinetic_energy( + int nlocal, typename AT::t_v_array_randomread v, typename AT::t_int_1d_randomread mask) { @@ -61,7 +63,7 @@ double FixMomentumKokkos::get_kinetic_energy( // D.I. : does this rmass check make sense in Kokkos mode ? if (atom->rmass) { atomKK->sync(execution_space, RMASS_MASK); - typename AT::t_float_1d_randomread rmass = atomKK->k_rmass; + typename AT::t_float_1d_randomread rmass = atomKK->k_rmass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { if (mask(i) & groupbit) update += rmass(i) * @@ -70,8 +72,8 @@ double FixMomentumKokkos::get_kinetic_energy( } else { // D.I. : why is there no MASS_MASK ? atomKK->sync(execution_space, TYPE_MASK); - typename AT::t_int_1d_randomread type = atomKK->k_type; - typename AT::t_float_1d_randomread mass = atomKK->k_mass; + typename AT::t_int_1d_randomread type = atomKK->k_type.view(); + typename AT::t_float_1d_randomread mass = atomKK->k_mass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { if (mask(i) & groupbit) update += mass(type(i)) * @@ -104,7 +106,7 @@ void FixMomentumKokkos::end_of_step() // compute kinetic energy before momentum removal, if needed - if (rescale) ekin_old = get_kinetic_energy(v, mask); + if (rescale) ekin_old = get_kinetic_energy(nlocal, v, mask); if (linear) { double vcm[3]; @@ -115,9 +117,9 @@ void FixMomentumKokkos::end_of_step() Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { if (mask(i) & groupbit) { - if (xflag) v(i,0) -= vcm(0); - if (yflag) v(i,1) -= vcm(1); - if (zflag) v(i,2) -= vcm(2); + if (xflag) v(i,0) -= vcm[0]; + if (yflag) v(i,1) -= vcm[1]; + if (zflag) v(i,2) -= vcm[2]; } }); } @@ -142,7 +144,7 @@ void FixMomentumKokkos::end_of_step() if (mask[i] & groupbit) { double dx,dy,dz; double unwrap[3]; - domain->unmap(x[i],image[i],unwrap); + domain->unmap(&x(i,0),image(i),unwrap); // this will not work in CUDA !!! dx = unwrap[0] - xcm[0]; dy = unwrap[1] - xcm[1]; dz = unwrap[2] - xcm[2]; @@ -157,7 +159,7 @@ void FixMomentumKokkos::end_of_step() if (rescale) { - ekin_new = get_kinetic_energy(v, mask); + ekin_new = get_kinetic_energy(nlocal, v, mask); double factor = 1.0; if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new); @@ -171,3 +173,10 @@ void FixMomentumKokkos::end_of_step() } } +namespace LAMMPS_NS { +template class FixMomentumKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixMomentumKokkos; +#endif +} + diff --git a/src/KOKKOS/fix_momentum_kokkos.h b/src/KOKKOS/fix_momentum_kokkos.h index ae63648775..8d2faed1cd 100644 --- a/src/KOKKOS/fix_momentum_kokkos.h +++ b/src/KOKKOS/fix_momentum_kokkos.h @@ -23,6 +23,7 @@ FixStyle(momentum/kk/host,FixMomentumKokkos) #define LMP_FIX_MOMENTUM_KOKKOS_H #include "fix_momentum.h" +#include "kokkos_type.h" namespace LAMMPS_NS { @@ -31,11 +32,15 @@ class FixMomentumKokkos : public FixMomentum { public: typedef ArrayTypes AT; - FixMomentum(class LAMMPS *, int, char **); + FixMomentumKokkos(class LAMMPS *, int, char **); void init(); void end_of_step(); private: + double get_kinetic_energy( + int nlocal, + typename AT::t_v_array_randomread v, + typename AT::t_int_1d_randomread mask); }; } diff --git a/src/domain.cpp b/src/domain.cpp index 54183f6f2c..b2eae327af 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1441,7 +1441,7 @@ void Domain::unmap(double *x, imageint image) for triclinic, use h[] to add in tilt factors in other dims as needed ------------------------------------------------------------------------- */ -void Domain::unmap(double *x, imageint image, double *y) +void Domain::unmap(const double *x, imageint image, double *y) { int xbox = (image & IMGMASK) - IMGMAX; int ybox = (image >> IMGBITS & IMGMASK) - IMGMAX; diff --git a/src/domain.h b/src/domain.h index ad55f051cf..b8bf1657ce 100644 --- a/src/domain.h +++ b/src/domain.h @@ -119,7 +119,7 @@ class Domain : protected Pointers { void remap(double *); void remap_near(double *, double *); void unmap(double *, imageint); - void unmap(double *, imageint, double *); + void unmap(const double *, imageint, double *); void image_flip(int, int, int); int ownatom(int, double *, imageint *, int); diff --git a/src/fix_momentum.h b/src/fix_momentum.h index ffe33880e0..05fd7ff7c8 100644 --- a/src/fix_momentum.h +++ b/src/fix_momentum.h @@ -31,7 +31,7 @@ class FixMomentum : public Fix { void init(); void end_of_step(); - private: + protected: int linear,angular,rescale; int xflag,yflag,zflag; int dynamic; From c7ac9e79cb9e480be3bf25147a4344c69637ae52 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Mon, 19 Dec 2016 13:17:22 -0700 Subject: [PATCH 04/70] preemptive changes for Kokkos+CUDA I haven't compiled in that mode yet (don't know how), but these are some changes I suspect the compiler will require. --- src/KOKKOS/fix_momentum_kokkos.cpp | 31 ++++++++++++++++++++---------- src/KOKKOS/fix_momentum_kokkos.h | 4 ++++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 2465183b98..ed5294a149 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -34,6 +34,9 @@ template FixMomentumKokkos::FixMomentumKokkos(LAMMPS *lmp, int narg, char **arg) : FixMomentum(lmp, narg, arg) { +#ifdef KOKKOS_HAVE_CUDA + if (angular) error->all(FLERR, "Kokkos+CUDA fix momentum doesn't support angular"); +#endif kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; @@ -60,12 +63,13 @@ double FixMomentumKokkos::get_kinetic_energy( typename AT::t_int_1d_randomread mask) { double ke=0.0; - // D.I. : does this rmass check make sense in Kokkos mode ? + auto groupbit2 = groupbit; + // D.I. : does this atom->rmass check make sense in Kokkos mode ? if (atom->rmass) { atomKK->sync(execution_space, RMASS_MASK); typename AT::t_float_1d_randomread rmass = atomKK->k_rmass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { - if (mask(i) & groupbit) + if (mask(i) & groupbit2) update += rmass(i) * (v(i,0)*v(i,0) + v(i,1)*v(i,1) + v(i,2)*v(i,2)); }, ke); @@ -75,7 +79,7 @@ double FixMomentumKokkos::get_kinetic_energy( typename AT::t_int_1d_randomread type = atomKK->k_type.view(); typename AT::t_float_1d_randomread mass = atomKK->k_mass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { - if (mask(i) & groupbit) + if (mask(i) & groupbit2) update += mass(type(i)) * (v(i,0)*v(i,0) + v(i,1)*v(i,1) + v(i,2)*v(i,2)); }, ke); @@ -108,22 +112,28 @@ void FixMomentumKokkos::end_of_step() if (rescale) ekin_old = get_kinetic_energy(nlocal, v, mask); + auto groupbit2 = groupbit; if (linear) { double vcm[3]; group->vcm(igroup,masstotal,vcm); // will need to change when Group has Kokkos // adjust velocities by vcm to zero linear momentum // only adjust a component if flag is set + + auto xflag2 = xflag; + auto yflag2 = yflag; + auto zflag2 = zflag; Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { - if (mask(i) & groupbit) { - if (xflag) v(i,0) -= vcm[0]; - if (yflag) v(i,1) -= vcm[1]; - if (zflag) v(i,2) -= vcm[2]; + if (mask(i) & groupbit2) { + if (xflag2) v(i,0) -= vcm[0]; + if (yflag2) v(i,1) -= vcm[1]; + if (zflag2) v(i,2) -= vcm[2]; } }); } +#ifndef KOKKOS_HAVE_CUDA if (angular) { double xcm[3],angmom[3],inertia[3][3],omega[3]; group->xcm(igroup,masstotal,xcm); // change when Group has Kokkos ? @@ -141,10 +151,10 @@ void FixMomentumKokkos::end_of_step() int nlocal = atom->nlocal; Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { - if (mask[i] & groupbit) { + if (mask[i] & groupbit2) { double dx,dy,dz; double unwrap[3]; - domain->unmap(&x(i,0),image(i),unwrap); // this will not work in CUDA !!! + domain->unmap(&x(i,0),image(i),unwrap); // this will not work in CUDA dx = unwrap[0] - xcm[0]; dy = unwrap[1] - xcm[1]; dz = unwrap[2] - xcm[2]; @@ -154,6 +164,7 @@ void FixMomentumKokkos::end_of_step() } }); } +#endif // compute kinetic energy after momentum removal, if needed @@ -164,7 +175,7 @@ void FixMomentumKokkos::end_of_step() double factor = 1.0; if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new); Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { - if (mask(i) & groupbit) { + if (mask(i) & groupbit2) { v(i,0) *= factor; v(i,1) *= factor; v(i,2) *= factor; diff --git a/src/KOKKOS/fix_momentum_kokkos.h b/src/KOKKOS/fix_momentum_kokkos.h index 8d2faed1cd..7d4587a8e8 100644 --- a/src/KOKKOS/fix_momentum_kokkos.h +++ b/src/KOKKOS/fix_momentum_kokkos.h @@ -50,4 +50,8 @@ class FixMomentumKokkos : public FixMomentum { /* ERROR/WARNING messages: +E: Kokkos+CUDA fix momentum doesn't support angular + +Self-explanatory. + */ From 590f3175509105bbbcd113b225fb3fc4ccef913f Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 20 Dec 2016 11:03:16 -0700 Subject: [PATCH 05/70] fix_momentum_kokkos: don't override init() --- src/KOKKOS/fix_momentum_kokkos.cpp | 10 ---------- src/KOKKOS/fix_momentum_kokkos.h | 1 - 2 files changed, 11 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index ed5294a149..2846f53450 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -46,16 +46,6 @@ FixMomentumKokkos::FixMomentumKokkos(LAMMPS *lmp, int narg, char **a /* ---------------------------------------------------------------------- */ -template -void FixMomentumKokkos::init() -{ -//this is done in FixMomentum::init(), but will need to change -//once Group is ported to Kokkos -//masstotal = group->mass(igroup); -} - -/* ---------------------------------------------------------------------- */ - template double FixMomentumKokkos::get_kinetic_energy( int nlocal, diff --git a/src/KOKKOS/fix_momentum_kokkos.h b/src/KOKKOS/fix_momentum_kokkos.h index 7d4587a8e8..12cb3a36f0 100644 --- a/src/KOKKOS/fix_momentum_kokkos.h +++ b/src/KOKKOS/fix_momentum_kokkos.h @@ -33,7 +33,6 @@ class FixMomentumKokkos : public FixMomentum { typedef ArrayTypes AT; FixMomentumKokkos(class LAMMPS *, int, char **); - void init(); void end_of_step(); private: From 386c12c970c1e27f6506d1a8df6fe4014821cb39 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 20 Dec 2016 16:09:29 -0700 Subject: [PATCH 06/70] start porting my Few class into this code --- src/KOKKOS/kokkos_few.h | 71 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/KOKKOS/kokkos_few.h diff --git a/src/KOKKOS/kokkos_few.h b/src/KOKKOS/kokkos_few.h new file mode 100644 index 0000000000..abc52f129d --- /dev/null +++ b/src/KOKKOS/kokkos_few.h @@ -0,0 +1,71 @@ +#ifndef KOKKOS_FEW_H +#define KOKKOS_FEW_H + +#include + +namespace Kokkos { +namespace Experimental { + +template +class Few { + alignas(T) char array_[n * sizeof(T)]; + + public: + enum { size = n }; + Few(std::initializer_list l) { + Int i = 0; + for (auto it = l.begin(); it != l.end(); ++it) { + new (data() + (i++)) T(*it); + } + } + KOKKOS_INLINE_FUNCTION Few() { + for (Int i = 0; i < n; ++i) new (data() + i) T(); + } + KOKKOS_INLINE_FUNCTION ~Few() { + for (Int i = 0; i < n; ++i) (data()[i]).~T(); + } + KOKKOS_INLINE_FUNCTION Few(Few const& rhs) { + for (Int i = 0; i < n; ++i) new (data() + i) T(rhs[i]); + } + KOKKOS_INLINE_FUNCTION Few(Few const volatile& rhs) { + for (Int i = 0; i < n; ++i) new (data() + i) T(rhs[i]); + } + KOKKOS_INLINE_FUNCTION void operator=(Few const& rhs) volatile { + for (Int i = 0; i < n; ++i) data()[i] = rhs[i]; + } + KOKKOS_INLINE_FUNCTION void operator=(Few const& rhs) { + for (Int i = 0; i < n; ++i) data()[i] = rhs[i]; + } + KOKKOS_INLINE_FUNCTION void operator=(Few const volatile& rhs) { + for (Int i = 0; i < n; ++i) data()[i] = rhs[i]; + } + KOKKOS_INLINE_FUNCTION T* data() { + return reinterpret_cast(array_); + } + KOKKOS_INLINE_FUNCTION T const* data() const { + return reinterpret_cast(array_); + } + KOKKOS_INLINE_FUNCTION T volatile* data() volatile { + return reinterpret_cast(array_); + } + KOKKOS_INLINE_FUNCTION T const volatile* data() const volatile { + return reinterpret_cast(array_); + } + KOKKOS_INLINE_FUNCTION T& operator[](Int i) { + return data()[i]; + } + KOKKOS_INLINE_FUNCTION T const& operator[](Int i) const { + return data()[i]; + } + KOKKOS_INLINE_FUNCTION T volatile& operator[](Int i) volatile { + return data()[i]; + } + KOKKOS_INLINE_FUNCTION T const volatile& operator[](Int i) const volatile { + return data()[i]; + } +}; + +} +} + +#endif From 2ceee6b9be3a2e7b273410b053533a1f18a68e48 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 20 Dec 2016 16:19:17 -0700 Subject: [PATCH 07/70] install kokkos_few, and remove Int --- src/KOKKOS/Install.sh | 1 + src/KOKKOS/kokkos_few.h | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 02d8a26311..4f7249d67c 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -102,6 +102,7 @@ action improper_harmonic_kokkos.h improper_harmonic.h action kokkos.cpp action kokkos.h action kokkos_type.h +action kokkos_few.h action memory_kokkos.h action modify_kokkos.cpp action modify_kokkos.h diff --git a/src/KOKKOS/kokkos_few.h b/src/KOKKOS/kokkos_few.h index abc52f129d..1fe86d52c9 100644 --- a/src/KOKKOS/kokkos_few.h +++ b/src/KOKKOS/kokkos_few.h @@ -6,38 +6,38 @@ namespace Kokkos { namespace Experimental { -template +template class Few { alignas(T) char array_[n * sizeof(T)]; public: enum { size = n }; Few(std::initializer_list l) { - Int i = 0; + std::size_t i = 0; for (auto it = l.begin(); it != l.end(); ++it) { new (data() + (i++)) T(*it); } } KOKKOS_INLINE_FUNCTION Few() { - for (Int i = 0; i < n; ++i) new (data() + i) T(); + for (std::size_t i = 0; i < n; ++i) new (data() + i) T(); } KOKKOS_INLINE_FUNCTION ~Few() { - for (Int i = 0; i < n; ++i) (data()[i]).~T(); + for (std::size_t i = 0; i < n; ++i) (data()[i]).~T(); } KOKKOS_INLINE_FUNCTION Few(Few const& rhs) { - for (Int i = 0; i < n; ++i) new (data() + i) T(rhs[i]); + for (std::size_t i = 0; i < n; ++i) new (data() + i) T(rhs[i]); } KOKKOS_INLINE_FUNCTION Few(Few const volatile& rhs) { - for (Int i = 0; i < n; ++i) new (data() + i) T(rhs[i]); + for (std::size_t i = 0; i < n; ++i) new (data() + i) T(rhs[i]); } KOKKOS_INLINE_FUNCTION void operator=(Few const& rhs) volatile { - for (Int i = 0; i < n; ++i) data()[i] = rhs[i]; + for (std::size_t i = 0; i < n; ++i) data()[i] = rhs[i]; } KOKKOS_INLINE_FUNCTION void operator=(Few const& rhs) { - for (Int i = 0; i < n; ++i) data()[i] = rhs[i]; + for (std::size_t i = 0; i < n; ++i) data()[i] = rhs[i]; } KOKKOS_INLINE_FUNCTION void operator=(Few const volatile& rhs) { - for (Int i = 0; i < n; ++i) data()[i] = rhs[i]; + for (std::size_t i = 0; i < n; ++i) data()[i] = rhs[i]; } KOKKOS_INLINE_FUNCTION T* data() { return reinterpret_cast(array_); @@ -51,16 +51,16 @@ class Few { KOKKOS_INLINE_FUNCTION T const volatile* data() const volatile { return reinterpret_cast(array_); } - KOKKOS_INLINE_FUNCTION T& operator[](Int i) { + KOKKOS_INLINE_FUNCTION T& operator[](std::size_t i) { return data()[i]; } - KOKKOS_INLINE_FUNCTION T const& operator[](Int i) const { + KOKKOS_INLINE_FUNCTION T const& operator[](std::size_t i) const { return data()[i]; } - KOKKOS_INLINE_FUNCTION T volatile& operator[](Int i) volatile { + KOKKOS_INLINE_FUNCTION T volatile& operator[](std::size_t i) volatile { return data()[i]; } - KOKKOS_INLINE_FUNCTION T const volatile& operator[](Int i) const volatile { + KOKKOS_INLINE_FUNCTION T const volatile& operator[](std::size_t i) const volatile { return data()[i]; } }; From b2b33cca16aa7d4d224d99981eee368108ef37b5 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 20 Dec 2016 16:30:21 -0700 Subject: [PATCH 08/70] start working on fix_momentum Kokkos+CUDA it doesn't compile anymore, all in good time... --- src/KOKKOS/fix_momentum_kokkos.cpp | 18 ++++++++++-------- src/KOKKOS/fix_momentum_kokkos.h | 6 ------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 2846f53450..0d8ab37abf 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -20,6 +20,7 @@ #include "group.h" #include "error.h" #include "force.h" +#include "kokkos_few.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -47,19 +48,20 @@ FixMomentumKokkos::FixMomentumKokkos(LAMMPS *lmp, int narg, char **a /* ---------------------------------------------------------------------- */ template -double FixMomentumKokkos::get_kinetic_energy( +static double get_kinetic_energy( + int groupbit, int nlocal, - typename AT::t_v_array_randomread v, - typename AT::t_int_1d_randomread mask) + typename ArrayTypes::t_v_array_randomread v, + typename ArrayTypes::t_int_1d_randomread mask) { + using AT = ArrayTypes; double ke=0.0; - auto groupbit2 = groupbit; // D.I. : does this atom->rmass check make sense in Kokkos mode ? if (atom->rmass) { atomKK->sync(execution_space, RMASS_MASK); typename AT::t_float_1d_randomread rmass = atomKK->k_rmass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { - if (mask(i) & groupbit2) + if (mask(i) & groupbit) update += rmass(i) * (v(i,0)*v(i,0) + v(i,1)*v(i,1) + v(i,2)*v(i,2)); }, ke); @@ -69,7 +71,7 @@ double FixMomentumKokkos::get_kinetic_energy( typename AT::t_int_1d_randomread type = atomKK->k_type.view(); typename AT::t_float_1d_randomread mass = atomKK->k_mass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { - if (mask(i) & groupbit2) + if (mask(i) & groupbit) update += mass(type(i)) * (v(i,0)*v(i,0) + v(i,1)*v(i,1) + v(i,2)*v(i,2)); }, ke); @@ -100,7 +102,7 @@ void FixMomentumKokkos::end_of_step() // compute kinetic energy before momentum removal, if needed - if (rescale) ekin_old = get_kinetic_energy(nlocal, v, mask); + if (rescale) ekin_old = get_kinetic_energy(groupbit, nlocal, v, mask); auto groupbit2 = groupbit; if (linear) { @@ -160,7 +162,7 @@ void FixMomentumKokkos::end_of_step() if (rescale) { - ekin_new = get_kinetic_energy(nlocal, v, mask); + ekin_new = get_kinetic_energy(groupbit, nlocal, v, mask); double factor = 1.0; if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new); diff --git a/src/KOKKOS/fix_momentum_kokkos.h b/src/KOKKOS/fix_momentum_kokkos.h index 12cb3a36f0..8c0a01a52c 100644 --- a/src/KOKKOS/fix_momentum_kokkos.h +++ b/src/KOKKOS/fix_momentum_kokkos.h @@ -34,12 +34,6 @@ class FixMomentumKokkos : public FixMomentum { FixMomentumKokkos(class LAMMPS *, int, char **); void end_of_step(); - - private: - double get_kinetic_energy( - int nlocal, - typename AT::t_v_array_randomread v, - typename AT::t_int_1d_randomread mask); }; } From 8b5e15e979da1d4822558f5b1c4c3370834ead5b Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Tue, 20 Dec 2016 16:30:50 -0700 Subject: [PATCH 09/70] add a Makefile for the White testbed --- src/MAKE/MACHINES/Makefile.white | 125 +++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/MAKE/MACHINES/Makefile.white diff --git a/src/MAKE/MACHINES/Makefile.white b/src/MAKE/MACHINES/Makefile.white new file mode 100644 index 0000000000..ae31664b0d --- /dev/null +++ b/src/MAKE/MACHINES/Makefile.white @@ -0,0 +1,125 @@ +# kokkos_cuda = KOKKOS/CUDA package, OpenMPI with nvcc compiler, Kepler GPU + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd) +export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper +CC = mpicxx +CCFLAGS = -g -O3 +SHFLAGS = -fPIC +DEPFLAGS = -M + +LINK = mpicxx +LINKFLAGS = -g -O3 +LIB = +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared +KOKKOS_DEVICES = Cuda, OpenMP +KOKKOS_ARCH = Kepler35 +KOKKOS_CUDA_OPTIONS = enable_lambda + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 2.2 (step 4) of manual + +LMP_INC = -DLAMMPS_GZIP + +# MPI library +# see discussion in Section 2.2 (step 5) of manual +# MPI wrapper compiler/linker can provide this info +# can point to dummy MPI library in src/STUBS as in Makefile.serial +# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts +# INC = path for mpi.h, MPI compiler settings +# PATH = path for MPI library +# LIB = name of MPI library + +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = +MPI_LIB = + +# FFT library +# see discussion in Section 2.2 (step 6) of manaul +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = +FFT_PATH = +FFT_LIB = + +# JPEG and/or PNG library +# see discussion in Section 2.2 (step 7) of manual +# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC +# INC = path(s) for jpeglib.h and/or png.h +# PATH = path(s) for JPEG library and/or PNG library +# LIB = name(s) of JPEG library and/or PNG library + +JPG_INC = +JPG_PATH = +JPG_LIB = + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) + $(SIZE) $(EXE) + +# Library targets + +lib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) + +shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + +# Compilation rules + +%.o:%.cpp $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +%.d:%.cpp $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ + +%.o:%.cu $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + gcc -O -o $@ $< + +sinclude .depend From 992becc75feaab346467866c2ada94f8eb526f67 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:00:42 -0700 Subject: [PATCH 10/70] silence warning about partial x2lamda overload --- src/KOKKOS/domain_kokkos.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/KOKKOS/domain_kokkos.h b/src/KOKKOS/domain_kokkos.h index 50429008dc..687311f5d3 100644 --- a/src/KOKKOS/domain_kokkos.h +++ b/src/KOKKOS/domain_kokkos.h @@ -35,6 +35,10 @@ class DomainKokkos : public Domain { void image_flip(int, int, int); void x2lamda(int); void lamda2x(int); + // these lines bring in the x2lamda signatures from Domain + // that are not overloaded here + using Domain::x2lamda; + using Domain::lamda2x; int closest_image(const int, int) const; From 01e3a316395d56350145616f73dd5e3a489cca0c Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:01:06 -0700 Subject: [PATCH 11/70] put Few in the global namespace... --- src/KOKKOS/kokkos_few.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/KOKKOS/kokkos_few.h b/src/KOKKOS/kokkos_few.h index 1fe86d52c9..afe66bfc20 100644 --- a/src/KOKKOS/kokkos_few.h +++ b/src/KOKKOS/kokkos_few.h @@ -3,9 +3,6 @@ #include -namespace Kokkos { -namespace Experimental { - template class Few { alignas(T) char array_[n * sizeof(T)]; @@ -65,7 +62,4 @@ class Few { } }; -} -} - #endif From d9a0f575f6ceb19ca3f5c64b57e866a424cd9743 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:01:19 -0700 Subject: [PATCH 12/70] get fix_momentum_kokkos to compile on White --- src/KOKKOS/fix_momentum_kokkos.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 0d8ab37abf..5c536d6ee5 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -49,15 +49,17 @@ FixMomentumKokkos::FixMomentumKokkos(LAMMPS *lmp, int narg, char **a template static double get_kinetic_energy( + AtomKokkos* atomKK, + MPI_Comm world, int groupbit, int nlocal, typename ArrayTypes::t_v_array_randomread v, typename ArrayTypes::t_int_1d_randomread mask) { using AT = ArrayTypes; + auto execution_space = ExecutionSpaceFromDevice::space; double ke=0.0; - // D.I. : does this atom->rmass check make sense in Kokkos mode ? - if (atom->rmass) { + if (atomKK->rmass) { atomKK->sync(execution_space, RMASS_MASK); typename AT::t_float_1d_randomread rmass = atomKK->k_rmass.view(); Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(int i, double& update) { @@ -102,12 +104,14 @@ void FixMomentumKokkos::end_of_step() // compute kinetic energy before momentum removal, if needed - if (rescale) ekin_old = get_kinetic_energy(groupbit, nlocal, v, mask); + if (rescale) { + ekin_old = get_kinetic_energy(atomKK, world, groupbit, nlocal, v, mask); + } auto groupbit2 = groupbit; if (linear) { - double vcm[3]; - group->vcm(igroup,masstotal,vcm); // will need to change when Group has Kokkos + Few vcm; + group->vcm(igroup,masstotal,&vcm[0]); // adjust velocities by vcm to zero linear momentum // only adjust a component if flag is set @@ -162,7 +166,7 @@ void FixMomentumKokkos::end_of_step() if (rescale) { - ekin_new = get_kinetic_energy(groupbit, nlocal, v, mask); + ekin_new = get_kinetic_energy(atomKK, world, groupbit, nlocal, v, mask); double factor = 1.0; if (ekin_new != 0.0) factor = sqrt(ekin_old/ekin_new); From d1a55ad2e07d1187768e9e3cc657ef4d5f6c64d6 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:07:19 -0700 Subject: [PATCH 13/70] add kokkos_few.h to .gitignore for /src --- src/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/src/.gitignore b/src/.gitignore index 6b90b64752..6290aa9259 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -24,6 +24,7 @@ /kokkos.cpp /kokkos.h /kokkos_type.h +/kokkos_few.h /manifold*.cpp /manifold*.h From 41c9357ddea61012bfe1d19f290592efed178f9d Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:53:27 -0700 Subject: [PATCH 14/70] allow constructing Few from C array --- src/KOKKOS/kokkos_few.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/KOKKOS/kokkos_few.h b/src/KOKKOS/kokkos_few.h index afe66bfc20..6c36dc5786 100644 --- a/src/KOKKOS/kokkos_few.h +++ b/src/KOKKOS/kokkos_few.h @@ -15,6 +15,9 @@ class Few { new (data() + (i++)) T(*it); } } + Few(T const a[]) { + for (std::size_t i = 0; i < n; ++i) new (data() + i) T(a[i]); + } KOKKOS_INLINE_FUNCTION Few() { for (std::size_t i = 0; i < n; ++i) new (data() + i) T(); } From 7fb4faa4392e6fc598a31db54c5b306583956ebd Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:53:57 -0700 Subject: [PATCH 15/70] draft CUDA-callable version of Domain::unmap --- src/KOKKOS/domain_kokkos.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/KOKKOS/domain_kokkos.h b/src/KOKKOS/domain_kokkos.h index 687311f5d3..7b8504dba8 100644 --- a/src/KOKKOS/domain_kokkos.h +++ b/src/KOKKOS/domain_kokkos.h @@ -16,6 +16,7 @@ #include "domain.h" #include "kokkos_type.h" +#include "kokkos_few.h" namespace LAMMPS_NS { @@ -54,6 +55,10 @@ class DomainKokkos : public Domain { KOKKOS_INLINE_FUNCTION void operator()(TagDomain_x2lamda, const int&) const; + static KOKKOS_INLINE_FUNCTION + Few unmap(Few prd, Few h, int triclinic, + Few x, imageint image); + private: double lo[3],hi[3],period[3]; int n_flip, m_flip, p_flip; @@ -61,6 +66,26 @@ class DomainKokkos : public Domain { ArrayTypes::t_imageint_1d image; }; +KOKKOS_INLINE_FUNCTION +Few DomainKokkos::unmap(Few prd, Few h, + int triclinic, Few x, imageint image) +{ + int xbox = (image & IMGMASK) - IMGMAX; + int ybox = (image >> IMGBITS & IMGMASK) - IMGMAX; + int zbox = (image >> IMG2BITS) - IMGMAX; + Few y; + if (triclinic == 0) { + y[0] = x[0] + xbox*prd[0]; + y[1] = x[1] + ybox*prd[1]; + y[2] = x[2] + zbox*prd[2]; + } else { + y[0] = x[0] + h[0]*xbox + h[5]*ybox + h[4]*zbox; + y[1] = x[1] + h[1]*ybox + h[3]*zbox; + y[2] = x[2] + h[2]*zbox; + } + return y; +} + } #endif From ea76041803b95fb6c47181c9f4a27e8333072cd0 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:54:40 -0700 Subject: [PATCH 16/70] CUDA-friendly fix_momentum_kokkos angular --- src/KOKKOS/fix_momentum_kokkos.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 5c536d6ee5..a1e0d65dca 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -17,6 +17,7 @@ #include "atom_kokkos.h" #include "atom_masks.h" #include "domain.h" +#include "domain_kokkos.h" #include "group.h" #include "error.h" #include "force.h" @@ -131,11 +132,12 @@ void FixMomentumKokkos::end_of_step() #ifndef KOKKOS_HAVE_CUDA if (angular) { - double xcm[3],angmom[3],inertia[3][3],omega[3]; - group->xcm(igroup,masstotal,xcm); // change when Group has Kokkos ? - group->angmom(igroup,xcm,angmom); - group->inertia(igroup,xcm,inertia); - group->omega(angmom,inertia,omega); + Few xcm, angmom, omega; + double inertia[3][3]; + group->xcm(igroup,masstotal,&xcm[0]); + group->angmom(igroup,&xcm[0],&angmom[0]); + group->inertia(igroup,&xcm[0],inertia); + group->omega(&angmom[0],inertia,&omega[0]); // adjust velocities to zero omega // vnew_i = v_i - w x r_i @@ -146,11 +148,16 @@ void FixMomentumKokkos::end_of_step() typename AT::t_imageint_1d_randomread image = atomKK->k_image.view(); int nlocal = atom->nlocal; + auto prd = Few(domain->prd); + auto h = Few(domain->h); + auto triclinic = domain->triclinic; Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { if (mask[i] & groupbit2) { double dx,dy,dz; - double unwrap[3]; - domain->unmap(&x(i,0),image(i),unwrap); // this will not work in CUDA + auto x_i = Few(&x(i,0)); + auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i)); + //double unwrap[3]; + //domain->unmap(&x(i,0),image(i),unwrap); // this will not work in CUDA dx = unwrap[0] - xcm[0]; dy = unwrap[1] - xcm[1]; dz = unwrap[2] - xcm[2]; From 54963ba7da9b1b133bf5ca38abfd069eb127d30d Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 08:55:33 -0700 Subject: [PATCH 17/70] allow fix momentum angular with CUDA --- src/KOKKOS/fix_momentum_kokkos.cpp | 7 ------- src/KOKKOS/fix_momentum_kokkos.h | 4 ---- 2 files changed, 11 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index a1e0d65dca..6b8deba163 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -36,9 +36,6 @@ template FixMomentumKokkos::FixMomentumKokkos(LAMMPS *lmp, int narg, char **arg) : FixMomentum(lmp, narg, arg) { -#ifdef KOKKOS_HAVE_CUDA - if (angular) error->all(FLERR, "Kokkos+CUDA fix momentum doesn't support angular"); -#endif kokkosable = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; @@ -130,7 +127,6 @@ void FixMomentumKokkos::end_of_step() }); } -#ifndef KOKKOS_HAVE_CUDA if (angular) { Few xcm, angmom, omega; double inertia[3][3]; @@ -156,8 +152,6 @@ void FixMomentumKokkos::end_of_step() double dx,dy,dz; auto x_i = Few(&x(i,0)); auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i)); - //double unwrap[3]; - //domain->unmap(&x(i,0),image(i),unwrap); // this will not work in CUDA dx = unwrap[0] - xcm[0]; dy = unwrap[1] - xcm[1]; dz = unwrap[2] - xcm[2]; @@ -167,7 +161,6 @@ void FixMomentumKokkos::end_of_step() } }); } -#endif // compute kinetic energy after momentum removal, if needed diff --git a/src/KOKKOS/fix_momentum_kokkos.h b/src/KOKKOS/fix_momentum_kokkos.h index 8c0a01a52c..bc370fe674 100644 --- a/src/KOKKOS/fix_momentum_kokkos.h +++ b/src/KOKKOS/fix_momentum_kokkos.h @@ -43,8 +43,4 @@ class FixMomentumKokkos : public FixMomentum { /* ERROR/WARNING messages: -E: Kokkos+CUDA fix momentum doesn't support angular - -Self-explanatory. - */ From f3327ca214c6dd68180de9ae178ec208e8de2c11 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 09:21:11 -0700 Subject: [PATCH 18/70] allow constructing Few from array on device --- src/KOKKOS/kokkos_few.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/kokkos_few.h b/src/KOKKOS/kokkos_few.h index 6c36dc5786..4c62b13fea 100644 --- a/src/KOKKOS/kokkos_few.h +++ b/src/KOKKOS/kokkos_few.h @@ -15,7 +15,7 @@ class Few { new (data() + (i++)) T(*it); } } - Few(T const a[]) { + KOKKOS_INLINE_FUNCTION Few(T const a[]) { for (std::size_t i = 0; i < n; ++i) new (data() + i) T(a[i]); } KOKKOS_INLINE_FUNCTION Few() { From 7559bc9c5f254b3c388e4fdfcbfc610eb3dec63f Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 10:21:55 -0700 Subject: [PATCH 19/70] workaround CUDA View::reference_type it is not an lvalue reference in CUDA. also, the previous code assumed contiguous entries for one atom; now it should be robust in the case of LayoutLeft. --- src/KOKKOS/fix_momentum_kokkos.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 6b8deba163..867479258b 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -149,12 +149,14 @@ void FixMomentumKokkos::end_of_step() auto triclinic = domain->triclinic; Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { if (mask[i] & groupbit2) { - double dx,dy,dz; - auto x_i = Few(&x(i,0)); + Few x_i; + x_i[0] = x(i,0); + x_i[1] = x(i,1); + x_i[2] = x(i,2); auto unwrap = DomainKokkos::unmap(prd,h,triclinic,x_i,image(i)); - dx = unwrap[0] - xcm[0]; - dy = unwrap[1] - xcm[1]; - dz = unwrap[2] - xcm[2]; + auto dx = unwrap[0] - xcm[0]; + auto dy = unwrap[1] - xcm[1]; + auto dz = unwrap[2] - xcm[2]; v(i,0) -= omega[1]*dz - omega[2]*dy; v(i,1) -= omega[2]*dx - omega[0]*dz; v(i,2) -= omega[0]*dy - omega[1]*dx; From ae8d882b030293710ef693029e7f34b4fed7faa0 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Wed, 21 Dec 2016 10:57:18 -0700 Subject: [PATCH 20/70] need to sync new velocities back to host --- src/KOKKOS/fix_momentum_kokkos.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 867479258b..253e61699e 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -180,6 +180,8 @@ void FixMomentumKokkos::end_of_step() } }); } + + atomKK->sync(ExecutionSpaceFromDevice::space, V_MASK); } namespace LAMMPS_NS { From 634eb357d2a7c93eb6e6ed44de8031e8f428d4fd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 24 Dec 2016 16:09:18 -0500 Subject: [PATCH 21/70] synchronize pppm/cg with pppm and remove block on triclinic --- src/KSPACE/pppm_cg.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/KSPACE/pppm_cg.cpp b/src/KSPACE/pppm_cg.cpp index bbc238284d..8076f0f058 100644 --- a/src/KSPACE/pppm_cg.cpp +++ b/src/KSPACE/pppm_cg.cpp @@ -54,8 +54,6 @@ PPPMCG::PPPMCG(LAMMPS *lmp, int narg, char **arg) : PPPM(lmp, narg, arg), if ((narg < 1) || (narg > 2)) error->all(FLERR,"Illegal kspace_style pppm/cg command"); - triclinic_support = 0; - if (narg == 2) smallq = fabs(force->numeric(FLERR,arg[1])); else smallq = SMALLQ; @@ -91,6 +89,17 @@ void PPPMCG::compute(int eflag, int vflag) cg_peratom->setup(); } + // if atom count has changed, update qsum and qsqsum + + if (atom->natoms != natoms_original) { + qsum_qsq(); + natoms_original = atom->natoms; + } + + // return if there are no charges + + if (qsqsum == 0.0) return; + // convert atoms from box to lamda coords if (triclinic == 0) boxlo = domain->boxlo; @@ -207,13 +216,6 @@ void PPPMCG::compute(int eflag, int vflag) if (evflag_atom) fieldforce_peratom(); - // update qsum and qsqsum, if atom count has changed and energy needed - - if ((eflag_global || eflag_atom) && atom->natoms != natoms_original) { - qsum_qsq(); - natoms_original = atom->natoms; - } - // sum global energy across procs and add in volume-dependent term const double qscale = qqrd2e * scale; From 7a45c72b973552064eae8a9ecd9f06fdca78baba Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Thu, 27 Oct 2016 18:31:06 -0400 Subject: [PATCH 22/70] Allow extended Lagrangian on non-scalar collective variables --- lib/colvars/colvar.cpp | 11 +++++++---- lib/colvars/colvarbias_meta.cpp | 2 +- lib/colvars/colvargrid.h | 6 +++--- lib/colvars/colvarmodule.h | 4 ++-- lib/colvars/colvarproxy.h | 2 +- lib/colvars/colvarvalue.cpp | 33 +++++++++++++++++++++++++++++++++ lib/colvars/colvarvalue.h | 3 +++ 7 files changed, 50 insertions(+), 11 deletions(-) diff --git a/lib/colvars/colvar.cpp b/lib/colvars/colvar.cpp index 78aa2608cf..b9c42d9247 100644 --- a/lib/colvars/colvar.cpp +++ b/lib/colvars/colvar.cpp @@ -1085,7 +1085,7 @@ int colvar::calc_colvar_properties() // TODO: put it in the restart information if (cvm::step_relative() == 0) { xr = x; - vr = 0.0; // (already 0; added for clarity) + vr.reset(); // (already 0; added for clarity) } // report the restraint center as "value" @@ -1171,7 +1171,8 @@ cvm::real colvar::update_forces_energy() if (is_enabled(f_cv_extended_Lagrangian)) { cvm::real dt = cvm::dt(); - cvm::real f_ext; + colvarvalue f_ext(fr.type()); + f_ext.reset(); // the total force is applied to the fictitious mass, while the // atoms only feel the harmonic force @@ -1200,8 +1201,10 @@ cvm::real colvar::update_forces_energy() potential_energy = 0.5 * ext_force_k * this->dist2(xr, x); // leap to v_(i+1/2) if (is_enabled(f_cv_Langevin)) { - vr -= dt * ext_gamma * vr.real_value; - vr += dt * ext_sigma * cvm::rand_gaussian() / ext_mass; + vr -= dt * ext_gamma * vr; + colvarvalue rnd(x); + rnd.set_random(); + vr += dt * ext_sigma * rnd / ext_mass; } vr += (0.5 * dt) * f_ext / ext_mass; xr += dt * vr; diff --git a/lib/colvars/colvarbias_meta.cpp b/lib/colvars/colvarbias_meta.cpp index 2aa88bd12a..285420932b 100644 --- a/lib/colvars/colvarbias_meta.cpp +++ b/lib/colvars/colvarbias_meta.cpp @@ -404,7 +404,7 @@ int colvarbias_meta::update() if (ebmeta) { hills_scale *= 1.0/target_dist->value(target_dist->get_colvars_index()); - if(cvm::step_absolute() <= ebmeta_equil_steps) { + if(cvm::step_absolute() <= long(ebmeta_equil_steps)) { cvm::real const hills_lambda=(cvm::real(ebmeta_equil_steps - cvm::step_absolute()))/(cvm::real(ebmeta_equil_steps)); hills_scale = hills_lambda + (1-hills_lambda)*hills_scale; } diff --git a/lib/colvars/colvargrid.h b/lib/colvars/colvargrid.h index 91d8be9573..135e405ee7 100644 --- a/lib/colvars/colvargrid.h +++ b/lib/colvars/colvargrid.h @@ -1071,7 +1071,7 @@ public: { // write the header os << "object 1 class gridpositions counts"; - int icv; + size_t icv; for (icv = 0; icv < number_of_colvars(); icv++) { os << " " << number_of_points(icv); } @@ -1166,8 +1166,8 @@ public: /// \brief Return the log-gradient from finite differences /// on the *same* grid for dimension n - inline const cvm::real log_gradient_finite_diff( const std::vector &ix0, - int n = 0) + inline cvm::real log_gradient_finite_diff(const std::vector &ix0, + int n = 0) { cvm::real A0, A1; std::vector ix; diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index c8df6c7b5e..d5907f57e9 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -4,7 +4,7 @@ #define COLVARMODULE_H #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2016-10-21" +#define COLVARS_VERSION "2016-10-27" #endif #ifndef COLVARS_DEBUG @@ -198,7 +198,7 @@ public: } /// \brief How many objects are configured yet? - inline size_t const size() const + inline size_t size() const { return colvars.size() + biases.size(); } diff --git a/lib/colvars/colvarproxy.h b/lib/colvars/colvarproxy.h index 59f6dc9bb2..255fba688b 100644 --- a/lib/colvars/colvarproxy.h +++ b/lib/colvars/colvarproxy.h @@ -25,7 +25,7 @@ public: colvarmodule *colvars; /// Default constructor - inline colvarproxy() : script(NULL), b_smp_active(true) {} + inline colvarproxy() : b_smp_active(true), script(NULL) {} /// Default destructor virtual ~colvarproxy() {} diff --git a/lib/colvars/colvarvalue.cpp b/lib/colvars/colvarvalue.cpp index d009e12f31..28650c8250 100644 --- a/lib/colvars/colvarvalue.cpp +++ b/lib/colvars/colvarvalue.cpp @@ -70,6 +70,39 @@ void colvarvalue::set_elem(int const icv, colvarvalue const &x) } +void colvarvalue::set_random() +{ + switch (this->type()) { + case colvarvalue::type_scalar: + this->real_value = cvm::rand_gaussian(); + break; + case colvarvalue::type_3vector: + case colvarvalue::type_unit3vector: + case colvarvalue::type_unit3vectorderiv: + this->rvector_value.x = cvm::rand_gaussian(); + this->rvector_value.y = cvm::rand_gaussian(); + this->rvector_value.z = cvm::rand_gaussian(); + break; + case colvarvalue::type_quaternion: + case colvarvalue::type_quaternionderiv: + this->quaternion_value.q0 = cvm::rand_gaussian(); + this->quaternion_value.q1 = cvm::rand_gaussian(); + this->quaternion_value.q2 = cvm::rand_gaussian(); + this->quaternion_value.q3 = cvm::rand_gaussian(); + break; + case colvarvalue::type_vector: + for (size_t ic = 0; ic < this->vector1d_value.size(); ic++) { + this->vector1d_value[ic] = cvm::rand_gaussian(); + } + break; + case colvarvalue::type_notset: + default: + undef_op(); + break; + } +} + + colvarvalue colvarvalue::inverse() const { switch (value_type) { diff --git a/lib/colvars/colvarvalue.h b/lib/colvars/colvarvalue.h index 6f63bd64a2..3e5e2645a3 100644 --- a/lib/colvars/colvarvalue.h +++ b/lib/colvars/colvarvalue.h @@ -297,6 +297,9 @@ public: /// Set elements of the vector from a single colvarvalue void set_elem(int const i_begin, int const i_end, colvarvalue const &x); + /// Make each element a random number in N(0,1) + void set_random(); + /// Get a single colvarvalue out of elements of the vector colvarvalue const get_elem(int const icv) const; From 6ab716164b43aa5ff8a24c4b2fd1b976704ac6d6 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Tue, 27 Dec 2016 13:17:02 -0500 Subject: [PATCH 23/70] Fix seg fault for gyration collective variable --- lib/colvars/colvarcomp_distances.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/colvars/colvarcomp_distances.cpp b/lib/colvars/colvarcomp_distances.cpp index 15693778b2..9ef96af2d3 100644 --- a/lib/colvars/colvarcomp_distances.cpp +++ b/lib/colvars/colvarcomp_distances.cpp @@ -621,6 +621,7 @@ colvar::gyration::gyration(std::string const &conf) } else { atoms->b_center = true; atoms->ref_pos.assign(1, cvm::atom_pos(0.0, 0.0, 0.0)); + atoms->fit_gradients.assign(atoms->size(), cvm::rvector(0.0, 0.0, 0.0)); } x.type(colvarvalue::type_scalar); From f553e230dbcbd540d9d637d8b046a75469444e31 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Tue, 27 Dec 2016 13:17:34 -0500 Subject: [PATCH 24/70] Update Colvars library to version 2016-12-22 Significant code cleanup and several fixes (walls + extended Lagrangian) New harmonicWalls bias to apply confining boundaries with time-dependent force constant & integration --- doc/src/PDF/colvars-refman-lammps.pdf | Bin 564148 -> 566080 bytes doc/src/fix_colvars.txt | 19 +- lib/colvars/colvar.cpp | 152 ++- lib/colvars/colvar.h | 36 +- lib/colvars/colvaratoms.cpp | 14 +- lib/colvars/colvaratoms.h | 11 +- lib/colvars/colvarbias.cpp | 141 ++- lib/colvars/colvarbias.h | 80 +- lib/colvars/colvarbias_abf.cpp | 101 +- lib/colvars/colvarbias_abf.h | 11 +- lib/colvars/colvarbias_alb.cpp | 62 +- lib/colvars/colvarbias_alb.h | 14 +- lib/colvars/colvarbias_histogram.cpp | 71 +- lib/colvars/colvarbias_histogram.h | 11 +- lib/colvars/colvarbias_meta.cpp | 255 +++-- lib/colvars/colvarbias_meta.h | 26 +- lib/colvars/colvarbias_restraint.cpp | 1302 ++++++++++++++++------- lib/colvars/colvarbias_restraint.h | 258 +++-- lib/colvars/colvarcomp.cpp | 44 +- lib/colvars/colvarcomp.h | 391 ++----- lib/colvars/colvarcomp_angles.cpp | 57 + lib/colvars/colvarcomp_coordnums.cpp | 38 +- lib/colvars/colvarcomp_distances.cpp | 125 ++- lib/colvars/colvarcomp_protein.cpp | 36 +- lib/colvars/colvarcomp_rotations.cpp | 80 ++ lib/colvars/colvardeps.cpp | 22 + lib/colvars/colvardeps.h | 8 + lib/colvars/colvargrid.cpp | 22 + lib/colvars/colvargrid.h | 97 +- lib/colvars/colvarmodule.cpp | 38 +- lib/colvars/colvarmodule.h | 9 +- lib/colvars/colvarparse.cpp | 8 + lib/colvars/colvarparse.h | 7 + lib/colvars/colvarproxy.h | 35 +- lib/colvars/colvarscript.cpp | 7 + lib/colvars/colvarscript.h | 7 + lib/colvars/colvartypes.cpp | 7 + lib/colvars/colvartypes.h | 7 + lib/colvars/colvarvalue.cpp | 62 +- lib/colvars/colvarvalue.h | 55 +- src/USER-COLVARS/README | 67 +- src/USER-COLVARS/colvarproxy_lammps.cpp | 9 + src/USER-COLVARS/colvarproxy_lammps.h | 10 +- src/USER-COLVARS/fix_colvars.cpp | 9 + src/USER-COLVARS/fix_colvars.h | 9 + src/USER-COLVARS/group_ndx.cpp | 2 + src/USER-COLVARS/group_ndx.h | 4 +- src/USER-COLVARS/ndx_group.cpp | 7 +- src/USER-COLVARS/ndx_group.h | 4 +- 49 files changed, 2489 insertions(+), 1358 deletions(-) diff --git a/doc/src/PDF/colvars-refman-lammps.pdf b/doc/src/PDF/colvars-refman-lammps.pdf index 5acaf8260c66e8d3269b6742fac7760b563eec63..5b776defca36759dadaaabebcc6df409000d52cd 100644 GIT binary patch delta 269491 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

e|XtyRSQTA$>5qn_RQy}`XZ&T=PzPO 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%0D1r0$d?m34WAU;NsF`g{7Hu zWlfiT77GZ;kdT1cCr&QZb>9?JBasWx4_hmp%49H9Afqjb3`#1;y_&}y;MKhjwCQrx zI_~8LT6b(9XS^ixU&0rY^S}8?|6@kW!p_K^N`wGL37GoV;ZVqa&u^gQQxW56#3u;l z@XF{u$+=wDY{G}n67={dO#dF}ZNZKk=HA+sXebnUtM zLLs%774XQ8KQR|Q?xB%oSK`GIv{2enbmBm3qTx^t@Es0BZ$3l7!Tx+7U|CK4)p1M} zf)#M`cvRPkJo#@Ci(|NvmHTC@4QG%U7z405dD0ijfr9*=19{6zLi7HZu7nE za^yIXq;6=6gQvQZ(Os8ZOFNDcSHfC{?TB%42_TG(-?ZNCe#o+0E?{dZSb1bKz3mIW zb8D>A?DOtfEM~`7Mb?$mzI}BwZ4w}dLlK(K4H9+T(apa|N81dUQCjo5jCA7Y*Bf;H z?jav)KVZP{bh4$O$CJ_BU~DJ@jLB)KbZfUp%IX=QhG&)>an;vYD*a^9KtbBd!~fzL z2jF})0|UX|%4=;1B&l}ugp)oyuw3ujvAR5kK4Dw7K*j6sl0aklXz#RABr#7IeEw)J zZ$~QRSZ2MGAnjelgHd8D+VtOP66u1(Ct)521?e0pF=D0Q=-%vPTasiL1?8vdWqLN- ziUF0=JP-z|C}OO2hvf17QjVCN_EI8E2PD+iZ8B3^oLbm_yvi` z?Jw9%ZdYtAoM<8PnmRK@DYtlqq;rlv2&IezES_^0N(AB>NcKE1DlMqDL~`15CIGlz zl=%u+UjanRFb$ZOh#4qOD!+v88$aJQFh6>>w)d9YopP5!2m?glAqzX@OAan_ePy{S z{}{hdriGPUK|NaUW+n!D;S$ohKf$7wfdaIxz}Pu|2|30@xz2z@d0c3KmH97}xcFhM z;ls&UZ9gHjMJ}irN=DC6II#E80bmhTA#MU@TpktkSbFW57WvbFM7sZ)()rJm(su;VBoPRxAP_o2T2z5<2^pbm67BehK3x(OG#cer zmH!#0$XL84fj1j>$)%$&>cXO@BO%B^bQ~G3npQ@LQ`fG1p<%^g)f^!zE-|ok@i+*a zFF&ctO?c{fsR5vL)>vpO3_&kmOPgmqB8JVTUMozGKf{&;M+)9g50G`sALazhz$)zo z=ibf@x&o>F0Sss{1@ut`ynFnq?|*-%iZ`88t(A-vuKYVrlE2%5iGLelO%!^O276CB z^_pmwr=eYSlgMK*p~shU;om2u&{nMv647KGNI#GhqKnw$EP@rspjZ?ErWlaYX=2&QeS(?@1ckv(`0Ac%d1|jq3eK< zd;0Y}uipH6u}+$yS(x^8PZ9AZPYihrtg6;5IuK3LG+h3e|-E)hr891XXfmK5{&p!uNsZCRw7~!mfh|>JxP8^hg|L&oxxlA&XTE~+sWL6-SMg1g8ArkrC@n>6YHlzz0InAC%szru&}K&BoJbzUEYhr*}N5|2yR&9 z3Nm%p$(bp>1VCoceYzx_l4)W6*L)Q zCa7;5RY#Xmp102$loudm(kfthWi2V?^<7ZL?^$&C19;uTs-KdyyI|TlACI~rrkr+L z?v~~3znFZ4k!lO|Nx=;iW6{A&MDN|YF{Npm&jUeRu69ubD!M07XCn#18c=WP{4sfl z)LrfjIRDT}Erk4RdJM;}xyOvxV-paI3*mFNPfx)}B1hR$&0zEx_+Du8 zuVX6Q0IdGVoI9zA=oD}NHT1qlp6}qx3mh)8qnJpx?*FYOcc!KSaeR8~c1 zEy{M11G||7T+m{nprn!fSFJ1dZuy3kufLT;CSV-W(2)?ce!&d|gRJ&O-u0H~X8Pz0 zw5x19dyf*FAc?|fiJ9Zr3D2j!_4BhMRU_lg|5tFPSR|;omMquwgj9>jkQ()Xc;Ta& zD67CigzOV}fbbp>mYJH~C0-btMP7;f~4l z4As#NRZW54bM(q(9M+4LXc~4O*ntRZo(V+Rsy{2!%KN|AddC<|;x@{=ZQJIwZQHgz zZ5wynwr$(C-P5+sX-;=My1>)GX#fz8_I$^5_@H)6!++F6uerU)IpVyEecfSHLSFFZ=UPOVI;!DD(Q5;B!odstrSJRx2!u1-BOVyFXdrQ^ zt$hf_HdF?mG5gDu=7Tu5rMo1%z=lQ9H-(|UOWPCkap|1K%=@|*YKfz=tM}6Y+2&hQC=t&r;}qOBSponYJd6(5sP5Fv1=>!1PwltFQ6r zOBXmW)%gdLyk3r2G0C>-!4~w`U1at4X8*R6|7DADROz^DQjcV|>*J&uSC0x$cS^jb z_+cQah@2vL+a!*zsfU4OPv%Alkim45@nR*$lrW}+Rc8(Sw)1_J{nwVGvDynJ5_3-0AxFINfo_Xf0 z`0zCaT#ooobuQx?j^n zkg(@NihtlCr@;Qz_b5>~AFHD|q&zCWMgs(UoqI|ElKNpUw=@GJZvY`vWsaKveSCu2 zb0Z|NF#wKPW2@;8I5+Y2$HOe?C54hL;tnGz>_P_DBv<`uFyER!M!2)FdZ$YUDR44k zhfHJD&0H90y?I>k7|Kdw@v4OZth0y+>!sy&4){W`omW^}xaN_X^Hbtx$gnfJjy;2L z6ZdxsJ&koIXtPLFJAf;8M;p(YRDor`uEes8ZaE5vH-&}(sKMaxp28{!rPLbJxY~OA zzoahxj*X&>eQRdh`I_`3I)j_H>zg%q#}8GHH{aI!r2js<2uU4G#(bQaihsK*Fh2i+ zp`fMVOkYCxYJ(R6dZL=eA110oc@_U|l{aL^GJ(?~86!{uC_|Sc05Yz-p0?v*)_I}9mYXmzTnraQ7|LapFc$Wp^_MynA$tS zMMD4b?Tlh#<7%Q+L_zv$aF$C9^OpG4QRdm4eze$H0KB^etTnLJv7F2v=Qw+h>ExF# z_J_{2Nnb^Q;~CLpx#+Bg<`4H0VTh@Z`asU7-0xXKS=S`u__3*M>!31c+l;wtP^q_6 zl*D>tZ4o)50{u`^BGelRw~nivzIMN7!Zq*mv;Wek!TJAXm;VFkB~0UA1A_-;=4AQb z{!&{h4z~mTKZP15A0#ql6TT>WM`tN{vb7R3jzHN)%~Td>R_*3#ocSS-OE$ z3%M&Rsub9}f3)Z6yRhb|R*y)K{iy!{BCk*#narYSiQs^#@KC(uCLH0g3SoX>$wc5a1xJML zagH6a?$OAp4^#yzunEEhG_fS3MD<9^W93HQp>Yym2gw5QQ`yvWCHHh zqUl}pB%C6M!9u1J%L_q(-HQ$xT#Lr8Q1~Ul9}uDuNQW__d_&fmfmw_yz^scXilX&R z2CK3aCy;_CD9m-}TQh{MD%F_^iW-cik-$a^ZPKd=TOftz(pwFkq*sjCv66#Sk{X;` zw66p%n>SqYq0i>@BWS?nl<8{$Q07PlieiasD8JYg&;qF@f~h^g!^_iA%*ul-)dHez z6H5dUNm&c_D2EQD$*W8?f;7eQohYcNYn4-^f~8ff$z3Q5jExg6D%T1P6Vs_i12umI zhjR&;pi37{sHRkd7=^?yur2=z{o$z{qOw#l)i&JE|JvRT z1b$9(rn=&qy4=mn_dlP?&JD`yc1CWDm_I$A_jh`Npt{#7%$~7ue=oDJCaLF`gFN0t==dAs=^G^Up;ztUyqLGZo&vDUSE7@(Sj5-aZw)3DTY@ttHH_d z&#NSV66xRV9Und~n-_+6r6Ybbt#p@!HtQuDli)#*s`C`cag^EW67rX9;b?R0{pBkWv<`B$rs_S;eb_}tJP z*0zO4IpfySJ21hBW0wY{Av@>)nYG`Y8 z=OzckU9okfYII*-zMB8!O5g1*>};rzmk*0Y^9`V>w*AQkIQ^wInBMZ{?CFUc;7Sn@ zSG|XVzJewt`9(VdISda4?CXEvsMe=I|M-ysXz^(`n6Xy}b9eRfV*ILwifa9rQ?Kho z`~{&wOuzNO(H?nljO7DwF}3%xpB*+tonRp&V0^!#N-oR@^%`Du8f4s&_4(n|k%?Q4 zDjg<7gdDL3fI#K_sWj(KvSAf5LOxPYzI%cbmLY{VPn=!(=jJ914Xh+)wMvRQ z=`iStwyqhiwB*P%nx8{%VAKuIbO63LRcb~|aHYt6g8Uo?7iSUxTt|p43nv^Z#Mr>V zxE4Vx*wf)hKJ8)rFMqh}K8U1}fzpbiIG#}&Lhnw1OvS;~|4M2#}qb9_A$m@7X!THL&G=vuqtc#M7I?T#2P>b4k z8S(WLQ{~dnFyJc27>Enzq#5oR@Ghkqf>pv_z9T@DO8h~c#%g@DW7d?F0o=9sWc)Oh zkEcbD*ygCVn$K3gei|#8B9?JHGI5@=Ib#gh5tZ&tbCKtn^wj6rE3)wrin!{FSitO@ zHFCI^Z*Ke}fa{U?gZuvTL>z9Vzg#1>o#A-Y$a)ldV4>r2t=@E``%z|5@G}%TTX84d z<^)l%-Qcihq2?QSe&!M<(Oqi()+HycBwP zt)ywxZ{ctkiaZlgI*Uf|h^rX>D5kT2|n5M2plPdW$BcXFj{?*FkJX4 zXunpsi{rJG#p$SvQj?WrCfmt9w-R~nqzKx`;*M#hbjEY3Y?E4l19(!?*2Pl?^Lu0B z(qLi)0+Z&Bj&L(~#^MUN>XOpn1h;1bThcIFnn*h9({}T%?EK(XGLqQoFNcd2HvAb) zKM4|BLv50pV~BW?q61&S=u&?}wexTs1zOO&q8wmZxt=#FD6*>bJPgFwKaZz3v%>Ew7TsD_C?``nM9pt|!Vh72E?^89}JYkR)U-l0xw&b@{}7J^j4&*6q83g!KrlSli&Fa+-D)J{ZM z;{EG~IeIf0YfCd^KZr<__v;NyJ<4cx<4DpvsQ|sie?{J@9*{!>*Fd_p;1*1UGZ1JZ zmT^Y4gqMp8SM6vY&DH&O_bNR!-(+(b3O)9)T8K!@4a5vBhKpFb?tH!Gp3%PeZQ_M7R_%dUAAq zQEe$%Y=8P)Ktss+HlXyF+Y^LOX^&a!%+lO261~?Ut(nSCobi|N&!#5%m?}5_) zR7&J7PX7m^my?m{{|%wAurdFyy!6NqzUhb^;Xirl20e5ZpEE8sE>rf5njdMpKHQZi zh0vI}JyWfHamLj8c!^0Q*(2M>+_WAwQcCsHJ%&gq_&8%U!~y8rt2*7hjAGawnGknK zeblw7eaWIVkC0~nfg8l-TeQ8^r(8X(Ufzz@_4=fRzflSgP*Qg{2KDsgS|u#TH& ziE3*PzmVGh<2sd0}-i`^--7!{?%t4<#lQAJxTK7hk0`?&ine1+xsoNh7jU z=$V%XKX13o0M>ng+mOI)CeizwyuK zUcmw*3cVz-Rne^$>e*JKw+k^h+tv@`&3V8y*(VqN2suiucdH*jNc^_%i^oUv#aUR6 zsCI`Z^v0Z0w=kr1t9=(cXNVg1@n_?p$eElWuZqvLYwwGMqA&x;tsp~m)FbmvXampX zQz?zF-Oq3|_#+^?n^t*!aj5qu3zf6yXj5bp&ceZ%{NcKyy==Dgydq#H+FskYHWGzz zX|ByXG6fnP?Z*31U+~%x4%G-gXmI==!)m+trBU<~QqmNj|7>MFiBU ztgr+z%dnIq>uHdcbxmD96iSTdEG|U z+3C?*gda-&k(xP0OPSCmZA9tsSAkHAwDM1XhfZY)QdO&!w`e^%L=n0C|;iQw#SCSiQamD z1I{$|#bGo6^tq&!h0AMEpO`J{lS!nBJYR(FhWPX%@AE~6v&k^U4?QABp$e^MA{X(e z0c;*|@XKcTY^@5N1;b3CCas<`2IKM*LlhZT-Mr}Tx6$r*FPd<_n;eUaJh)hyp0j{z zd0(YdCO6K@AkO-9fAz^l&VYzt6SFTy?F{8?Pb$$>nFyE1WV<-7U_vsz^%^fGEojq7k{la%13`Kdr40qtjX5!37DHk+| z9p5Nr(uv|gZJ9hV+bq~ltJl`dSE4828H*HTBUvu`jC#?%M0upXhd0_20(3S^ zDeAYBBe%vo{J^QgNCj0Kk+9A(f2;qU-Wml-o_ zFCh{Fc;H%o00iOpad`Iqt66xq*aED`uF6h2BZB4=P$CN(tjQ}6Ng&iG(o||vGf7KY%h$`+t!igMG;RS?OqA*^7GB6RdjAzC zBD?E$d!I24Oxv77W^DBXudsl|+}tdxwM>;Sn&H+z(8x9+`6~5^`O{e-7_wb@gUitm z;7||qcku_8khYV%74M2aBiF|AUHGZv11e`kLgy<%%C}!qri=)$u;UOOF6;$_MB8kg zjsZoBVp!<=>u73b#xx=urLLRKnXx-kHQlfO%of2)xz<=3cXZ#Vuhtu@`J zZyv5|xC4MaXjDKkk{g@4Qnvz3V5~o&EKA00S)uaf;?{gK4QuR}y)(*G{NC5r*Vo0G zPnO-}a9<0Iq;MroR2G@8lSL)(xs3Q?na4@aLarHZ=$faZVIUbraXI5sLziQC_)&Iq z^{*me>^2^UH9b=8v-sbjmVEJqEg1f-!z#QqbmV{Jg1K(=@NtB`kEjDWj_u6Xqgiau zN}F-{sbsq(EioFu{;bh~RdTY^f=(K~4HQoJ49x?UG(qqDgZ0wU71Q*f1!{xt;;Bl1 zG!Kl<%iunw|F2gMPRIhm2AjsU%_8c!Cp8tFI&!#WI_kn!c^LZ-lTEm=BHa0|9pyvC z3(-&cKGd{w!w4!f5-ot$vFaKLPF%I$z32Rl)JqLDH05s+ZU`S+R8kLRV=(xI2ZN-kQ-XYZHXV`6) z_qf{3fF5EjwdPk@kHoMGv%69@$V1a!zwe^=gv_JA<%|9l@^U3p1&h68D&AfVt0^?? zThX=Gm&LOSz7f{d*osr?P8D1(h@p@w<)Z#8J+vb->C)mHIG!NRCPikw;IcF`Op-rY z+gfwr4F04vjX;2N@8?2gDL6g&#eEAEoMf+mSj(tCTE3{%3#IBvDQ*c`;i1-QSFGQf zA^hB<5AdrTy19)|H1PF{xv}8#ElI@yN$tmYre)$QP7to7CQOWoHKJc@B_wRu&sG2s z36YiA=1|Xf^%^$7Q+$}nkhJ``V3kJ(R#~I?Zws*CM-IT!^?Y3FhzK*PAq1W10MRld zy7&Wclxuw-{-_nQYkz!YU!*lr*mzO`wmeg3yVo|Pgj(1>E8gG z-HDy}e4@;I&t1YasFL|W*sCN$GpGI?^5Phrj<~wimt>2v?h#{iE-z`Wn%rBS+P$Xf z-oiZ?N&pG?FRgms*yA7)G5E$l=t|9X)@bj593Q}xa6u8Zkz5@jCXFO>E<-nlvu_!u z#Gyl7xqRAHL{bRyM9}!LrW_Nbq-t!`cB=3-l6X^B)_v z+E3hi1>aT3Z%Q(0;39ERI=klq%kA=GJ`b%6=eYaa;jiBjQfz1S1*h>7u`cIZF6JY| z)fnC~q==pH(n2cJ_fNPz455_<&`7!hDUSdwS}sKTeQ`SW_m~>O?6Hq7NVes0xi2^0 z3?%~GihDO)?r?g^?iCOcyI;;rI6814MjI)DGE1AG`e#CUOmyCl_Z)Jo0MS2Xpc5?=L8qOtI`s&?qY8hEd*%bh_ zUDY}8UwFD3LBd|T^M>-zP?<>x^xxe%s}GY|*odF(+ZIPNYO(37OSAYn&D)P|DE8w1X?g zspa2ScKm%$-hgBu$Pq%F9*zc}!y8ZQ56B(>R^)5=gdudI=>NrlWYY%?43;12L5S^$Ht!2St~I|<$AE)& z6rxnfPj115?%o6l(VT#G;9<%=J%4-|$>D;ZwNe-XUd%Kq%QNiz5?CCZf|XfZEQ_dD zMOLxw>@U)I+>>CTK&DAGS}W!1QN3+j#ry_Wd8}*re@Ew>O#eqV3ywk7%+A8) zHxV<(573ub`v?4?EfaUtirjl!m#(wyuahdu7eh2qnPa|&-u2IqFK;XoJ$T}Otiktk zyS4aFJt%P!oR!L}jW|C?S@B@DLvlG66^gAZ7FU$szY#qPSF~SPm-x~AP%v3{ z-7m<>th%+%PPm)K<3Noty_P|5?%KJKqjsiQlY4H&x7o9X${Gm8>|Q^jMz==;Rx{~U z)n_WMWz4hz!V1b})I6!C759ab`KhPkx5D<>vARpS>LdZ~^G@?K8T`|GWaaW6sg!E; zDN1@$@@{%1MwhIE=EieYoL-Wx*)oNF!tw=5@L*-2ZYv?T5%y(XQg}C- z+U%kS zv>7?zk(mLOKKj~h{whW{IdxBbEI&M@IK3*=3n-`rXg3sxe1l8NI)9TDK&@vyY} z-de4DckpyvGifrjpaK{bNjn>A2V;&lME3Ir{+`ViP5X2X9OFq%IY$8F&PJM>Fdn~^xEcr@e*!(i13{>gJo}A)Xle$ z?~J(=H1AZ$`AEfLsvfR9(W;xx9u69Scc5$n^5K|IVAD9&v9H2=4_kN3)9U_7oO;Te z+WD%15+rVF#zp0{grGttV-b0fW(zP8mZ@QdO??^|&j=A*DrL^#+26UG@L;(#YC?j% zBu*GeiS(I)nB1@)(0C|0e>>CsGR8Onei2SH zGu(IcM*Pu!s9_Quy1Y?zfBm0;p3TmMu7tWFt5}KK!?AC-Z_KvUBICp#?{cmr^wh2T zTG%!v?|09~rqQ{$jnL6%VT8Q~PceYi;De!~#))4sK?;Si#YlnzE8r-x;0_~t@|HOt zp!NfW3$U^)_q*2S?YOe3NCe^l*(SOx=Iv0h{rab=l4z0$`Q*|6sHE&H@o?NhXsvL% zpmQL&I`GI>NH~xvNYvG=`4BG|63t}hf7?XJ1$m26PAa2jD>k?7**(*tOhMGcbMLN& zI{3>k*;LOOzfkl6?=nWt2#c82xvXI;3mr}!DP)ucW7ifyK3;5`oSDi2)FwtV7pV8@ ztU@Q^`=*1{>!UJpAex2FVwXu!cft}*@y;*>!_!O^5`GZ&QItdaBaWqnh+f@_6%Z2h zddDDs@HAsX?eLFi^#;gC=i|FC7Xms=%rl>yhydU4F~=Vl{u_Grt=8fnx|}fRUwk!= zblBXAM7$8%4WR@(oLNDDWjs+OT3+JSo2D0d0ib=2X3Ohb3FG732j82bdyMOh{JSUY z<(h|WqqATRh>8L1>nO$j*xsJ5#V$_ecp2!vl@K3WN3%bzTRSYOiftFkys4iDvRv+B zbUQ?XX5`4OOvbIw5|=3 zZK;@zSL229Ph`A8Y&cL&XB{{SSjq;BZy*k)a1%EmH&i|!ZJwkq>TFE$rn`Z4Kd)ZX zPn6o>@6BW2*@`}XNZP$@$HYD;+6jA5+U|CPL5%LmRiCM~Zr)&i-4Fx8G~TD8e9ex% zZ{qfDZd6Pku53xbr$es_(FhG5aF8;~3gl2POzei{D*H#C+Ac{RG_8@pmv{_`ZV`kJ zgCeMo#j-!cU?7QZA%xFNxzMX&YRASp99h9kUw<+fj-m-1{;%9XaZQ^5i10*e5f(e6??$;_Ek`S%hnQqz0ljHEHIGl~faw?rdoU+Npe*BB2ZW#ps zSDd3|c$*7}J@)teC?ZP6ei>Ii_*m6JnThTvqNp$FHnvK?kDVB(Rv_MacX17Cz6)Vy55rydLE6&)ii!_n; zl*F%gOjy*gMyLa%aKbTI3A3|hs*xTlJ)jWKxoeC8M}`?L;GiG+yG(`Cg|}F#W7m?O z)z%{J zNwxC$SqZev6zr5ro-~l9qgJy^%|SKH>>U2KxrWQFWh|~ZJjg-?4RS2TZed5MIy^bz z4b6_%UlNOQ9v+?;vRIxnkGRBv!x~22BMNmJ=H@blBLM=;ryS$R_R5Yk5=lV#W<>(f z!@Xdl)C->Wh#ZGAP5;FK*KaUgGO~hQ%r3{~5q?~69unFvE*c4w)igwaxbcdztY&pj zJ8{^|me%hJagl#vXBun0tjWo3^N_D(a%v{SsH;hc>?JB&+S;J=@sCb)@Sg6k-z%g! z>TLx|la8Tqu|@);rwEgTOnqihb_hJc<`j)&S?b-f0?MX^7ZrEjoujEn=n7J)8|21f zP?T5~>@^r}Nb_-p7q9Izq0~}=mCXVqm$x+7FP-Ngcmdeh`pow=R;3Mi3wBtJ{bH+4 zr42H{7e#RrDTz_1dsGbF%@r(%^5tEF5>Br7Z%*ovc`xHb(wqJZGna2v(00APpM=1D z97Gm_yX4R?>^~M+5rK&zjfc78gzCrJh`T68k>1-=Px&0t&Wp#i4~}ne#d3*&|E6-; z{>!NcBg_A6CIlS+P-6Zga_8#KwpjaH3n9s+p9cfn@gdpwh6BdRS`e==yfZah$Yhc& zc*f%t(5uQN;zq4Gqja56cH@j!Gz?M-w-4zzKCkHyZnMI=1OPb^dUzpbs-s=N-JXx>h0)kF23H&od+qI zt$pR4fL`U@eg25Rg*qvja6vVgSg$-&syN!c5JYkKQqSVaitD&7yKF2s@7|${9XVL* zvIIEQ)fI7#{ZD-~rMr~I$c=mBSN!S<>t6($oqr^%XsSN<*X zw|B?H?mS97<9aHi?W#AK5eR1eXx>i-O7Lxb0mrSQ7o~-CZN1!N~--p6(ldxFgY$DnIBB%bZ|05grNiuB-(It z0GZ7YFb2JEnRT#T|IDnjltaaGKg6a>{|+-Fn0cBM+3R@ZA-XM5g}^P@XshDOXH7kn zuT*~96M;H6vg!oNWRR* zO8IDnYD3BZ%4q~=Pa*@N`IoC-uJdoBMT8Ov>lZyvj z7~gvh)oQCYnwr221XS4=)r+BU{DC%{%QVH(`rjJSVW{6{Ud+6T{-`qmEtMMI4Ao>@S#32(L z@x}ii9fP}i>gYLYEI068pSE#rpTQ=l2PRl`y^`2U?P|_N$J|?@i?EMX_7jws;FWs7 zEH`;fusdO!%H7r43|{@9oywbcmos&22T;EmOsRnh zFF{y-lWfc7QsS!9o+0^M4E`#$!-9Co*t0vPga-bNWy`@V|KV(}i%Gx~pq;%4gP6r1 zKeyGk;;}q5Bc;&qq|JM=G)(Owpg!(re?lCpb0@u(51B{=2;yu#N{q|yobMCw^d{Vz0_C`K1?0V}i_i9H!uxxG&N zo*7+AK+PNtcYGK8i;Nd5t-Hx7oRwiumT|2g~qOz-!NwTn{0OS4fT411o_Kt{hONTb}| zPLjLi_;Z7QtAYdMSE7$9iYiW<&A1L{+;Aw6dnnPQP!H^YtO6>|i@zpwcd8}CwzF<> zJ&QDNucDdFGy`ecIUurqTG0Ew-kk8%C}T&|>M1`K59m2R6`dRhdEqsM#FRN%`5(Vr z{Bbdi;LIUr0ST%@vd_6l;^JeT6S6vbZea?Z`aqi#8E_Y8Hp$LmQ6ox?S*9KjPGpRz zB@nUy7$`)L<$X;=yAl$RFp5%o>MF4DBhbwv1_lfMeG zHcae2W!vRLNTZlCQPR%f@!+bG@7Z!f*X)rGS-2#JD#)rOd?s8*7_6sGE|g$kt0>#> zVvUBvBCYHJwGU96T8l!~EECQ(>Z>*F2v9i!kwzo zuiWe+VS(?h|SzJBkhb z>YFvs^npVXakW>$EK_RZOx0;tDMq<>f{`5rw_Pr#7C^tfq9EK+tz4I88DX6Bq9~p2 z1BWU@_gE-+nirmjjnyxXvkv}~u|`nr)_7&MSU>OL!4gE-?z5;haLuY82^I6nbo zjLhRA2GBA~lJ5v6a#@j6wB`{>RKL)XO}8?;#F!JYWgYmhZ|ICc-{~$yw-MYT3=XKi ztnj*18=L8_E0NxP$G+~EH%|6N8j`0Ui_K~SKv4a%2T&GJ>Ca+s1 zpJ;VpdKh17jZsBb+B`p0fSt6KDPz`ds>E-}5P+2jk@Rk)1_s^Ixh0+q2iJz$JoE*E zAE0H8ucIJMZxTl3_J_$q`Aw;5iwSB;i@N^@WzPW1yv7ZqS?U)`TZe>c+Ro&?9)2Ot zKd@ zojMN8KK+$Tkr}$NdU3OeNB__vRcD%gbOwLy>ep4UBoX8wL3AbMj@=wH7koyC zbs{NE#*a)~>XH=>Z4TB1pygBt-+kNL@;d?fKuGU;z_;`Df(t}{p*eteS9?Ed1dL`Y zq0yg*;L~ef)%|=@L>>wyq6aESBn6vUQ57qH0PvKSNJH}(JA9PM+s=b8g*BD6dzjNd zYdX^50)`CIz`DIidwU**>XO&>V0BZMAoqe&WnXP_S1ft-9mnoZdMbWE?iU*avgaem ze@cP(L8^adA~gD*JvEe9{;vyp0G4FjcG<~%BXlzsrcSm)I??pmKAPDZNc8qWAmiq- zM{`a@2<_yz#J2+$bH_UqiKkg`Kd8TWJSbx}vG3>$ZEtaeeYsh{VIhoO=77p0%uk`s3SxH8qN%sD(RHQW?Lvwx`A?$6;^Z+MDt}iq65zV5;E?z}a%d=l$cGHF6F%a#$;Gvr5th!TQu5K8%W|G9@3Pm6&Ku(`lIf;G~Gt=v{| zOlcS!!F`|oPH^yvbCgOo+M!G-;i&Op&Da|F#D> zRxq5*{{_v%!ovE$Qc*41TF!^;DE|qN7wNJIL-|`YuGi=`sjbUeaX98uJPIb&5936t zdPI*sUbf+G=L=>w=3I)AAb@Pg+|(g5u3d2qoa|~09DHA9Rn6&3+>1kyz%qAqbZnXq zP(U*y2hacFuy5=8g|64v_2%aVsXyO@87$2jy|&&3aZ0~h43OYBeZ0*1W3?GQrn97X zt4iB;jsMxV?kj@$X(-Rfhd}qai}Nm!aZ`I8Tlx=V^Zxlc;9bVqoi50h|IZN36?7XH zJYH34XJ}t{>GQ_ujvx9rW>_l+{B6!l=@AEQSQh?cbCR~Gk$5&dWWG|B>83{BD>O&{ zx8?6$HS+ngA%I5~$FXs}6@)V#X?iju`jsh9SHtXxleiILOI-;#PKruzC@l10<-zx9_9Z7Yq`G1)#HSJ)!m5^cP6YcYG)U!;+$6 z$pD_v`h(F`y6QZS7ZG1b7{5U7Mdi8*EI1c?PQ~K@C;KLNm#-_HHNPH@!_IJ{HP5cN zkf6f1XB(0~Ot37vjNm6RG@b!%K!ZhPocZ`v7=?hkSYK7u%Wq3w7o7%2kAqjtp4bON z{$5jPZ2)SGcb>)@N4Xmtno~Ev8Y?Gx2QIp7?pwS`u<0}#q~XK+PiB8_$711k zX~`%`(B9_;9%Mu@$Vg@i`@~J_)w4%>$7$2+py?2NeBe+5ee++!8??nW(Mpfr8UTlI z9BVQB`IeA4INpu&c=d{qzFce{1yc(g{#hMu#y8S9Wq&~XTqJVnK|t57X>zdl_%72C zZuZ?G7avfOY$y9j>%9i{L#1e&;l2}xMp}yDK8L{1{1W(rxpNH(Mi^Q!i;brUT3uo# zLV*fhft7Ggk^hO0Qv^5ppboa$3j$kZyih_0D zIifE=ED&yP8z&jz#6YUP$sr-F#pFlM_M{*8#UOuhP+L{5;VG~MDS2U3rRsa?9S=hR|Ed^ zsWo@8a>8iAQbE=w>l%M{Iv|#FqnE@Fl2Rx7&;ln^=wGJjif*BqwdUO)*m)ngkIYJe zSCZ7z9s=@@G_qYC_;4Z6t#bmPF}bBAoX`YKk5C#JusTbq6#*{y^JhL|#bsmmsz5Bf~iillnt2$Q3v>eUsh-B>=ofsT_sFXT&7B z8E9+QGif3`h{-AY^OSB^555y7ltxfmvE29vr|SzkCUaWB`_b{)jez@c#H5#^0w1~f z#H82?b~z!aF6}bgZyO|=z7Nj)EPD4(P*V{J?TadA0eEzrcSwekFC5)h(RJ%&OKY_P zMho+44TC@q(ln)o)^g+Dw75hRJ? z@VC=RmCJ|7AZ;2)zwH)0*Jw#fM(zdd&+?Mot6agntwi@VyB|-2)8KYnK z`YJK~xyIH1RF?PjRT+&me2H5SizdVn!h9T_v>*b4S}FKFo#_u45lAJ(jG%W>(|=cp z!WCw&vL$@bu7CYb>ml4IZ44Ygs1XyvdMCDjj?Usem=pujCqBEHGjYtXc(Q6tHfoJG z5=WQ0;$YvVs{lOC+GZ@}=Mg_nf-~EO$f}69mfHNXsy!NHp`11Sj0c5d_daq{d%eq+ z4?zz_BC5XKEOgT6-*#$&gYv02;%8i6nl6KvfbB8o47@nSLo6OgDF$vP0tX?|vCiV; zRvPi64B*{(!YdK11Sa}@$qMFw>y7=?hJ1b}?18%7! zXXM7%eD#cHf>QT@EZ*I8*O|~TUVnA4^gxI1dQ~t<+kzAFooeYr1U69i2VwmmY*w$i z;pU*iNS(nvdBz9*@SkyL>Xz3-m%XJkf3r0xxfM*_M0F7@7j(yQ6J_CfU79 z_N-mna&tRz8%Vr{R{xiX}pV+$U&%vI$wKJPI~;QF-?(A z>W*)2-nlYJ0!26Z!oO~OMv>uASHGAF-3X6vmR0_A4A{+4pAPDensTtk>;-IR!SRKs z{{m%zd!=@}a-z1Jx>$OkTCN3j?CfDUs>|H8A8^xwH$>R-z!9SXU1DLj@vs>7tL}+q zmKtD(WsO5+P7F~f`R#+gULQxc0gVUfcTZE)g)z$&!FgIl&bHjQPsiz{hv?2;aMNlP8>e6~^W={UHHqrcn?`v&asZ=QbZJg1XB!HK{{M z07$z&Rv;;L3D9u~V)@?+Zpeu$tra4-1d`U$$_1zqgGZ2gpNl;wE^1wi5WKX;xcGdy zn}Ta_U*ZDLr7Q}8D=}0D47{nTgMe8(lj^fQN_rNnRRk#s5-!k{u@xFP0pSKPL$B=v zh|r(4EB5MhA&`8gD6$U`KjAxsdvBa>^|J~i8lr-s4I_Rmg&2Dr<{>jEm`BIl&V!IVG}eSU{N+=AYEf#N-PW>o}E5goF! zPuQb*^NcpnRkdexoYNzlA;8A=w)Gn)e;$opB<9aR?FJ1yayN|(1%5Yh#2sBGBDm`9 z1DFoK!YcK1zkfl$oj7e8*7T;d>=w8FCBSQcIy9j6Jzou8*FA;$OeVfscd~$O)4m&J zJ^|*E;PkeRXza3bV26xtxfMI^K^ip*juJ);PvN=WebYKLDUv8d7yxt+ZBwt+hm=He zFXGru$>uS;kd%k%w!`m4LPOvD~#dpA( zy}z;`#(H-QKC7-U>D6&>6sFOT=30ACSlQa2n!V|sJW9*Vmj>s+TITa~9}VbMqNeIT za_|lbQ(nbt2$^~7s>N&&p#TT)U;6T1je$^Xi!!oJF~kt%4w3|h^8PZLxajEb?do_J zc%QDo|G&M}kF{d?Z`O*PDJ@_Y{0Gplt(CMnitM*qXSmajj+_hH52UP1%@wOFm7*3= z6Io^a0W1^PRWIZZB3Pr|$8RtPY}mhlBQ5<<4{I2kdz0InW#igpTy>kv^zrZHx~Wc| z@;tJM>VL3xj@_BH(Xx(ht7F@?opfy5cJf3W+eXK>opfy5wyl%1_s9LN-*AtyX3bf3 zl{uGw*Je$U233j#?a;E_<9+*Od1g7)Sw(c%tJnI{b&Y5}ef3Lw#~a}Ba=XVXJL2_; zHM&(ANXP!mAmxRkFkZSy`!-=`=zKjTZ!7uX`x9MZ$L+a%n6WQ#jYbRm4(|M(qSbtj@n#}b5A=_z|xoz+hNt}dJndJBQy0n z$Q2trf;W6}^Y>gNEBdiQ+k>_@+X;w*%|&kTP+0{JnqP1H-)1ipbSyLfp0jSt`Zmb` zR6K|(m5+SqqRqGiSxvX6oW0R!?6rPoemMu|fGtxRaX{49c9-76v_!j>l zd*U#7J+B#A_NM{JkU#;i&lLm{xGsg&nWTV{mX+zGk*jL=K9>f!EmZZdfO}kNl z`m&(&{8p{$Q=Y~hl9AOxEAv5b!J&VdjxnZt%aY?)NGZ2pNte5}u|3Fif3;F=%`>e9 z?$W-QAN^aayo6+t3nBN1Or1$|LHp9z=npgCZR0YOZ)^mBgzW0B+IO6-?dGfE&v!Wa zlhKv0RohLts9%j&+cX0A9Zv^CN3m<)s!F6}>iNA~VI%EqOkoGb#Oo7rq6FTz^bH%V zOOU8mev5Yxx|KKoVj(Zjaf6ZXe|Zsp+F;$4AcXVPM*>K4QJyLUoGgUCz@#^(=wE2 z*ElW3?czcJ)RQL-D!CMP7nQ#ASPscM`H|aQLp~$(Aja{g=tG(-BnQ>j^;eUzWj(9Y znvyLuD)%T2)x6R*|0Qy9A{TMl95zOvvAfVWdO4vGh~(80r?7NU_+t8eK8CGl!GISj z%^LxR0-J-y1VOf_8b+{nzs}dquX7wL4uz#|jFbK8vPvp0cUPx->K755kpd})J~vL2 zAukUt)VtnpR|Vuuj=c#XrA@HvDfB`;;w50tJ@8D+x}J1bs$jU@8rDY0gp-q``enI7 zU`K_&90qP9ymRO-g>4iHXk(9$p6=}#p6meES&P{HtuInPhl!+}dGqGb_>uWAszYbo zxAZVZKM+S2iIXa0u&$Tb-HK7?tC1HzFv{?>5zvn@`nz*>7rwff{g2YI(A@*Mno@BS z3V62AogC#_D?b+gEU;h_lx#J*Gbj0u7g2OJg9EWOeXz%$1h28xlxPl@LoK-@zUj~V zLslP0sUUK1aabX$L?)-g7YJh)<;7O_`2~j`FoU-20|lBs7^5(k=x%r$o_LV;$2=o9 zHc|(Q4|ZkvLbAjG*bBu%Qa}~S$r-;nCyP3M$y5p$%1i_X?{09;{U&oFM zQ~|Gt*_nePqwSQUAUh`nodv9sHVo*#blFJxjW+WjvI{c$hm|5;^6n2c!(C+?wLnXM zs!?u&-^Nl}9s+RvM2?-$;rHUp*l;k+toYgHGjF*?&3k>rZXWh3k%*X}T)^Ham<_8m zXG~j#>l`@*%peZ-9mXI*r#0f^F}urZV&$c-mXPJ*Cx|{S!#o-YOX{zIqA>t1&v*=v zI>m{unc8*-hs1Zh#eyo94;{0&WIe!(5ZrsW1iF^OvQn9vtSu2e-Xl`>4^TpaVur+1 zD%f-c_SA*8 zR^}~1;{YiA;A5KT15C_{SQpUBB(S_Wg2f&Ben+y4apH@m7i>kvL@UY+LRbAPRO^-u z`MBt&jSp!(fKqQIsTldD@+72?EEB9v;$E}fOfMJc;FhM##eut>^1i2n7#S1@Muj|R z)A?Quk8gTc$rgAfd+Nib& z-yNo2uX#gr!@@X0nIC>!Elrq$KU<*h9QrE8gwrl z6@h&k&aae$K`agPA_ib%kSD97y9AEhLX!#5SOnS)n#{M9)@I|)A3>_)p)-GWtF&r< zv^<8Y!Lg>Gg48+7B-bbo*JqBijPlX6=AKN4EsEk!g&HlttioPa3Ni=G6=$Z{%27)L zJ*iaYTkiSHrfV_!DzimnXxtJ56?g=ImhB4uz|5i$F0oC=@c;ypYgOs$4hFt$0`b|( zSse+u|!-heI&nP0JWOP_ncF%1{23PM0 zz99{yjYTyTMp*lnW++=qM6+|ERD!1i{SK#UIHW0Z>^*i}#t=7PV$ZiBmkXd}IX2u% zDVfLvH@NJe8V9r`KwNIFcWHev+MbQF7L1cM2jrDp;GE2sRZnWGvvRoY<0 zWAK5aEu|{^P$ypt0V)wxb!oGh9r=vuT|8=6tbDweujJS3D*rwX2G(=)-dlEU8}!=3 zp+D@qIQ#;~rO+NOL%(kz4lpHWj|9VSrcJz#Z6=7MZwHv@C1B|&lr-9q2t7Y7xElAJ zL{?}i2Ybw`^0bd1W3E2Wna`0QhXu31?EZ}k|K`h#3H6<6I6%(41B@3@>1@OnJr!?U zl#8rBG?dOhg6Nzsg=n;Utjo~_jz?uZbDbc0V^I;1`lv)<`AKMnqugUCCM4u?E)A9L zT5k;um;+{?FPojx3hA4qmE6ZiOWDh6*vq1`8Gbqvhetk8JDw58M|fMIUO;hO<6AQN z@v8Kp^d0u=ZQaG&>yC(EO#DIC3f5u3D(zYz=za8U*Y|>#(bW0C_`89&HefA#OkP*k zmH|ftq8XuenvzUr);T3x;+|sHr2vprQHY=bpc-x~;TtJ>{FE|mulp+7R>mzo1>9rX zbI#)TKaLJ<75po7*)2s3kOT|W?R4(hJV<`{{C91(*U6vARNic#|A1Ud7Pi4y3fX?U zYzV_*Fip$K>S8Y5i@c`ZwEtDMSaSKKZtyrSu1cQ9AQqDxYa|By0%n>s{R?Nf4)hJf$OVXQ zy@4W0hbMwR&C6(0*FhYQSHJGjFz{={pfvx7NJPo3GvD0IDt10NNkq*sS6U4K0f|6_#2_Y(j;WV-fA7cJ%Omf=O*i z3TO$U1B(oX>+jzO#|OiRl*h#2Z)<$eAL7Ni=5PXq@q&f9J-X@BuM=H)23MDAi*AhXqh! zaZrrGI{s-yc=Dah`+Iia3K(*EMRN*DqYP+D%D=80G5@X-^ra7u(JbGhrNaSM(!@?J zaP|xukZ49IfB3twJk?2l{8*zG&`aX{vu+h+)16P<^<5&5`n56v-OKf=WqX3^+a;6M z%6>$)x2TqxI8q`zB`6{6lYzs2R7`Xk>qpLp6NFaIaeJNF^r)o%BLFU^kSH?5rg>#> zbYwps-}v=X(NqOw1Pe9|tQ>$0`~<&$d!V6II7N7;O^@XFX@W}9?V+4}GsuJWWSWf_ zx)K|y!$YQqhimeB$A<_dCAWHGDrUr&XNK42Dep{n3P_*mlZShTpZEYj&60+T4OP*D z5xlM|Iy*&*FgT0A#59Y54~DjOz#xL|6K3kXSDHT8XKBKj*qek8CJMlWIj&%y={I+i z+5|E;INF$DCO^jLv44udoAZ>%5|3!G0e~aK7!J|v*?4LJO%CL7m(~5V+wQ{DSe63c zLvIHz6m8Vzjjnb#@|8)`8>aXfC4~mTQG%c)H)fuJH!GMpDx z65yo!XOy|(FY~inU(y%kP-+Lye+W&s{}P&PoJ{{4WYN}i-uSuUE!U*AL|M^+aY&Us z^{qxHUJR+O{%i8Ay%%&O3`a-cBH~JUyl%mTgjQTYUY)8_2#U1GoBezQhTGKnDTz5p zJp=Uk_};zB6mdi)1Y+3SzZoUo%8A1YlP$Pqa;$IR#Y`&ZIyL#ak1Z@^< z&1Y+dwClGI$IIVuA4O)j%%1sBMO+vC)pryeTZF4W2ep5S?!2^ISAg> z3Wl(zJ-8T&Ef9@nSh}YAErR0;E4s8H#42g9Sr`2(#=$gDzwAcxafOJ^>(h%JycY{K ztTwg?!5md>7}~p;-SQHGow|4PKJW*&08T>7@}E(tL}*{KBKnn)`AcU^5oCUetO7n` z9x55YDvOKB>*W0uU)+AehP7ECfrl;|L0MOFs~$tb<8_jIOvv4%BUGP1D zXkPtG3X@Hct|TNXausz*xwS^r7n2$}o?r}|yLwqkp&^;g8_VeR8loGX%|ih{N;^Sr z{r$SJGzty-5!M{9m_qA>u+rEw^bHf-!4&^Bye(N)bS}a1aYEFL)tOXHpI{nIfqsRM_YQ#2Ufi4kK`G4GkF+BWW8b> z1-dkhc1iLB9=p)LCqzUrgncMIPHxyB zhoQ#A>r})Uv&xu>@q!IHS|a zR1+q0h>@d8_^E!H>c<;prqC>?pkTYry2zQbERqLSr0^@D6ZrLXw7-$}(81ChvV}N` z;Xg1lG#?ZI2s?^TWGC_IPZ@7HQ8U=51j#izyI3bPXrS;k7jvSfZN{k{a2*SL7jx`= z*mc(Ii=!DDLJO5|vGO%^UEoFJ+OH52S&F6ga!K*&@N1e?>Zp3T7D3ia>@=G zLRLbg;6NW9&ZSk5R5K8G2=EIwZ|HoJQTaQ@)27RS%MHj+WOP9fT+5PH?yG5CWz{#! z=}#;;s5(7eSN1=&f#}W3L`ALxAWq9^Sr*#-EE|mZz z&-V?=;7pMPae}Qyy4Sl|lQ%xeDE`ogJ(wrG9_YphwSx>Omjr3GeVOh<;r%DLyx>%- zcxOU4Ynl1hFwA7 z4f5SidD#a08%v;Efp441ykq$T8+t-kaOq)H)y+7Hel_uHg?DEGex*COJ@gUAQ%BB<5jwk%WuvwXO7J!R2q(l5Na0e7VrLma5@+ClU$pQ(b3 z3~s<~-0Bfc&6`!{ko_MfFY`QrAac_RJpB5gwQ*1YahRpoT+1iS!F~AF0k6kO4&d1^ z_JlXkt}y(V_SID>Va!Jn_T{kT+!r=C7z*`1msR}Am<_bkPC;dU`8||5zJmSm4FBWg zE}5T-b+C(!pB*3_Us^FR7>J5Vo47JlR zGq1W*VGGWypmE48iPfD@d~9l(u0ZSiG_>j;Tz)c>w>XpIPQfnz^r>ignQ=jv(K}Og z6bkn1%}-!7A+~acVJrc_7k_@-C!;1bEz9}EjZ0gd;r}&E?3o*A&IYXQi-&YQ3@`OS z3dfH(h{f#kJi84KJ#gK3GvLQp5WFF*ephc1@r5}*Wf#He-h+cJg*X8$@H|Ubbq^;R z;P{=d!-@q_+vjM_AEKw7yod|lw-kb5%V}7AYn_VBMGm&kjeG!f;Y2wK5=M2fu{Vr; zTwbr#$6*Z6;3e2o<3uN}77?mJw0TnjOQD>K6$pmqA5np#le+^yd=N9(SPo*=%-QNQ zxsM&)J38Hn#=m9d5Ot*iqDVyIgcH8hFhO}?>oZDvx_u?3bEtq&-SQ#je_5!G%RDBvbX1CD{cHvXpP7s;k!_B(8u4A)K_F{OE{^hL??n<=?#;zHBOq+2V zc72*w{~GTrx%c`g6Q8}+M^>{VZ1HSvPjIK<=%_+!Kj3;Fuqcj#irbpPV2s2Y-RU}d(y{7v+zICh+iO1QnZ`k;E?fy;}XRg?(WuP{Q(Ku6$uX|gu zb>EW3cVGc5_sQ2muo$4hapT>K5YjOabV(>ZGm9A#8f3$}ML{Z&$Uo*A^lz!H>VL>c z_WuCnG5=3l&Hv{i{PZ+#{6xjh)hFm!RB^C?w#TRPXesg8c2|Wdf7?~*^A)y9t zJiaZL;KFwgt>|jsl5rt}Wkib?^!UZw%j0&x-bB0~uXm{HcPY$8?^N#mS=so-A=YPt zVau$?h(93P_0#=1X-9DDv!06%U!7eRT3&+byz%MqoLaL5C|ONVNU39`VfUV@|4Yce zEx~+SXp~q-ydT3Hii`x4BFcq)7H-wYX!J*xJwfcZxC$b$9yU}iQ4OoKdgoGT5-sYi znb0Fn3~|A$|1-~MOEEUR6*mc=_Tj78&$1N56uNYQiN|_9Q(0Y4SeqhY@TQJ}?<55a zFpX-LZ2Tn+=%wCvDS?OYe!sE0UqvpWbqCvj%$N5h?z}P84t+=ovLVLj_&`g54ymIR zM>&$(L&qE%Bz@eJKhXB|MO~90qLn|Cq;6eZ;C$*uG^!xUj?y?aRLXgURbUF+9x@WYu0Q4nziY8!|i zJ@%y;K)=-f7$3fnr<NBw%|sjm+t`HDo&qkG(*8 z_m@RJg|9(>OYDT6=Kd1xa2pLz7BmaD081b70&tT*^3K2TT$Hj7Zx5hy?i8s!OE0hy zlbNC2+w;m7g$H9a^gB#x(o?W> zN?7-u%iV;G6$^dt$pGBa0^;)|q&N#wmmXO2M#psM%d1p>J%|zNW*km)7x3vxq)73? z0%SZy3#lTpF6cRr*8y;!t~Z%}(``0Mz95k(TcSTeZG2Lo$G}q^_`r6)*@e;FY4~yZ zS-~c#&xS)sdD@OI-;yuB(q=EXU%moWR23 z5z0Wygh|IEFD{6n27@*Y(E?wUu**%#!CBU5p(fteOh**{ys56%qllF2X~mevagxKl z;^u2vmK+7|vqRn2>sdP5WFh$y&xZzG%}+^uX{g$Nthxa(^!cGGg6gIsDNyfM03&`q zN{Crh9YkRJrx0Su3fbOj<6L$r=}dAMr3wSF1j$t2)+pNtE&~A=J3Zgc@~ejzJq7iY z8Uu1NA2!QZJXuu@JcaN9iA780ea($i)Or=R{%yo8u6=(z&;DgQZb~WSIu-f%6T%%5 zMi_@1YvWHAor1SA04j46r}1xQ0JvBfnCa(A3a0KVAwZ$q=)0smV_$c#I=aKbayz*3 z&u|*vVPBefvaJIHu@24{kL$y4&o;Rm9qhtbpLQG6tv=K$`FnYx#w7$ipq&;o)x$?)x_4`8x zx>nST5Hg8KZK}ufBI-gj1Hx%4Ise$;cTWA8S-=r%751)QVdy2>cU3N7yDYN zKX-PDK#slfaK6LykF)UFSnkkE>5K25^w@^VnW7Xt{D^t-#ng2f0Az;Ufv-_gDj!#t063YSQ5Y6<)bjf#^oT=MK03sW+77-Wi)9k zyghi%i|bfjpu3{-idEH(*+!x6tEf8+3`Pil#V4X#O$427W#m_l(_7gD` zX(T8JBQBrY8@?L71E3Uw4u9wQ9;ogp=_&?wLu}}8x5}ou=S_VNWvwrX02N8SOk%tE11gP{LxU~Bs&gRoVv%kbg zW-w}`;dkbr24wJ=o15B+o&@#<*lo3;44ZE_KACb>t!G|OXgv30jU#@ebK$GpZBTUH zBA|kCgLC=)8FTIs1>vX69QKp`41geNn#c)@DGY0sNy<{bhb_bx#-$C4Q(HbeB5C|9 zaFOuO5*)(}9nh*BnML&JTsqaryAA5&ec6ky(gnXsV2dPUj;2_f|IZ^zW9D(ti5y$u zs!I#cQ=_#g1)|vY;~4T=wW`V2n53pn>2Py{ybi4iJH&Mr+u1@Qb0)p6*kWoeZ|g9c@s_ z{Gg$^$;mQB)fg_XH_;dbdG_6IGEqAUf`D`dO~sRKp`pFD&3wQ1z?iM68$=z07(UUq zN>3QUXaKf5?R#dI`pB4lmJB~PCLUZ@TN2Bhq17RL={)c*p|~yWBZdRi%CmBEJ;uaM zEXSxw2`#70g3?Igz7cdX#kweyjX;amqekvaFY^#&+HBXf;8;)ih zSXwni8xE4EZgDtX!n;PdVyP!dZ8_k~g~{AG9B_yds(?i*JeX!ctZTZ|Cky71TwNcc zKYT5e->)Ng@olT<%TO?jxhh3eP2q#VWdX7p0y%_XyY3`FkfuL_e zIPBkUbU`re{H^i!bt}9W+gB7%1k-Ujq9hwJG1XlmrpAh-dG&>Q{E0l+;U= zvro&|Ucw+^A+o-5fMW>Az&DZu7d9_LJNWynCoKVGT!&Ymmzzb{J|d`>lBnhqK?PyX zo4!rJ)+wf|($Z(8D+P&^CUGKW2LMzaAZWCl>?*4qTb1Xr$X8uCWkj|1vf-)|d{`h))bGKh_RYvg%ho$@S z_1+o=^cZ58k%L}7s$#d310nW)UVWSQi=UA_pI8#OeVS9wb!`GRcUhyX8-={)yn*RX z_w=pvzO(7`25U!$PqFWS-i!k$xiNqyCG(C&*>!C3_EkSEyjDl>P!TY`7vuNR(=@H3 zs@ON4oN60*Xmde8nSyQyy5kKnz(uNoViQ=bDnl61vMHtnQBFDJRk>i00r?j@W{s1) zeKo%^Gdt0qLKs7WORB7+Y9ug}C1EJQN*YIYe19ijxoCEBW}fC37$ts7AS8gU>*1}C zo6Vx9KPl%;P~o%Y_o}nF5I_k$Y_z!pZR%lOwt~B*d*PZZHQKHIVmeWl^`$mhP&YbH zm={w&2dbHLJvg;lC_>h2UFEXiO0UUSx%}!Qn9A^Ev`2eCt)4WTchG}-(*Ua>EHnr2 zv9n*viM(Jm0AG#^Z`tEdU=cv-Y_zgLR2V`FT>=N)R*d_s*%2?V_@2~*&+S)Q9k+cV zr(jRGh$7V+CH*abgs}kRmb$H2UiQ0Wd;^w|QT`>4MnZn8^E&G@|76gvPrV<4^8xe* zb`6V_{%g-qbL6maE=0>14$hawn%OdDxzZ-Z#nydVO*vztY}n`wk{tkaX!MuIeFS-8 zSomm&?Q`(HWcnm47R=b0RW!kKFkvpxAcZG>r>3jqjKdT$W^^6wP%Om_+_8AbkMN1i z3fg|vrR^8Q(i4wD3b3?jw`G;nI2>>Wa>n1>xFF^85TQ(@vNI$bBvveQw6Nx6(8%YW z2bj<&EnJtBFYU$LGy{U#<~Uo30x;$0PXjyUhBn4RrguvraCAEuYSZ&@UNjB1q(+T) zAD;BaJcPu?Flb|qEtAcb9eUokSc7@gdZd~e4I$K!bKKaz2$Kp%t+&qpRwRfckEI`MKlXRAR3qG6e`dHqYp?z z2(a$3$?Nx%5#zmz1{+IK{<*@eJnrppOUVIJ9K5Z^Z~#nQlYxaYO{)4}Bq8wa=|u8~ zk$4j?;K2w0Z*_g$x%xT;=4=;oFV3D=4?(>OLeFmZw`0JlN;VxNNX zH>xfY)AGwh3AZ~@?mPEBaxKT0u{;LC5wiMZfiIECiqe3fI%Vh4HZ4MQcRA0Da~RDN zeeLbg2?8EF1W9FX{4hUmow$M?OQVFsXO{)JqsDQb73g#qjbW8vW^hD92eMfhqm+SXB0UC&@D7B^br9Ul0T_=Z~ItUM_}$$9f6G;2*v;yCDGN3AzHTydyaY zEelwqN1+6;KV0ResRQtlA$OGJJmTJjzyM#0&}T~fztu_y|^}Wg7PXVBF3%@ zY>n92)|F~nbK6@VPZ>CY-%eB=<(FinhuE-*AFoIrJ#zW~ay8dDhkUD9qcA%Zm1$4GJ`V3jM*UIB5Qpp(KWcOIH9!r25a#`7y$f(Lgn={NTK zBQ`M-C}(pQNo8!&)XJH_j)4*@?y4*4y7-XGy3H4jFxL(nKiYMn;!Q%RjGb^u3$ETy zUsJobrofN z4j8tdx2^?l#~?3@Qd*Gf6Ueq^63|YyxGU+Kt-a6oBAJ>lUN1_%?O}sO?%ZBJ?3cG` zdpCiZ8takL#Y3w#UQP}tvFe@ce9{*97(qqQ^KY{JF$-${lx-fAbAio(%PCzzxE$4-OHZGH_k0u&eb18!-C$nH zehDY!;gqf0wKFPy2`@FANq&@YKh>0LSeN9s=&@PrvW7x%wQn{n0KP7hyOBBoX5;wK z;|L7PUk~QfUzIt0erEBJx`y2rs{ z;iDAcT*bWeNpFR_CDnO_)bY6{9SmSNg(~Nu9!`1v96ZuUvGGDYf-(B(jG&o3H?@nWcPS^OK>IqNqTD6k-^cnj4E)VtLJ! z!9>0wg50Q z4feVRPIu_mm#xGgWgBlM+qY1+rbLZ`ADQpa`cm7H@V4?RW;5%K*|bx@@F>Z=0i^Fw z-eHK^tKU*ykx|`*{1O+5MdPViS%N?9-qB)KuOc)3o2e!sa(+O?fTq3&oHIEtYsRC5 zZoLS~%FFTDs*5*(rlNgArMMmUwF=-uZk+juk-PU`Thrll4>W8Lv81m6Hia?!C|WqY zcF@YdvfFHD225y_K!Lh_qCm_K0FL^%rSd@9Wpbel++NwE=v>v|4e!Q#oK0+KnC930 zx@Sm@uY!SiWx1J6HJ|oAsf2=LYqLPobACpV75J_14GPGUH(PYo8RfHXNkLXJ zJW9NKI7!oTQ};Jy5Yj`-`xzj7CD(#Gx`Nf?sXM7P^$%h6U$;Q|;ECH`Byn+)h7+j? zBk)^NbfgBNw?FA8_KZ021&`q4e^!>K2TbrQ5^E+Qi3t6xKI%6&}R z>>$ByweVS<&VFuo^uKc4Cxd_0ih-z^NsF;t+}7!+=E20-cB5kv3;{WO~x(Oh}1 z)6y}9*A#os4cXv!Q*()t*RiJN2t|I!SO=Bej3SR3#%s<>sy$A+lOR2|2oCyx>N-5Z zCG`n-9Z3C|vd|S?1k}tlv5DY{rhiCoB%oe^OsE> zZyI)`zBUrg+6QD^ApcU^PbR_#-ZEPjX0vR7B|)sb+-+znn_|i=vmSsakK!q!M3W_+ zt-}9}D4%o|Qwk!;5#C^9F-nn<$Bc+TxIf=&+ze^1jtp+H`%eLm&pUq&o_Jn|(m8te zy%WuZ%YG_!3cUFof8V}m0uZ11c0kSZd#}%uw~ibt6UEGzWp54^2+Q@4xCusOAuN1d zeZ3#QU|NPSjfe)~{!nWNGreS@MH&Gf$L)RU0%8Tb34cjpKD(Xx?S+LY0;O=hjUDlrK$WcB%?Yq1Nf?mU6Kk#)Eb zbD^u94R(R10?(mrYNZ`R*u3pO$35M%jp9c9OK%v2#LOB#q3MIOMp0Y3;Ka8VbCxwV zF7Lr}T?FToX7H|a7b38^ibv!DNz*mlckd;_qzcY%}%A-_nc?gGno3YznzJEmAAAC*HdO32H|+9N6C)+ty|C z)iLneI7NUXAX$r?$K`+3A3TI)*dd(^SNs)Z%=IfC8Zfm-THnjKNK zoYgfGv=3Cx@AcBMJ6upoORBhUPe^Oo4C3fthn@jJcK)hY_vJHK2%;wgz&`ho!OTMZ zuGQIu%2h{Jq#ECLj}WGg*aw>jDTvWj8PysgJPttVI4Z!@(dTz|w{1!Dhl!8MNPS<88bmetFIkc0ukv;Y5tryN}cDryQ z@YW4&JiY1tapEqX;e}78yt`*Trn{-RbE-`pi~Xm5GO7Q~KHCu;ifik#z#QXq=`%3Y($XoI6qR;x>{8c9~#F z>fXBJ44Gf(TA$s7T1%{bgRjVd3!jW3J~=?3RF1FMyR$u3+A`lO?$fL6Spryn{53Ql z(8lR&ix9cGwA`Cf@Qq-VlW$5TX8Kl;h<5zoQ%r6B}2mkibvERqKBb z#yOaT<;Tk!|jDO?1`4$Eqqh>VG|0cn=2^i)-WAS}#A6 zvdM4bKWeDN5-O!Om)M2YS;$OQ+pA>R0Js;Ti)+qir8P#IaZkm5Z;IruV7SY>TsQz{ z;#S;6E7Ha|DShzfDJI#)>e_3Q`1nw2d7WrIZ!N=nW!b$X*$`L(G(tba)L^3n)FP|i zJnUdtCt)d+*Bv8@PpeHkeQT%ls(0s-UQYdQ2eh=hFM4X4dq!;f`c@cq(N^J#v!V)_kJoZ#U?% zy|2!U(vIM(OKqkA$<+p%OjCkACQBYwU{5Z`w=Vc)pA1u`#$><4cfp%Nojvo^414Bm zrjPPRM;GTtO^dTa8|ED`xgnWBnv5yLoLSJa5H=t%GHPW_GI6PP{i$fEO)o}g4+0Mz zX(!8AL+21a)XwMKUFYEnMG`#Cf7hoe{0)uEV2U)O1Du@$W^qPdlA4@U3vjoV7uzgK z5o0oKu}gHWfNk1w2XJ`v(j=WRZlTGnD$*hOPu64y%dUa9T`o(vWA%gG21h9D6sNI; z_q84EUwV>?_@gn14WOTwcOu1{mqd^*oCZ;L$ve;6#RvMJCdC5H%2#$zsyR9Ktul7n zm7s?*n(Nj9mx0O}RQ6m1;MO-}E7&cckeeY#>RFCN*=U6O72VY#Gad$WoVi0ZTAZcS zzpwm7#>IebFnw=qOtB*qEipUTSrOT?;fQ7Fkr*6zMm&xgrwwsL9OMamz3QqJ9b0Ngm{BEMJAT&pm_;1(`uSmPFJ6iXgdu+v^96&GBemGoumG8yL)zYl(LtYs zEkhy!3QFo2##$CwXMsB`yh&}&8QngOZ|E*uRA+~z*S;}@He#H}??$Me{5{NP?wc9> z7K^a?59|znkqRPIk63ZUE73;$vF}u_ac`FZ(=6cIeKI%rG<8)!p=KdBC;TAYU^po` zePZ{&vgut2iI}({fa465V03;$)={UbWcU^URM$9keUcdRWyj_kx>_D6Vrikmh;-lw zmiGZ;%u)n8{4;(az(fBq4^+(f_wg4pc5MRB{u)19uaA?^q<=2m9K6}L>qtWmKU#Fo zDj3WsXM`0FoJ~SwFi>nY!nn6gWvS!OaVTx%(Iv4NHfd;-f`osvuCx9FXane547{f* zfd6$hH)u9a?6fga{`!$q2@A)vsJokW3T$fv&j7;U-5Lq^&J+f6DJ+g^AchamY5+#L zn@)}xESg8I2g%*-IAkpZt^c~(nJVg1Kx4O#e{Cu6T?=u6U84bwgw3)b6D292Rf}24T?3DWGG(8M>ykY z&a>mMvfvc{(c!GyEruVQ{rm`Ys`{A;PL3@@&T{%5#DxWd;%X4UCj258>)~(%SY|Ys zCu9zmlL@gSO$`|}BFGA0JRnEvK6aizgEYb2etO%~Y%z_)G38Qbi7(~0Rb@8CWKoBd z>e%gmG3n)GbVeu?$YkGaKf{HO>Lkd`(wB5e^*B_-5-~?{MFpiBCE^4!HdfLwCZ`3- z{_#XyM|`a`Nk-oaJ}nck_fPl&ezzDS(fHHLc%Y0ewlY@cmBqJor#ThI4-nvd}Wj*4I2(HzVu^R)JQzPg{DT~2DC^jE(y?vZMt5x6cCur3 zY}-yc){d=?ZQD+6|L3{qPVPTivu_R7q`q2J^=6C*Qrn~*mFmTskK}hC{&WtntWryn zP%&;stQjZ!*Zw!J5*?`kcV=DEJOqxEe7*2zzvqy+mT+P=soEQ~K17v6vdbPcP~PKJ z1V`z@M>+u8t+1iaxZM}q0W4;$qhQEMOx|!>zp_~Cmfaw{t#K`WrRpiYchk-oPFrQF z3*>XPQ___*K;`a)>?$is=)LonkSPKQBbFXb^f+3i4FNXik%p* z5ry+dY16p`K?{*p1oi?N3s_>oD+C@q$uxznCPhd{mlwSEK2{l@TCx#l2x+t_p5N>>c4B*s1ZIPMrI-D0gVk}Oo3o|h!DZjs|0aS zwgof8=oiEHwOQjgLG0lA4riamMVJlJTzD@EhoRge%fy;!)Ob2HO^a`-F*|ml_yomB;!o-@}U;3{NyV+?f=TAZYZ!2-)aIo zsaH9Z8lIqH0OTQpP!)9a@`){Oga`JHnSlOhLwsp{C>51~9?4c8d5#7F;J6zMrfGJ4 z#))rYa9uZjh3M8aLt;? zHOrYZjpM>Jt-b_dy@E3})_#yy3mdXHZs9De?l{TW{TcmLP%j_h#PCUGT;ogmw=DYR zRfG`I34zzVf+>(M7}+;aDCpl*>nm$9Y;hP!0iBxRWe;t8**J26TN$M&Q}Gu}P<|Vj zYB;7SKyW}Ldd3K5UejurHDWqX9+kh!v{W5#RUVBhS1l34OKjYQwvv^k{CA24Be#e# z7S2sr6NEO9ypj6u><_7agvc9B>HfDG&;^b1F0wfCCqmdtR@sk?dT!L-w2cTVEg6DB z;hlSwS!`vcIpWt>cIm@X!&`)9P<6xc#x$*;fMmR{o%ZPx;sn89$RWeIgA96UfnW#` zu$*+~(@cmlNCdi3EaxN!>Wmo7>cM2{Dh0r+8Pl<3L{g2T|=yzd|f8 zMu99JLHvn+9#q6J1}(Jl&$2#rd%miaSE3LrQBr#c579q?iF0Nz+@Qz-llspE_jYZz zfV&1mhv#2{sF9#9sy$lL-7pHrYNDxl#*_Nir_dJ=<&C4@pgxCLDwol+It?|Sdv*z1 z?GG-xY65iEybyJwrNlmcy=~d!!Tn4Aw*a&RU4v7@&mboBqsi!TT6EXzc%u}r;^9|u zrpZlkEH=iJz877nEOQt`1$ud-G1)6oK+)?X&2Z4OIjoAyaA&XZ@XO$j>&#kT8~d~r zy77H$TP>M%T5+SR8aDgsG8=3)vkauDxyRcFChQxrhfr5Fw}*_jZa%n8TqnwVSG56n z1_=?)^f5L6YZWi4rBVbEVZqZgd#^q?%V-3!@-XGz^DxZwwZ0!5CF$9#@P8L3Y!6uE z4Tb8lyuG^^%b6B^_pZem4e(sYa!DtBv#L)TKTQ-T%hrl{TI>$-B<{J}Fk)p>gM*(! zDx}clNs+yy$atMW^NucU?4xghA zp=qeC5a_Vn|I0c^15SXGAhN^#KdKiy+y7#of5rW1NBqyAsmc3KEpmz|+8}U7*r!?` z0Uo)R<&OiSCKkA&(~d{)Xd8f^Q0z$LNaxlqZxUjB47*9pV1cwhQANd&C|vU&;SAA5 zj1^jKI4#FsXKJwREiy=4-RN31Xv9J^YD1P<#tR@DDd z5pm9(Bg<#7o8VPe3TD2r`23gG%@mkKt6Ih=*}tMgZAl-g`Vyxg5)aN{5|l+xl^ za6wNP-9DNuttZv=$sb-eX)Wn`Uj0s#WJA&dnD>1wS@rLV&_a~?{1Ig~EKIne{9j3E z?7LAcnktWcc*zmw^uHBp+EnJOw)zOBQHrEz5jJt$e?`wE-Kt<-?@--)u>z_|+J{+N zqI`dSsBvcE{!zcZYcpZyF(Bny!F!r_{H511-O=F{bxmqJz0g|8#;*bKG=4ci{!Vb; zemB{Q53ncJRB~F3)M+?|n&+&JTF2=kpe`s0;b9M#6hxN))4sVsH@k6jYiU^``s1Zt zgeiS?_BN$pwe;)i3Zj-g_!iI#MZsbkHrK#}10$Cou0?~|j#7U+Xn(MxEn6SG+GNr6 zy8iuTgL)*SZ&1hC^qRGfoOSh9W`cK6eN`T4YK)z%hCCZ39e_840Qh}$!j&tVt={-V4&% z_plCMhWPf1oeqe+q@*^KH{;@{XT2Wm0-h0wzEtf#)Kzi~d>o$6e!ueB~UUjwM3WTQ?@fN_(Ke&scT5L=ZL zQezK)5(12eC(Le;hLBhhW-BUq!ErE)<*6c=CHiX*j3W{iPfYrc4l<2Xsnlhnh~ut6 z@{LD-$rmQ=$ir||2$oQjq6s9Scz8J4egs0Pkqc8Or#9SBCs3-wFMv|UKrjUBVa#x& zu#erd;{dKdv!R1NZml0rh0@NECnmCB%|tHTRKMxre}Zlxx;x+$1hcNpgUIwu;*30k6z>|~2Y!R!e+IxN7r=(0Apk2_rdI?NEm8yq8Y}Kd z`9!S(#sX8rqImiVrv3Mwk7Hz}{Y=KoGVTrW-8)F`k8YhV_Nx^t`5G?C&ORbX8-O-akNv1@0*$sfs*Mr!)BQ+aGk%_ODNJ&< zF`J#{rj(0SK@e3flSL|b!a!6I`cXsXp7zYn4iJv$DZ<1<=k~p1&$U9MLo}F$QMy}w zjt4gUgObs$rCC$6R=O;_ktt}B7k>O z_Q@3MgSmujcbe)|-2DSIF3hMcw4#X%D;X}`$vx8hDO>inll&~t>=gYGRjWs>kP&emlxo%N z>;|lEz%NbSk7|NZjVQs)IfXma)*tE$vSqEo)+N<0zg;~~l>#a10KV$OA0vM`G871Q!z{#qxsXszbjR9Z7xQ(a1_dM;*R%_~cH^(ivH_KOmOnP#m8g zyya{)4Pb`y7{>bOl8}r3UmEM($urt$Mt}+wkhQ_N0rB)W(K6A z$G7mmkjznh8En5YmbkF;%~{!b=7V^PSr_f&uq?>{TPuzT`}ct7y*;-2kFk8qAJiUO zD)J0vG~UdyolM-Br~6epBWw$>!0n4zbNLxW*JdRWpGxCTtjtGKpr;fON!`;SO!_|y&uXoQNP7EQ6l#v|pn_|3imDd!gdXqqBoKR)<&yMO{q z=9;9Rj1(onWQf@kCMLus!skhNKOU)M{}uzmG*VjpN6X2@ zX4yg$yDjmAv&@Q9KEl&$OBLASIU{a@m)&doce6hEXlaUq&u3kS7ikv~ms3HTi`t@! zLAG~7e~KvArb+@|bc#7Ul~@IjJ-6{%cVx47Zceh^oGI7sWwQ8*OV(vsxrAa!erf>8 z{7YQ%Bn*38~b*-AZEkE!E?d9j5xlJUQg}#k|vL(lYjLFmi_}S()2%P z3XeO0E`w+nMY9fDg~M~uzI$D&^Ye&4Wm2NB+iR!8Btjvj2GZkfW8z1&FKTJS`Jhdd z4FO%k=z$|cv-Dn&j7WHr7ndLU9y4G%1WG>}X<~Q7LjhBFJ<&eZUrX(XHKny?@$gy$ z&9*pa3dc27GvTtZ!bAKMVc5j&-yb~{W(YmL{ur5tKe*|BTATamc*5^|cLr;?5xXpFf55t1E=W04 z_N)XpxIT>f_Xg?@G|*VZ&O6BfAkRP-(VW9G?k9PU%{27+KyOb=BOrirv{Hof+VNvr z)dpa!+opN#*NGTlk)&Q z1@y=bbTZ4TFgwJB;@i_B$Sj+0j*zi(|Hm~xk=fvNZ=aMw-uqImYP;G#*^v!?7U54X zKk45ox$#Vx!CjUwkRO0t?SVLC#B^}vuxcqV@&u>bU*~fP(rNih#=u0_?*%9~H#`KX z^q_h6Ypb5$a zLx(|7qH&AtF5=-3Dbxu=XOV0dNw;lNy$KPoeMGv%Lb8as%0mD-yckt(<>8DO&uF;M zs0`}HhR)+xJ=HIL(Ygzk5wVSux(Cfd=~})sv5wj1jfDz+~peCD8`hcdwBj-t-pnKu%CV| zV&w;4n{Rn+L+Vn1z9c4zS)D`ul8(|GY!|F9XWqt2m?{7O86w53p=z&oQ3KJ5S(qHT z@*Jjih727Ti$@#v+H`Y(&0rCZxu=t^PF)=Q{eK4n4A@$r;Y`4((UL{02hZ;bAO~8B za1#fsnvOKU@G}2G_wbf~nU)>dk4P>eJ0hj^RI$wXGnbGCj0TKY5%P+n^VmU~q@NfO zE>TdU-+KaLjU=E|s(+I#npRcPdP5sfTKW4HZ|}YM(=@y9f|JVkn4*;!9~ps(*-s7r zNJ?jxW`4jewWEPmLddL)3^ee+s3|{8vZ69FM(-1S$S&8klVa76e&cLx>`7s=J!1g* zcjsQasS$0|B-%bZb}euTAbwTEwsMC!(M4`jgYE((@hVrvy4J)dLxPxx`O~tXBnRB+ z5C)l{6b}$*8qmhoU8(1p>dZ?wBsa+EPtHELsfgHextF)H?~{SZbJMZ$u4;wFoWy|R zs;$QjhYHl6Bq5fn^iH_jR*B$9P!IUNFLCjqu!ODBn!ua{EQE;gP=)&X@TrgtD#qQfg(h2!cT;M{<2*JhpvM{WO$>!MZ09-=?%Obbje+j zgBaubC9>%%=7l#xIQZ{V*cL5#7Jjj3L@@yo;UE;eEF}IZ7gN_8 zolP-Z(=={GGlBK3821PyLA`*27Egx^wR1zbKT9(tI8Nlj1>S`Gaunacr!q(ZY>rf- zlFv*;gMO3x>C*Va1HX)WpDI9tJ~w8_BH}5fEEtyl{ydF+I3}uYcKv~OQ{leu;$O3>v7BAh|P18qI{O0)b+GFderh$hfZm%&Tbx;nR0mL=je5I=-YK#E{CxV zUX+ujY(kb83A=t~K?4OQF6~Fp(;O-_;7jD@q$=OB5vZ929Rf~Hl#1l=_X9enW<^qC z`4_9Rga#6@!p9*j*PzP^plMZ&kujlbi`R}}?SR)6)87c$_>~c=qD}x8r~rwHUIR6n z?g{9VYdz%FT6hCWz^3`rT z1!*|NobF#DuqTSmPR4_G3ts%I zyBWaD^}xm)K@c+iJ33>co7r~(4z)yKs&9Qq-mqWhztg3cW4HnRayT=HCayLpI%3iA zs8WKY9~6UUr46xw3Mgw(=`@cinm@*paj_rk@zMc;cM|SMF~CD!BqRmB0Z>PfaaIzy zhDE-`T$-@;+tM=m8@JsAz>(DzM0m(fW(TC3>oyn8T44B+6~$^`B- z=LtmE+Olo6Hp)|TH0>N|W2Ldh7EAr*ma%zh3{D)STh-sr4T>9q0ov9hXA zJh#7?;Gs^Y`4;G9U*H~Iz1_pJ{)}RQY$7Xt{hN4ViT_0ebr1S$NT=-U_NeL`Y=0ys zEe+Kb5(A6%|Ig6;rv&HJ2SxKQ|E$xr&WYqdQ+HD&;4>LjTZ-y9y|YyCodnCPm_79BQ+HdKmF&xd5%SpK`EYtK?%!KG#_ zx{60YnCTb#ME^p)l2lHs2*#h%&L$X(cwZ`ls-QR!akRLGRldGw5ndnH|mw1 z^)W-6D}l!?sK7TvNInvPN4mG({G?s^n=^7XQ&+vieMfM&gO@>nE;7G21D~~9>GcK< zQ$_gtoHhK~R7TIX|Ik5qyGQY}=9~Aj5oNKvb#Lb*F|4eA!(QE{22KR=Sm`-f;v6fd zPfiJ`{GxdshNh^jxI;>mxvQz5vgxnl>Q~KkqtvO{?eH(mZ3G!W?i*Th0}RzzosFm@ zDFT_)t(eY}c|oJGrOrwqUlAs;OcQY^{A(P|Tj?kFrkU9iM3NS%GG>RLTq^y8)f4TM z_;0+sDJcA6E~2-zF5@E|BT`rPw-F8p2L(N>s;-QM#@L9ji9!&%$vDisBLV$tx6Cw~ zs0m1oOE6Y_vXKRj29T{bW z6tCu)Q=+!?SqDP{-&-z@5?@*{|jVJQXPA4UG) zC8riY+N!9qxUe3j9h7bX7Wty?ePY=7_-?YRhOvE=tS-B}u$F(HYN_T_7RUmx3F5#q zi7&m+%wdf$d0%Ob@+Z#|>1mh^@_qnh;Yt+xzzx=-V&xG5$qxiH+JCor+wWaE#$|mY zwFjxyOl$~nvR6eol|%vVBDhy(HD!fVDWQ+K?{y3!{qw187kR_Io|dDGDD!EPcI`wO zLgYycA0dsK8%o&nU|x_rzg6j^wXG>n^2y4zt$Og%f0p5uu-SpGX2s_Jo4Ltw=rU< z-9<7W+uvkh`^WooR}qxi>I&Gw)r2>Y%p?sdvL;*5V>A}CUyAKUTbj$~NU70~d%=5c z(IChO=zQ-M4W4A*py6(FOmkj{r`RTHULoQ2vF2wA)dEjx`M7N&DLohR!KX0q}6Lx0WpW|H}u>ui`LWK>*d-Pzcc@$f- z&>!5?9G&!aaq*Xz;{-e^6Y^u)mqBgEMxa>o#`XG0*ZpX|d5qap79Suaf>&1ID`9F_gd-@y>R)|xx| z3PqWLXDxSbvlP;Ytn1CcaLt=lI$S*|%(Gep-9N6f8f2#p9lA9;x9PGa+jalLqK$20 zn8uNSf6vTv6A{`vq|^^)@!1Beev}Wee>}8CIzf&kcba$@8aGLZ(53yF+e*Bl3f8DN z7ufM=O^iy51n@y=QjqGw!zTF^jfJp{&e|I=7WK1NdFbir0Oy_P!KWFXFiy8nQo5cros-XUu?Yu}A@XK7gP&%AiAkbuQ`y0hms3=W@Ryb9T zeCD+i>=z{tw{3+2d&!0t<(v<2Y|#BuU7})=wTktad0l&^wQX}0231yor`FJ(K}Ayi zX3+D_eO~`k6#;WU;)mhVP&pq}5wie=l*;@XS8Wj<3g?biIOtF2Xp;>V2YDd6N6!Ym z^oaHQHr>#FNwkP6V4|wl2^3cfKGAm)o-Hd(Hi$@+G2{0=9L~6xGyMc4gaOmvTKMl@VH=5^~`Itc)KH!9&ocAPO;Rl|jWVIq<3+C&)Mw#h4@b-B`j1SLwetNx)$ zM`#~TGp$L&sp&3uCq`j39Yl7??$A>${|tyKz3_%T8#G6RmXt}NZ zPh8pz8Vp8IEhU)2hMT!5$@GmEwjUVDbbxdaH{Tl&oxpU67*txqZYld8a7fKCk$!t zlExwS$Q)bTnJ?SZQJ9^b9-lSH(jmz5-LdF^^Ll*CuFCU)NO$Ud&QoT>n3%ymf{v0w zxBtR5Un12kE9WmM99wCF9n}5$O_;~YVJtH$Zzht!;byyCWk0}&Gq^VPtCV`uZ1lO= z37^;oDDpi_)gd3P$zz({q$Pw}FPj{;y`)QSl4KRzQD`{O5Gv>?$PIXP<)S3W2nlUNdu`S|NR>;$3a?^A* z;#lJ7)@{-ZR`42b&AGV80PliqePE&qzM>{Gl0&K!2z50TwN;}~>!o8Q(W#x&3<2oz zALc(|`fQVZRKzvthGhEDCwcp?1BQ&<8pq10=de9e%p!@fYV@jj)f6sDl_{Y*&-gwr zI5v2}oPPn@Y_4`Z+F!fPmnW+kB~YF1{wK~WJF#{r8T0#po25Wbm(7v?#c-^Ix${{a zDU5Jzw}r@%8B9~X4-$xCG>EOpO__ZZD66=FlVoXCQEE$qd~I;a=Cmc(OYOdFcyqJl zZ?G65a|9VN@L?UH3;WumPlX+(%Q0V~`hgZ&f%5<`xP{c`r&M3ThUs_EskM$3hCs@frNcX}o3nEmXhqk55H zxGVcWhKgAqy9Q5D0kb%Bp*T;Ys6PT{2O zCkLHtkqj6=0}G|&vfh`23WD9UC%Tl*VD_2a;bXR}sNrO(JWO1W$<=N^=ky0}kS$^N z92P&4t=_9rKEx;0ui3xiigllwMw~CBKMlb-8078IFG-TtpTUE(*BTgM&1Yk+79mW+=yNXiD!LH3VeC*TRrH=4n`4O(wiCSC#*K4J}n9LsTh2UQKBu@Pr$7VT$l@A z(Gzpzb0Md;>8)(Kl4Br%*@F$E)K`#E4D}ztx0H#w%vbRZ)&-@e8|Gh|gyQ#`nNwK) zuU$NoV&AA{fn%GH^^!#h-&(5A{#F{@fLx$SfD~`V)9l~n` z_N4%Ccv7uMC2AcZN?wFC3iD~#-bzd~~f2ifDsc?$LXO~!8OY{f-4#Yb4 z-bvM_GyMWF%k;k}zeVd9|C?(b0b!rr-(;0RZV2Ury$DoI@Oz2&woM0AexjY8WBInB zNwPQhf;g)I79~}pqg!;#-yoP}kHnUg-$jI1krXj%1)0S!whiT^>&mjTK733#FdJHn zFcSb$Jzh`*n4E+n>DZkA-&LYOdoyPuefP zoabO;?XJ&AG~|_AQ)oSJl)N-L@UjIQ$SVvYnp156hh9P-Rte@~@DimE$jPOEJ!C-s z?83T>$jvJ$>)YfVW1y;0{~H0|_FMx=+3rVA$0`$zha30dTMxJ0-JW<8=O8yzT2s;= z+%T6vm@CZ;(vC#5I?dN@fhI;jkSyd6WZPycCz5KXcZd;~s{MfQQ=27ww+(46Kjcq+ zeE!M+tVVWOk@n)Q;9rA|*N7X1Pui1S8=d^qgJ1jkVP~%X-i=h6Jx}^`=j-mmXNnX+ zEdJK7SIN=d`-Ygx$1{G@HjRgH6pQ#BHq^p301gdde{{(xx+*l}RFAMwe$r<1?;4lD5`EVH%Qn01}7 zEOVVts$8@PYh1>&PrBvW$V0IC!(u0(Qr5q$k|Kb`Otd`;>V{p2td+RLN zIWRvDj!iE-IH79TLd!Z4#-S%|u332`=YGixUzgiL_wdX%`TEgM#;0x_=6KhUnK-lr#7B`YE<0H)Wg0u9o`VU%NwBvb$A6u*UqRtB z9LFtUu4In=`Ze&Io~HPlc;{C@s&;g<3Sl)3_0h+%!lod%WmQZMr4;1>J{j;wxBcd8 zOzSEHl8hqE@Wde-%AgBhSSGwt%U2x?E&;SWyeF5?4YkUS6FW zN8x&U08E?h<~ki_y1P4vwBGHH_jRtQ*pZUo=wwMH@#1C~MDH37(uXUv@v6$g$Mj!m z5MkMtVNBIz5L56;d$`z?>a zf@cywIc-1dElaT#w(;8GoOj-V^wDIR@;<(h16b;D7$Z!L^rOtNm$|S3`ovmRqUe+e zy9?yw%>UA)k5_w}*H(>z;mok80S8+dS7?f?Hxil2W9!l1PrsPuSCC6E3uNDDv?gm3 z18_Zb`HF;$KWO`jv#H6Fqozr0Z_b(PDF4k+qg}oZwvPX97X7;-9l*EW1QJLg z3t*mwLks|eQu$R6f6jOH{De}VW<@%fWNC(5kg4DW*&*3wjhKt2qJQo40?rHjKqqdY zETA<&|4%~8|9cUckGU0j2u4COm7FeEPMb@mKdoU6T#FBOWt2>{`3DlYq+{{&Qj}piLAGF#?G&zbs8Ih1SIwHcT`XJr0x^Nf=9- z?p%%%`u7F||v?tyAmX3~Bp399}Sf3J40x9!$$K!%wtyXW#Fo2=| zcvv*ZC}nd8tXXS8?R8GbYRM~u$ah`Im-_-Xqc!C;ymKspI;b2{02+O6Co;M|5s2cg(Kv}q3r<%XB1%tu5^1aY@k0>5a%Mi z!+NdD+9cTgw`FObU^)5*O^7g$+UM}naqMbhvz+7o?R21S6h`kP#$PF+5D<0Cly3wP zjy&}~QRu>Dw^zY9b221ntW`tkzY<*jmY*loal;+B{ZPJba=!b3v^>T{kLifckxf`0 ze8REAM7o}~RqZrFAUz)WRiskDtmRt&DM*&EnxAEGl(2TU^zN>oLkpaP{lynZdwI;< zK3?lciINa*vPz=2{Q%)6A@Wki$b^JaWN#$fZ>h!HwkzH5tO;$@Tn-NouQX2Rgc(M7 zetpZ0C9@UCsIzH+$KpHI;Fhk!slKQ@8@&u}aAsi@Z#omehb=BQQC{|_3Y1?6np>?W znhGLz{Z{%c??u4MEKGW9c}w zy=wXmzx?5iv+US4Y%+Qb?crzpJo41h7~UE8YwcDwtDEqA|8+(=?y#}I0P#^1Q#M6_ zYUQ1wJu+w6sJl=o-nJ+xAXtB9A8=-V_S>olKW)-kl~9VZl=1PII$Cq{Pcc+%Mr|pP z9i-6C*GmDQJ8B6L?+Fug)2WOMdSDFrtyy>3GnDvu0C2raWXG>!TA%fhaOaMUx!Tz9 z{(1@0b-zW%PAR;MAWG@3`5N!G^*sj$Ug1cBMrmJqoE>m2}kapeM_$lq#7} zlF<;hPnn@*b2uMZbGMlETm&B>E}}F;F1v3GS9yaqizBzflX7gin!|}qA|(pUuJb`j zCpFf8-HFzG{iyoRz(jlpT1uvA&+DKSL`(wSa!w8)VZ+~gl`My9q}KHGUf~r!1R|#X zw1IM9FXDltldiD@D}=IKyjXoCIigZyr!@b-PA~*N>Y0aTeL(OqQ$_MH^Hemq{q<+7 z9LD78yp+b*xSz%P`%kAl%>6JLY51E`lM>GkD-SRCPR9~wd?MT^%xW@5FXN~!b#pra z%$He648+dAt?4pL%1qb@E=kc1n4X*VE$$=WGe|K=?p7zyGop--X8=D zSe%-pH9}%DVVo=zJ-M0n`sRCZf1%j~`hOlbP%DM=DmZBr*Abk9M>Q2&oMK12eh^8S z=MtSNF1~J7jCZ^bJ*P0bnBz<*+6g}2-I>8?ykJv5W`i)@Z(1ky>N#8@#l7{@g&+uM2UwQtCRIrq_QXJ&&sl=wRJKE0&RUYj>Xl5M{vXhutx+AKewJG^YS&ytt(bT{Ff73 zX*DU2mWEC7U=RJQv(LpsQ|c)BJ=HXFxEtH7&RvMiSzc?0ijtxfML^+tOA(C?QrF4h zc7?!-dHtq(^a+n*@!V&{oz3(TyMP2G4diG$wHv%!4P@@CThlv9;uA5?PkUbs8KO(QMx1-RhblzbHHXKIDXC)xZBfG zT^FZRu5;dv_34q(IKbWv&#!BxmRCndryWiLiBB0)Yu0WLIrkE_*ImQoc2;Zvr{3(x^oVu8(b#jWBGWU_ZN znSMHNhRz~y7?Zl&LyE4*aKwEAHIBwlipK32rIC&!{iMAmQQF%h?N|eFVPl=pOI03&xr8r*y#DSnvRF=;zgvS`|DoT<#rnE= z)9%jNV74&k=XRs?3e~d5U9T8K!h=7#eY=MXruQK{0Y-)Rv&+=?{kXf>;lbSq<_1la zLbiSFnQzw1c`_M;tEPo%E#YZ_fj8h#k+)O$%&?kffzNzc%A|MWTbVWj^sxph>>7sg zMX_e|>N7iPY%B)t@veOqU9=kN{n|?DCYI`N#|}>E@Z%EWSzBe$~+c3dH2H zy(02ARN|N4qXPn+nFf1$)!mw}E6+33<*VCpj*jrxXO(ln`3BBIy}ZF@ofdLdn1O$h ze6wlqPd|>lw@fJ5eyPFl_BErP!*3ta0qVL-+^gFq6EkJ3t4#|uFHXS>ak{kViNsO6 z{|{U56rD-fF51SnZQHhO+qV5B>DcJFW81bmwr$%^cK>Vbv(L>xMqO0ZebuOX-}%gW ztizO$R;I4Uj$`9T=lbim=-fl&eGePo>S&%ra=guAqy}9m8^0!-mRWr-?iU1UG&bx! z+1Tb0RD<=9-?F zr4x_zLBVWe)#29?UMHi1a8RUA@giDiKY&eJ$|GWh<%aE0wX^+>#Vi0TX z5;ez%fJL9e;l@PNJA_MltpOwyxI#|_6e@3w!D~2lu@?xTs@r#r9svjepzj>+wy*Zs zrTnbKNl3msCDD?FFp>ClOB12;p0;29kDRL{&Lrh7Rjv_kQ;vv20%QQmD5%HJ!I1vd zwu;k--53~RvzHY}Hf0?GxxgTglVU$+Tqi$6NL+A(S$bD91Oe##yIScSY>qvn5<%M^ z6wFpOX=wF*y)k+%HP^ayK>awg?sx{O1eJST*?vn9&kW>>DQLG(%Ba_lIPKBmoTNZu| zQ(f%z63SZG8YbXNb6Q{O;;WAj*4;;G4IICfA}*HA1JC8V?f86^(u!=i-vP`MBkFX8 z{4kv0^aHjIUU`d|K)xLsp7@}FMgm`-*2D}y6i4|5OhQ9#5Co#MpcF4 zCih9kdVmfOX&82y!x7$gAYJ6Te+WgL^G>H4xT8S5(L!dUDwwfi&~fp;xeGvH1w`G9 zra=o=-K{aNw^`qMy0^0-1kTqJQ$zu`C%6@3BDO(*Z?HytkI7d#tpMhK6S&91Z{%Pw z@fBn`^YI%#CDNP}uaKIT-k8NGi%LQ2;6W{EcyQ8iN&iL+8tc3Lhy0StKgKU`W$^OpV(G=Pf5 z@!#Uk|35XLBkQ{P_di*#TPTf4CWv3a5EbLX&IMxS4YWrl3K|GnMx&vj;2c29XkQl# z{9CMEPE<4v`qB(TU8SYDhA%Ab9lbI&-}f|Y{y$zH=UJXKy(rRp6vb^F-JLYal_b;$ zWWNktpG+T#<(HlW9e<8r`XIc?#q?-W*5RFXqyXvlm5e7PnNyu}pBE{ygZi})iNii|MEDse6S7}EGt)jhx-*ZJ6@v?~KCL zWE!w)4*Rsz?UTKL{0O+2Ag2ZN+j7yR&H2%jppg-58Y(~%?X)Pzyk@U26r0|yf7?yV zjquIBu-tuj261Lp2;Bc!3ch+@+w!!kqz3f#DD&j601x*O8!5xkHB_mH*_v9g=B#h; zPDx|qhhM0PBQBnWedp-7F|n0M53KZas1^Qj?zv1xwEwfae^p`gKx@-M6@(6n#L4qq$~=G5~Z%}DJr1kKB`&H$h$ z+Udqjv(t3RO|Q+sr4WX=rtIy9OABq-*pw0VEzj53*rrwJ3Mxt+VgKCW+mrsBBG%2bO4H^8!){j7qGVFXv(r-FcehjepC|wdKa{O z4z6fW9nwWB46;GWGlHh*^NE}uc?15OoDZjcpj)4&!aL?PJJvJblK61pAi1p?LSY3tBpXRl* zbjV4J*xV1UWIS!qnBX(P_wEq7vOG9jt&R!R(Tdljv*)Cy;&j2kAAz33c>r_?BwYJ$ zfCxSozxPE5V*ZTeb0C4o>W=b$7;if~37hC$wE&}H-We}Jali<87WHs$R1^X)C?12= z)3hi`w>Ww^I-<$3`6-?llf@Z(3TSNpYe~>Qo^J9Wq}Aj<_s_n}uMBeGKmmtYUjN-Y zR5%dVXTPgosOuf|MJy@9@dl`Fa30(3DhfL06!3Ln!AER|&?6jDE?LF`=P8lMwhr~m z)B520(MR51!ObB~z2#SXry7J$Fg)z03#kmQJr6Bt1YA5_D(XI}7A3KLvm&UO>T2(8 znUR>nfxFrY7LB*jdGw7WGO{{_Zm}f*`Ul#}NrNU)1%9m!A4vfe>Tx;-p_!v*bYM|~2^k^Vv( z^OptRa}2NV%d9{xfCR&_)|LPeR<7fqipA=Q3m>6KLr`^mc6pFH>-dytDgKTEDdXgC z2Kq=Ei{Q&-2xKZfy9NZeu4`BN+-9$T^n4|dQFj46l8G+o3XnHpQx6rI#)GpwVaD2| zf%P`U8JFkL>2mRH5N*oAd!tho*xZ;>&sv}prg~u34^Plc23jsQ%N6pIJ=vvK$0_CzP>Slvm>J)GC1k}Bu4X$wUL`~0E;Tl;tk_L*GfOqu$Ml9cs;#9_ z%~2@HXA`KEo#*pYyePlWFm^XkYQlT25Lu^NOR zh2bVDHglx2lda(Y02S9zd;QhaBg@6+jd)J_k-XEhL zx50>Q*1)CFg@U`h5}NP~wP`Hq@B}ivI}$OBQf_S39z5ZRF|YeNf@nM-K*m>2<|mnm zOm}R8403PS9cjSmCom*d6k!y<`L$mKs03rPv#J5 zzVC^{7O~4=#1pQM;ApjTg*amok`Vmd!xz5k0Y<6#$euyrp_Az|;c}&TawWzmlOp{K z|Sw6K=gE5jwJH$%e$d%Svln{fI zQP_WAP`bN|1Z~~Na^+XF7bUQzVi<6bX9b)8YufB1oi5h=THf=-D|31q~t!&H7AR` ztj3B?0gK+A=bw+(ql8z9&V>yG1ek(gqpBjFGM#`C39S`*o7GqLWO?x5)6%3`Ozsd7 zCaG6z!xhd~v<=MLq~F;|m?YAdZO~uym~hNyysQ`JkY`thFExB$M<+4XKI(Z4TBROL z>GTujjm?YfkAo8yE^k8vIY=E|-`C3W2f7IZKi~f=+0$$db*=>?QZIeV4xoFjnsnUU zcL(Bf6aBiw)_S~}z00B?^hW;o>ku$LjI3#i;jK50f3l;X_m{L4n7&SOcb(K7qH0zd zbxk~nn{l_Dq@nlN2)F2&tJx1J<&=2?G)Dlh{}UL%XfLQBWK^fMh5~ zQF=AT{P@^H-weLH^jR-I4{#W8<`Y^^)Q)pgTXqKuR7XgPJwZ=VNXTMWL&Mz;CSrFq z;{^41=aAC2mgn1=)k@yq4z8`|Wy>EJ+QOgWmXG+)GWd=|489n}7~n%j^~z@eS5eJ7 z->YdXkDz1|c?xzCfTJ^D?EBiCG+^>fi@R-*jFDwKTJmAhYx$sq2hi@t_$WP3#DOHh zLU3JrJ{(!Cn8nSO-`eJPL8vbNrdOp2O-3u0_!hy)bnAx(wkCfSzh5<6S&dY*8MXi4VWkdz0%LAlj>Ev5R}TJJtJ?a*n)O z%0oX}xfvd`(DN*lXcS~6KH#7?GX-~g-Z_mxr3wCLog9nfzu?9!>>U3j8vkQw{x@0H zg8Uy5S|J-MaogSTBa6r8fpn=nZ}!3vt2`kUjO0KF33~A3-C6Ao2&@Ph;-M+!v>e|R zs0-q;g{_f=*ige zPAdSx)+k7eSt5#T&jENZBM^WsxrOlMed@^bl&t@7B%i71UCN#KCgmd*^>z)N$bwBx zmnF=;6h?j#K9x%8_5~_m=1{kFk<8M~gNtRxrS|;VEqH!@S{?_3D{24!JeyLQhY94?W*>%dgt8_O&bif4og(Zrkhw2;#|MZB8;L>RRpdSRDyUd&XY_2w+`9@35_-y;d`J(26;|Q6_Hc;3ehQ=XP;Yp~W5Zka zK&*()0nwgBxRcpR5#3@`KuX~}5Suq*QrGRJ=Y2qI8*8{2!39KIUubs3COaFdy1#E; zv_#5e$t0NxZ|XLMq5+z^j4vX&i!S`v(ppktS`un*c(-0E`saFv`yT?7jRH0E;>vXoJ=KXsdXuVnjg4hC_ZbPo{5mYa)o9kO`tNbdf)2vFqj1JUGWh!AW zi3v|YB*d$>c~s@*VuEn*?G|+wo@pxda*)S^T_!ptS_)~(H32wyu#<+IzXX5fvc0n{ zCNDq`vUL+^pOsXE^LrKE(CgvYmE=NOBnD2-!k~eRV&l0^a7%05!z#)Diq;ope(m2#vmimlBPdP#-3aM8_Tzt|~wH)IdJV-3fTGpm9^pS)>FeChCC^ z@#2_adG$KMh=(Im+>c5E?fC})M%&24<57>8{ zg5>F7xcQrUTJdtB(a$=9W2JLf%A~P-RLs8`mvX$id=m9|uJ^a0r%XIuSa7Y_$AgvL z1LN|}7%^cy+D(WA9pq0bEx!xe@C7|1isT^a9I~GL#nk~J7FnkZ>eqBMG5W1aBL0pG zA%YNOuK;K?6y%WoMhwZN{rAZ?gDEuXN|=0PT9#G{41RTp27a}<7-75)DdwOo^5dZ~ zRmsW43MynUn$QMR4K5_>3N31UD_ytY18gB880n2lNyt27qR`jny~u8o1A8^j+=N#s z&z!l1_i(xD3Gfev5C6Ay^bn1FQ$irv&%3FgRSw{#>xXZs5i23sn$P{^5RO82*`uny z<6&s3fdYwxP#J|dW8%n3qP@|^*G8(Bvqe@wiRkftu|4qsMQ}A8bM~v*fOX{^OHI>U zUxMq0IcG*j8V&!NeCxMoo^l3auYv&6K(W8E22fU zECF~5sE8FY6G6eTtFt%BGIlMhcZSB_>Z+68INRi?sL#*c*}&Ef`m5pfv3X70Zx07` zNYqbX)qS=nO@B)5LX;zU@OC5f%N%1?X3|mq7+8DaOPH;eDSxz`P{<^Tw`$u86$v+1Z=m(*n!w$+df>M20ns#3YI44ewzpk$Kr%Z&a8-7BblprlV|Y^w9(x;9kJ~!#MPK zZ)7|OjZuLuR9*Um<9Rd zdz7@hQBy}a7OC{7KvNnp+JU~nNd{E*i(d(^VR|H!*=DI8t?`w*kdJsCL92a;U$Qhy zuKi|YikZ7z?}|2|8B?k63*t`x4TbHssF}yoxrjVrLC7yFtcC1xURaB6Ov1%<4pVd; zpY1Z`W-aJ}ku0qX`6y(Yz*ZkYzsl2J!~eU`b*yQ3xtvHPE7kKNTt2hvs|oM`EE_Li zq?-`uz74(!@$Ht){<3XKQWV$dl#JScNb-R<5#{F_;m;pV|?0#@kYcsn)_@~}D=O9{K zjF}#WkH#8m^yH1P+Y(JdF}x3Cb*p^(n8yLiaZVzDEdx#1=!s4$DDe{|by6tvSHEI_Nc3NFA>xJ+ zV(_f+&ui}|F+|PPS#N-pvH0mt^;?UVP1d^5EjImSF*tJjXI>0U@E#lV+dSS3({qtf zKZa(#CI_Y?)1|p>Ozj%h7Av9S`f|Q)cw?zcWXP9rFMs>FG7TebMN4D7{Klm}N#F7( zdVpm)h*B#2{n}fxSK~zE?^kY7Cm7|sWe1*EA$}v_0iNYNf-eBdS?FRTp`j@?-V}6a z*$3%>FG{WR@jSmug0g52V*(p_9dy?`+Wgx}_O>B!LF31rx68K2*HJ79cr&>>5J>Nh z;bZ*rDcXDai(5~?-8}>@gNS=h^}EZ@>~BhaY_VV246*d6f7Mct4(~^MG)&09@fJ`FDHN}bQ*c`n zby`+1dKsaRZw5CXRln@x4@T>flP^u-@XH{XSd}i+#qmpItqJj*({S8>{+=qEftc@g3CxF~@+vA|hysf-K;c2Z?o%aN!1E zvG1g(X{LK#6^6mZb+?hBYSgdJeFLIR&mgZ16t$-q*UtXeO6)inKpE9ASf@s~^yoP8 zXr_?0LNKebho6?h;~Hk6KbkQ|0D=SgQ>?m`mWzW@ykczvRKi0sl)opvQv2C)<$Vv{ zSTn>j&Yq}5L^@-i_(s8K5#Mefm%S${>kt16n{qMz7rcUtpyG3+Bq-&#qh8M|j_QP6i%FJzEynKiHRwu_BTWSy51{>R>W5KdiZKtZ8@vS&!$jatr+X&n8Cj&?OLh|MN)KU@#<^G zgc~Q8D;AEGqn zp4gnhZr#2b(iHR5y?Zj@0+0PeHU8$YwzJfWd;%r!UPv*fckEqnour)36l# z$;m2)L{Y~#383L!*ihGpCfiEUbqwu}ogLoz+K2u=RmGD(K&L_pBq9=%UhUZ^fp>7< z$8>+Y*VVVSl^r)%>swkh?Y@Eu`DVmrDPEzz&5)d@u%P4v5TZOr4zR=rserJi-Wlgv zwlrG->L*3B8pQN6KtlM2f#=Mg$-~QP)Fe$#St_}W<((!Q*8{%DNquVZJJCH@9!N(J z27T8g1#CjRvPKvdf@);i)z)a@6NcyLv1v;bTWB8z?i4NHZq?CKQQ{K_iT3spE?9EW z4e;-(V6c6HD!r)R^{E;}dUz5f^1!8po1OKdnbUzfv=t1XPLYKplT~V8G)(9Q( zHEr&JTjV@2iTQ4SdtfO>M1HUR(^cTD#~TuCY~34W+7{W<{zxM$&CToOL!JE5>J;F|Da4L9h@ewM`^sUVjN0_6KPon>yW-IfWs{VYt6E}Dm@u_1X_t~o3~ zS)H0Iy$%ax+3mIwT+HMjJPA3g-SKb;wQDa${bb)d4I|9%8sba^)sQyM>)haqqXd+v zS?;AEVn{4(#nIUce(v)T`UwiPkh|?Sf#(UEq|;GzZN0)IA7ozt1sqoBv9wby zG?j4E?5uzD4yR(TzNgRj&YQS05KKUs%|1fEoY^SYgIdeKbVcRL5j?C=+C)fZGpUFb zmYCu5L=8MOn*^Mq(#xdeR8ng`yPK@ha2nODI!q6Fn!TBnr%_A`o_`_ZNL>v8s&ojV z8o1DY8if_s)CT#QzXu7bL`tU3MTY7k^`#;cHU%fW*5q^+tp5X+mq4%go8crwV?Bnc zwLR&|ZB47vMnKRN@oJ4da0Tlr$oX%VuGP-hSVuLvtqEybOsm{FLNrWW2yj}9;^yUP z(hQwQ?f=28RQwle~Hj;wz$w(28e+ELnk z^8CgfqL3*VrEuck8>KqcF64@S-FLOSSfqX}SC#AJL;1r^5K%xhp#((ssO$S_$|+eI zC&+{;8j%7^m$5j6bIcE53-zx;UgH>ABf|+_Kv9U4qd?AzOnfbk7$gO*Pcpe>i@3+s z8umUpT5luespY%rN($039c@5Q?3)5VLEl8rC%wrYFU*Z8&^iQ*u&`Gq!SP0&T86$ zOxFyd@Ruqv1{4sv07+D2hso*Q9Mns$)z46&NWyUr9rUOf(-nC-p(d>R$l!qQL70`E zt@;oius^7;DG>o;jgqoM$HIqKNrpH{Gou>cwwbc0qJ@r3^|CsEF!RbG-zdWCq#3z^ z(qLj>@r97D6VDeAkXZcdEM5UNZrou?&p*fDhY8Qyvt?n(#%nleuP1pczvGvy z-jk3x-ZlbA?>ZqRqt1&BSJ>8F5f%Taam>!|4R8jY|9x;EfcI=op}cbmVfDsC9GR1m6DF&91X(omQ(N{Xwbo(Xem`McS# z(3U?DW*Q-hXHZuZ&g1(T5?YYZhz^fBYc_G&i%u z4a>JSZ3PdJ^**xAwuYXt~gPWK44Up4uo&T860`&`q*FmAVF|8*wiDJDIIAPllCP~L@W z+X4g#g4T2`bZ5;aFxTE;WzTbTd4>KMPPjW6}PqrF^=3#}u!<9f0`Sh#Gch{T!@!!}*a-!2 zeI|hGST1B3fC3T{e2d;2hdnU3zTK_uN`L*EWbPmr&kG+*4a>*r^n!djif;k(+?Zpt zxpQ1vy4e5877P{=&@e?$u>6R!Q#S=K#)qx1Sg-q>=HtinM@XM*Y4d4>%~n1P7gjFm zHc0W>r|&hNl_#h)mK2K+#PmCb$twj=tfcUkA>lgBLh$N0>P43*f3e$tBwvyP)DfF? zI63CByyR{;8H3Uyt0}*zTATSN5&~zw{1sMzy6tC(9ToZwo+Chj&}51|8L8|pee`f) zc75Z((aU#K?pcf}mW-@>%$%uMX_C?>%GD5Ews&Z2&~!cR% zM^GZcPUJtYbpR#Ve(?V;(Ehi49y13w>;LsZX#e}v=0FPAG2D~Hjm1tZpklFtWs~QW z55f@M2LVqKu%ch5RZGQ-TrceH5lvh~_qig=vVWGwjL&eaaV#@x$p&vsv+O^7_j7-K zooF$XYujef7{dHsHrlw;V6Y(xxa9iGZMi4PB*aN1i%OvVi$>XVE)HkkCwy=1z!= z;XX|&K!u}P#fT`4TW2g)Y-)^M$5sKcHcU=Y`uK>|AQWEZ(I8F6nb8O zIuZH$GQk#OJEm3K&(bgo(_Kj&4vVT+)LT}z_s|oS(L7Lk5_Ez^mQf+sDUAR$ic0Zf%Gtga8oM{Ae*yhbP%Oz5$Obj*}S>1#=S z;F7thIav)lvQC>g1u|QbUOBci^U*luD-LJRXZ}dw@`>fndE+1n!+t&8>@!aUd@8yk z>qNb6Pd?x$Qc%|%%NIU#ly?9nVRmt~q@DL0k-GQ>jZ zQ_3)p5T+}vm5YkSPJMH0+-o7FFL>Kt3qe`!Z{S29je818!85HJ?CTMY9!s#x#fK&MmS3m`e; z5evV9{gsA;!+(V|bQ39^KY8uyN?m$rn8P2e#=Lu8hX0vvB@zX2kqF#-Lr!?fG$sD) zN*8k@tWNsWNr*|?V~=9Bdmp?QGprZ64TTpv&WC@P{~3-}!G0-7Cx!?_Jd;<}NKj}1 z=wqlBx9?L580{lPsyer~%8147i^T5@Bp8uu2@S&Bn(|`L0Xto2aAUjHJcJgzy&{x)ZVU`}Um`N@gf{W@I zqZj{}_qR^V+-l2q*{YecLiyQ8Pr~Z@L>ch1cQqVelU5NWU_a)ls;FajCAOcN<(AVdG;+{AFk>l( zV*8_bNuWhb9^1i(vhlg;B(6EhmP{RqgbePGmqo-K&q$uUnZu5M@2G~06V}zlrp{GC zvP_LPA2b7|aVP+6yxM2;%h|B_>g z*p64!OAfQExxsW+dHe3(-*ED17Ko9pUef=#n;l!xQ=6?VQmW}}W$roA{9Qdn4)Y`?<`cV9`kgO|=lU8(|^rfEs9gVDsSr97(j$cDJ*?2i&eZ-#| z#~k&s(Bht9NUmO;p{G**AQNB}NVM}FZ^RYl445xG?BO74$wt1+PM6eu+gL|;`4YAH zd>8~QOPsqv41?lu)&mJi@)%D@T;U!S1LJ|$pDuK3)9|H>^t{l6q%d4p@h4byp`QNg z41PVxcjp-qUmsM;q;m8C*L?&qYot{x17o@lcd*!HZkniPdRnL2MK`39f>EYSe74qQ zBTU|*s?l-5M7~;lW)W|njGA=L8Uv=)p?Y(3DDSVxVT2i5f+q8!a zsLk#wiFFg_m%Wk07sI!%D8UWtIs~zrvl+3futELZ|6>u>NXG;S-rMqO!~Zo97YMUy zS62XBY<3SJCxZ@E4q?orxQ`|KKHkZOGE=DHORn#{CBHs$)cS}9J~=U)cbbj_zCcSde}ez6>js+^>gs4 z_&_LdxHn?=eX##Y;YU=j)d;Ds1}CdyssX@`(u3dXfvq(Ned}cU8NB~unKTUF(LeYb zePq7qIM52%nZ9)dK@(F>N~WbL6PHmo4o)?xyvK{!$z|;Qe7QVd7+!k{k%}=D5%MI9 zcpO!zsg@$hI&gml5->R=9Q{kbWaDP<&@noOar%%lXg76S!5?mr*8BhhEB4OMArBY9dwv2HirKyc#fs~3 z-QpLxfDAGhxY+hVhj41uM%QhCfHHf#b#i)j`(TZ~pP#ar0KKnI6n>j-mm7_S7>#d; zecf$c?O_p!Mw|XC6C0He!%s}gaHZc3uW$R8A4j#uPHh8~OHcxSz8;~z`FP$-j=SUR zIp=_dMAN%7D|fx_vysR)a1-{l86 zw!&V<+rZ-C)Cz^kO4z%X)@ac`n>p1+Vg=#EmR*LU_K%{Y!cT{5eXEQZ9Q&56OxFuP z2EXw}y>w&UbMIPwmWg9pQ&hYl*ohZx=*=n$VfkP=}n?DdlLq6D&$O*787H{_G^oIe|rqz#aU?=lS@jy;0E&5H$0 zv=h6vEdCJGO-45bnRCC8KAE0LUQ3=yUX85BR}=E;md8u_^PL|k6UM)LEshil5Io(L z{kzqbL?KTX5l&{1Fj-h3$}B62!3dZ&K8)10d|)xYzB~sHlMyL7E9Pz1%GCVER+cj4 zjK6W8!jWaP^DyGpFdm$xtno~NC&iXLcTbwP7-CuG;H{H$NXh|kba|8sm<(<=*;jlb z)4s)-pn=^6Hg}1(imRaN$r67qXe5eL!huJS=?WMBzI(eoH=LM=et?$$6$r4VT3pW4 z0Z!iVP@0)GWi+p$bgr=#NHf_N*}9lu0(%KkC}mDiybPXn0UM@M!rDMM*Ma~6z#G`r7{p0426~jP$@~YpGyCNn_k7l53rgH7`;>?Ml z421U+Xi*?r@(rB9$KeJ1C;$KffgrhX@JeJf%gJJM-jc#K%KQM+9SBHX4V}xbdpSP}SlPv4E_;fMUE6B*lf#qf`W7zM0I(|D)NuZi(%rkn(d1D^Iiik^wpm9a$sE6|WqMB{OK1VYzGq>`jQ zU4Ch(+WJSN?Vuwq;y=|AKRrfp#^ca$=-Ff;l60m}H-NtT!=9$tv%VTJi$X#QR~g<9 zw3+0G5Z}r066*2zd9-5D1+=rX(8os+AD?`GWvz!MYlwoKUVP!d>zgN1tYIbu0xLzG zX8Cxg;+WP|yY!OkqtKGvu{1GC%Y+qnp)PdFxBJ0Q*P`fV#!Ct$(D-BTqAAr9MynY_-=+@hN=q}Hhi%fr93Bga&=HSYx(Ut66rh9j!5xzIvu%qYg6PomJ^9=N0)QPw zTPeS3<~_Rz&pj4?xp$uQq5|Np%UWHPoT7u^%|*=&ixH<46o8L}Q z68O9dh)N&h^M@~-Q?r$p-Cuuzn`NL_((b4rP_daf|I6qHGYc#C{}5bhj$`1603kgB z)Y9vwWO<%QPu|9CerFr65?v;g&elv;h}8HK{+v%8wxjWF#tH z8(2_0sA}BzBygjcmyIV#s?<#5aN!X1-qckRM$}k4a$IkuEa_?>IP!y7 z&L~%#%!%V35L_N_s`lN>*tq-h|MxNq)X!NF{wTI=u z%Q$dyn#ifG_@Hy-0a7;=k(sIroY2;PCc|9DRMOSJcSP#3ZVpOw$%Q;+9|_Xe`w$^Z z@VT@p(;+zNih+;w{Wv_;lQd;b=*^e7phQ4X^wNQ-yGSO;dg!W#`n-5=X}WzI`is ziCa=NtjBmA0gQkalN^_0)&~#naLGv5x>uIA*wY(J4}B`x`LsIc_y|s@`h1CGQvSoi zTbmQZmnFkrM>?(lT{tIb_Y%!*%I3;LtAliN;@ZzPO#Nl?$H4ojmX@j(=)@m)UDrUL zQ4g5~{ywsqrGYynE^G34>YyXULcCsRb7tHx4W6<9SlsB-h2VSKaC`h@8-|aLhE?i{ zXm4_@Wy3k-Fs*SnYg3HTiFg6*ym+2xH_TVvJNc#=eF?0Z&h!!1-56;hMXTF%r{l?F z$HzI;8(_NHtQjEf4G`8lpdPWW@$%lYMXxG$SKJqCFUmAmRvldZTyXCjJHwp0SC|4| zKCti=YPvii-sKE4VPuxA%*>8xxr?9NafR33d48M+`9FME9WLAEguZoQd?9x}+aET4 zo%lOnZq7~wNm=wbPyR929H{C5kY{I~C&9*zKa>CS-os+%_%8?oGc!k8&@}kJCW6jH z+y)2Q)(35qTu>a1%%UwfE4JdCIMR?rGRJ9fid9CLL4KL{r@ytV2YCjJd~_VdsSJnQ zrmGv_i9u3J%urp-Na&Kl&2qG1YKgziL1-htr2w-GR z5l{_a6|xFzvE2k3aWh`6lD1L?q#3=iwjR4zbGMvr2#l=Pet5T<0l#Wa-l8H zA$Sy_LFU9w2ZowHgc!JSwT*oWWEH#D4y4{*bp?)g3bN!OSPZ%FD!~r{43ND(TpjgU zXkrsa#e2SxcwyeBQf1MMVB73k^Ohu!psthGB&9w{R|8SCf^<6FPBH`c1 z;RF-B&z9MWyo@qZ=;EpVhOvLzF3KY@H9AQ@$gCiHv(G8|z_UXk$Md?%D7a63ndi&V zD`~L1%ZK(STC7!mn=dB;1a(AN;W(MiYT`K+Ic{apA=b3_kvzlQS+uEe*D2=g;ZiHS9m zP|jKYE?Ke?kr00m`L~_^rw=U1pF;FhHmQKwV}0|c-RBNFFcRzaBR&(W>2JqaV!`DN zRyB!$>yiobi+YJ9fcn>8trMr>V|2 ze%PMw6>YBNQ9BaK*-O+WT;F=LfRF)Twde8K6nrUIjtTg*k2@A6Sujn0;PI!f@M4&p%*G z>f%a0B+_9P#g5QvfW(Yq)a}5a@d}K*lvPsRPUG4qp7}0l3hmFoKV$w8K5R`IfKnLk*ICyMrMm`(r$-?R6{~!4rSf2kpw*Cj~g~Gzj z^1tC;|7gBv)4*wgEzY7tGaELc4uv3hU7rw-j)IiVKAI@q$q4&np-kv({sF6 zkX#^N>%111HmD4-xSWYE_eb8ylEfl()mE&as!XxoTyh1wOy~_xDAzu?qBt*eFZDVu zxI&3KOGVUAP6URe=6I2T)~L(j!^ zoy$h>XH@6p8AFs&tcsjykr&Pbh5cPel6XvGd2&hgb7XSn%kM#%RcDN33NeB(3@^I{ zDGpj5haMeF&w#(lKT!`0@|s>hu<&H?-#qk_A5XpIWy<~G+yT( zal?lu$9ec;AhISlo~NXIco!>pB_~r4W_;tXRxL;q?i<0MN|R%9nVM-nErpFJGj+A{ zQ?HVAUgQz*joOJ!F~8Gh#r>oXk1t8aN-x)a*~)}dVDyy5w-^!sGRvcAs)u*~lIWRu=Wl5e%?sF6QPu+m|~nb9-< z9x)JWG%G8H(htt{c3CYw0m+R z=KIL-!!Qss*Y0H)9s#1N<#$jiv&8qJ=g>WLV3_)d>l(Z5${@!uH1=zle|(f?|AqyN=7 z675KqglmKJ!P}t#SHyk1(f{!1{WsPs>s-*|rm&fWQxZcPKUXPxWQg>(uYE zWFJf^2{mFV?g6ftoiu^Giu{+2FN)Xo?vFYRxp=Vp*yKLVG)>!G5-x&5t{E&`H`{p?IUuC+;h#tMyVRvVUe8dc15)8Kz7g6gh^c@S*F% zNjP5%X*I?CF25&|t^&3&lB>67TiS@E9B#!S(#!<&YY+pjPj^ZEQlr!K0&1P6ux0p( z$D?=$qN3rJW;~e?bC!3iRMPH$wG@!aX0`s20bo+p3t^!xx*qucqb?Fx>CKlRX{BGw zkeSINf~#W|vNvS}{wV#Qzn+xj%0Bj~N+rt78&h319pOuDvK2vl;$i3JB7zr;NW+PFyw?{4xF_tHQ( zwd%R6 zo#fo=K21`)lAq;WZM|79nI-j6Vcp(AZGt<7B9>Yz#=-9ui;HL8vfst$ zG83+ShebxARIY#9+M|CKdH;dS{^t;xR1=DDlO^7y0Due&ZY{Eh3Mrv6#EUgSoH%9a z6ETMT`)#v|y*%)>usC4(T*G!PNzCIb#jQ?tVk{8-K&2Mql#sSU`f;Rbwo-i`35ac2 zsU+}oj7a_vDd3`0IKqvYY{5_SQ#DSFo3qSE<3ov15D(p&saQ`6j*Sip5O|_BlX85d zePRc91X^F%jt=_*KTf#fJ3Ts;d_p$19b`3lpd%(Z5AvGL&m*kWeD4bXEMKZ!%91ez z(XDQ$SjpLY&^=L*E+*kK)ySU61uolbT-w4e`0Uq?Zi&jJ*n6L4Cw5LCDdj>uo%Okl4vI^ya6eE`#e zD>&LF6J=-O@@dAU3|TrkZ&?FD4&l53z}T>ezFAFBbmVK=sMAg#RXX!%Sh~WEy_z%m zNAG-m7PW*4-?Uh(y$&Gwc1^v^4wT6+Queni zIL+4e)8zoiu%nZJ&tNmPzaL-Nrk1)yTi<0qJ}Rr<*dCs!JFd6rH_Ieo-m<)N0Ic@& zD^w??xDPr2QN$kk->7u>Z^k~+D0!k3NrEs@5I>j?#4XG|>OY4VuOca7d1Abp^ayRq z9>$yt+zEG>d#>pJdpGd^ZTbJt)f&8?zD7S15KH*KC>MX;*+|@Ohs<4Og)V^rwMYgs z%QQNxB05ZY2`|MYUyNGPa@9NQG|(>E3xS_FWw<{U0?W7?4ARoqg_Er-1~b0}o1lwP z4nwC1L$SVv4%)Yjs!(A0%Slk~v&`73EwyU*310YCQ`#1v_bl_AwerF3S9Qd@fM2+K z5Qh91ny;9@Uu8L<3Re!L`bslm#woJB)Cwas`=Z&I7BQ#$o=y`~#2j-UB3*ssDhQnv z!`fb z;?6bJ0vTPiQxqYA94k)0o+h4FlKs4u;me(fvC7JbyE2eRFfcb^ewgEA7@wva|KNP! zp5J3%8_+FP3rWD|N@ncPq6t#d8)ZMDwuN>!?x9Gb=m|Mx!=U+PAJ8alE`_4Q)!Uqe z-Ha@t%D_nhFu{)e+ARrC9D8_k6*GUhMVXmT>t!rz+_V% zNUc+6x7SblZ5Ox4IXpjQ`r9bWm95Y+CDn3bpFht3I3S$d`=K_i|IUjGo;3Nv>7i;% z`%&8$eBhHFFvIA|gN!u$KdEzhPl;pj+Bh-1lzb<(eCuQhbQ z-Sq+d0m0^UBz&)qB3(WKdYeH<_Hl0Wbw5Rv0+8dG@{oj}5_WNXc{XJjEBtgn1an%oXdCVc5>m?E z+7I=`;X^Bw9DLB2vrK!?L8VEng-ZHvkXoLrLD|+ekJ{wVz8VshOmsXolkf}J`6cv8 zfDe(_9}UhBhRp|2uR&@<#k5f@aoE?-1gI0N<4YX9{Ojk?yTA_DxZkYDt66*WfTj!c zTi!N>oOy6u_>I!|+dRycnr}hu?+M)8XBcwqaaG7H`-vjLOWzvgOBJLS)4{vM8m?S; zam=iB<;2{!#vu1Vf^RP85Cu0jRrlQPKr6yra0#t!Iao=6!osvv{}3Mb$$JS{EpS7! z(I^swVnw>}X$_7;ua4GDrPnWmIxSQRI{luSuI|&_nFgIro#HT`>bbEKjKLv%Rr!6J zyK+R`0fa1N5mWyDG3l^uDXY(0{xF5^TInbfDNv7&l5sA=aCc%RVS* zISt~~thYZ6^Y>FAR~o`<3_^-_G7vK>()9%5x!peSYPdD0g<@c~`OC|HOQ@@Z$vq-s zc<+$)Xqc@wVw~u5+Z{aJ@*LHQdTAcaice(dyeL62Qxcq!U{PFp;$YBVa!|qgw5e>Y zY%23L&s8tIWX3R)EQQwRXT3Eix&V26=fHWbne(EEK(LT_jid!pmX=SF9WV~Z+(90P zHgs_*`62((b;vRoOFvD&tpq8{k^6AGBFabHQe>TgTSt0y%weamzD!pylnVD~ zy%Wdo6i7ZX-EhJ;NWp@00%8j@4SqNMZ?Qpr_Q#O=j~(%5)t195u`tpPyjI=^y+_kgQf+Qug zvAsHYWBie>vCUpP(Y3}9L29oi3+g9C?PMN#bwSE9jGXk!VJShVZDSHtlKH55@IL=$ zjYw0xmtLZ6sJ*L=shcya$TEIGPAep9#6&-5a^et#WUkoM# zEybuRI&vyNlnQ5t#9zIxpeZWSIEL{H{-MR>n` zqYS)6_+V*7a1;x4y6!bw_c(^EMh>GJP0b2{j;I2=B#$~C>m(i>*FXr09o4`%hx+8O zV5{=*vrISRYoh{5(M_xgG}AW$^g+7ja5_^}!A@-+YazM=H=)%EZGdi}ija?>Rdaldo_ zG%uvM)m?tGb9sOGenR_u1Os(Eh(*pkr9_z>Xx03aRJzw*HxPrpbI+Ok`FMRvnrj%| z^L~3HbR_*zw^LPjdA&tM!M(`;oj&`QwpkF5t!x8vC2lZXw7%T zZi(*TNJT1)VDd=qgX;&lJWYf=&IwrICcXdqY5owP2fJX!3mk>WlwhUsl&2IBm7b|k z02ElEY&IB>dLaDYbSW~XlKei*(DXeiW~ri7&6)%MQb(;$m?2RWM#83xb4L|j_j#g3 zi8@2cXQN^;5G^6V2BPa!b4Ly|$?f1dYn0VarrukCO}ujHM?B{lWpmsT@ncvZrkG%jrF{1S;#HKebME7spJnjtTKNt6Ow>J z9Gge!%S9%6a-Xu;2t|r-+|ru=RdMkY{?pE5D`A=xPsYMFp0uEkE*G=cMNk^+08IC0 z(Zvtkv{-G=ptH@25F8%b6pCILvvVmmE^0pGpyh`9?V>Hk%im!q!Bf!CY%4Acuh<%k^n+ zw$Cy>s*Rn5kFEC+Dvu^?p9T$<{z{}1au@*(t!7XcrBiJj8uuVI6ySu9^Gyo% zq(E`Sh$4N&YtnUQ(9?lfiQN_6%puw%(0LvGxsV$w40bf>_|OncAo{0|B5{tMbrl|# zU{tRPI;ntBzJi1wMPI#zxe#}g?1JPfb5<30P2z;;8z%Ja>Z%H=ANpXmrr~~lg(lrb zAQ+l2PH&i)%mO5;Y&PYqj{)08+TaBFZ_87k!C%%LRlJsMO+_}X zU(?R*4B2#BfrAX$hSJs1WvwKnqm>J1k{J4yJ1(HLf{~ z#aVC9zg#=%quRrwW$l{{T4pQ`JdJWPlSid5YPxokwbLA(Of&V1U;)$BgCf^Xr#5y2 z?NTh%ak^(U%;i4ylV$5MEJ}Q%BFf+Wr=HX2`Tk$_!+%C>bCxG8(+|uP-bP@Ui2Y)< z(-XYX2JaE*iK`3=%ya}cHBcM~e*gB(o%g)f)l6{eGto?7BG6peGvH~nquBq8#k#?f zXp_7cB0Yh#vtWjdHV&M!EPWUZRE=EXji27sQs|=vkEWi`MQL1kP77wNL7)bUc88C9 zY&2ac6`AdwE*E_mvnBrnehvyV)#J-lOT&Ic z;ml~+a`$4=+d|CZcdgo)|urR#B zVXV}1%{g@+V}Wg@l#`2}!Qs+o$W?2BZuJjZB}pL)2y$aoCoM)X4@iP~WBC|W)(KzO-TKoJ)83`WI3@;r!pLaj_wz}dCVZ`E zWvur4IwM&_q&6Ds5H{D@Q2F+s%@yCVz25Y!4Mw2Hr?nMIt#O+{Ub}x*JpzzD8Q`Vy?y{;q2?9311^j;4b4d#s9=$*5n!K3GoZrO#*!+p{M<-7fq45%$)u8MZ!k zA*yMgD3s87z)d6bpPCwN>&)TtfXQ?p*hkrz?Ii=l&H3VAKWXe2_vH#hnB;1~%Ce(t&t9#c%7TH2CJEg)!UT(sF*Yk~=+5upa`e7TwK%y6p+N}Evd0VA zzv;Y49sliZ=R*ur1qYle_R&BSGB41wZzN)5$~ZEZ)x=cY>N?reZAyr3GE^HD7CeBg zbS^)PSru>R2?ok(e|y(>66@h37)lF?+eVv2%DR8g>S>Q0lNje5Q45Gdz=i%9nJ6{q zCL!+%X+v6y^qH1!@phqy#6<6bk^6drY-9LBD}|POCND@PXoHB+D526v@xHeGj#T(I zkvZzB$JsUy5?O!OvsUy|O+0v_itnGU2H`BYLW@S@zHlX#68u+UGQq)T(z&ODf9pPj zbk`PxH^P@DVvv&n>JCuPN|IpQXWI!_WM8SlJM!5o{0bX!u9x&YMwiK5Nqb8$N>74& zpMYLtPeEW+8BH-CEC}TRL-h-drR2K~7Z|~x>Pg`iokEeyC++BLg8|qZCU5=5RoIp4;Wv5^j6t#UY9zRkMXfDM2f zHZ}?W#*=H+%2={WF&=~2W#HNn=@E+#+ZcCjahTuWU!J5;W)VlDLK1F&F2X>L!<&`2 z7EiE?AWF~(?w&RyBxF{fHmT^r9=PI+v=Y7|unKI?9{xSW_AIv@Ze^qJ84aK+J~BvL zy(ZV$y!_N%+6U5t!;)eR&{T>k`bA}MOZ1F`w^|?9PWu_f9fO83ID7YNf3nF9#5oZC z06{u(kATWl%2a{^Di7YX!0BE8G&_z)wl^zwrIdOl>{g6!=O7|h6n51V>a*)r8TvtF z5yRT}dQ~8PAZb5Qky*qB^IeqruTFEJGB`dgECFINLguFFulk30O@B_80akG5Y~C>S zU7$8YdIoT>Q;EcLsUT-FhdN33No{^vBRL~aB<-Y-H~9_*tqceVPJ+b-$B^QH2Tn5d zk|h!LQpJYlLN615##V;XqP1OTcJ-#o^ESC8&ph&ty%;~v)dgH@Q3EP9R4UGwC9ppH z44^a$-BVmG>!9p3Le7hR^s!Kza8Ho$FycWq0)X%&FX+z%b7^p7!#si)sdWUgo^brsSY^f4Z1AfR1@bsc(n*w z330wiQjA&D%gmCm<)f*xLcug(W^io~=}am!{WxfY?=qU4XB|cxt8KH_nR@Q#xqhgI z+yHAMbC>HK_o1jN&Ij0ART7(=)u>@5G(j9_{w(H-If9 z{isn5`|Omk?N>zG`OTs7J;4O+gC;x*Bz=e+CPfAY(4*@2!Pn~Z^I8B66~cR;YXem4 z3~i&;8v3`@o#?Iv&C|g*y?;F!AV!r<2^gaa{84zOK~xK&i3_t;Nh%2`5oQzE3L6W$ z>bKpTGz$#sFUt+PFy_f0PW!Z)=f6#jZofM&b2vWMtv@dm-MCLC@6JA)HEpGXF4D4G`UKR@#SD^q zbcB&nj~KJ6GZ5XwWwAGQ^)qn@#H$sBOBrx!%znS?5fSb^=j%D;OP&Z_AAN~0$vT$? z+QXue7lY zWvBd7qt!WL03J%RN|;e-hzVR;m}!NZ4*W?goc}woY%gI;w|MUgFrEL-HZKXbNB2N> zF+h{NL1AcV-nhskH+uh31DiF`ph1~9Hf)Zml&H~`M;XT-10e&`M%2vEz~T|VyU`eA z+qXdC(@T*W{X*s8@N?`OfvH`nE}=k@l+EIk8c@vXM^Q6h5!OgOzS8U+_j)$J6Y%c}X0s@m|(eu2tLEMZZ%8Y9lu5 ziPebZjvCBG1}ngkRRdb(d}c?Ho#^UBiaQ}y4!OgDBkfCUys<^I*pSLmzkZVVtt+XD zjwKRetflzx-qAic7jbh*!|9T|c1sXYCr5iP?)W*h`l*xy7}oYnL+>;K@?PMb@&ypc zn=P$xyz;mQzfq5-KOQV`#dy@})Os$zqhm|sclTNJER4f-{Oc+teOg@|3knq(u4E0x z&9L8zAzfFLMJm^F=P8w2Y8q&$>UBN7Ui}YQsI6MFB1v#ey z*05PwT7-T0Ntzw<)BCFduAJs}@@Fd14x85&NlZ4rP5kpN-!@(XQ$mLJ47beoZ-1BsccB};B^TJpowpPEK2^D_ebSmxr7$lZeqHY*vU!3< z_cFgM}Rn+<>Vh` z|22ilARa8&27^F8W`Kf2VX|(dsiRVIQ}e{7=g?TF$hyjh>ZQ$s`xdM$J)hlLCPWdT z$-um#smab>PqMFZ?@YZHWJrTUF@fS`c!NW+faRxTRDnYgX?D^}ASbX=YxDAh?kh}C z^auW~$?G&W)a*bygv8+45i_QmuN);#l%WMElFctgw%CS;$jzcz3Pp2KrFKT~JfzW@ z*I;5hlZ0wv&`v`&wB9rV>uBdPh#{buh)7EeG+W$#9ET*rKVfIP=K=|M5sB&$z7|>1 zj*n6@>>;4I05|6Z*%3EgXTk`!y!=Q~zv-|bM+%c*Zp@;dSMMm}_uV#HjZ+C;D>c6*t@C4q`64tQ$d zesBvNUUVS%+-iPPs#||pB-FV4rbQA&S?{}A4fk*8ftsE2rw$itT`Yf=@p^fKh|he8 ze5NUc5Lxgg6zJv5BS3j!{g+Gy^F|u5rXMedI4=>fgKZRn({2ij3YZ%+= zVjU30O9rsgXrX~v@uD8my*fv&zoa|!wK%+y-xe3@&mJHk5xKttlCK$tQV;hiQ0o-X zT-asafunv36WIcZEu^ymYr?ucj%m!16B(}7)tH9ahYCqWpG-~yf##MaC`%NvDy!?3 zjjs1TW|LN+*7_?&k2YuSe zqlA<$my9u(OzfH{Jk_HZ{vPxauB>$?>?6(`uyr*r=m%xiF_lN>Yj;DpHpgB%pH74GUk7S)G zN|(%&z%-W}hL(13&Uo0CRE>ODMd?E-1}XGA+!Q%&pA~3h4c(^74T4FbS3#@&f<6?;RM7Q4hTgadSg(NUJMPhlX{CU{{H`Gln=<(tkM^e#J(0|AXh1yoOctqqlgK$K5S(zcy?Omd{r~!6*>Xw$*p&-z!DsUK8 zAlSt-VglT4@{NR*sFbCHTvjOhgo>OT`V^KAl%+Rihp&||hu~Q%m!aO|t`OAHKAzg2QkQhgmYwKst1Gn&Z;(!pnw zfrRs7y3Y)bmgHDXJ1W+F-JLn``ull#eL1`NKAhwu-`yDj-EU8mC!KG|LK^|zYQ|p& z7bnx@J-OY0+EGN#JaX$5@m$U-2Xs7A*&!%q82u>HENnNi1k2^x{kaZrmu$JvMo+g= zIdF7>+|&KG`S&t%AquO5Xt5-xJIpeI$!6AXh9|yNP5Ps_QvivFKKa-jE(QJSX){ zkW=_LkB-GPjI9!sxhWt80UAU(uZsY(ACR@od=N$Kby}wNrwwJ_)rMKE08v7zwyJtC z*6Ef1f$EPnK!XzF(@(cHQHFI^U1~A7iiqG3UrE!v0!WGhi6*jbjbr04O{p_4zFGc0*$`;&=t0BqL!S=IJrqku*xF)gpyR)$edU*Y;IlTCHNEEweZ4vfk*|QO6KvYEq;e4z< z$aF0lB&EJRMQm7P*u@jQ%sKIZHXwUm8fg)xZ&S%-Aal=FV3d7Iv7avG?e&;qG=CNu ztie(}y0;JNgr`t-Fs=cWQ~eRSAX0Y-8xKoUl_M(`Lf{kbx>SR=lVM4%CVv?VuN&=*Ez16!~3C=bUz zDlfRB4sjo~+gyE)UiJkmabBSDk2d?SA_$}8_eRMg2&rH%gz(0E^Njj=KxmkuZJFYnXoO~8 z2L+QS)|NjS46g6|k_5p@#X1M}lP=npd|dPMI*TT+vB%<{zPbDBn^1s!+>&tIMzj0V zNrus8Ex6J8mcYb=A-5>TV-A~PFCC`QKOx0D!+lEvF?&RPO`{e%hu{GlU@eaHP zA~I+GN&D*Ya)-PQ;68lhUmAH+BHr8z(7#kZ^a46RPL8~`HonrS=#{6-IQMSGy@;7} z6xv!4a_!$EzY^?;ABN&8aL87Oy z;HUXTuDAnvO9lvg;p)4np#v!iZD8VCTs>8zX9Vq*2Qgq(?Y(|JVgY7)T>}OH;@^5A zKlbz=$n+>mhv<-h1Ai@GETcnkIaR;-PWOeQ3X5A!mlYt~gmAMsX)R;U=qDP9aL^FK zo31e{Z?OC%*EaW9G(bEfTd?~b2?Z0BWS=JJ7o16_qT{tdfEFX$YnnDmPdE~2T#n!( zirD^*?slb%ZO1Q~H z)=9`GVIL~Yh{^;%ov?ku%T%hcrwh>t5$)0r@#;$Q6ZLpMP(+^y2J(ak;8=>d|H#I4t&@uR`A`ZDOsXl-FLy+@UV~vB4CGaT_EDYnZq+ABN zxBlY=Ufu=FU=QPRmt zB0VreYA_eqguvX3!q$thv7xG}3WhdEx-nPL6vz$(0~0At`>^xzdwLQb@W1k#aGBWb zv8y}dUus@l%?VS{OVC?{a)eX~9!Oj#Arf>EhO|VCAl+6prpR1_rn81zuMLKv1fiJ2 zI*$)s6El$xoCHD=q+;_4w>`ncK^?h-Bayc?p`KqHnG8XsQMMl;GE=jhwYBdHrKv{& zyWM&m(RCDMZu$4Gl5bZ~pyW;(7`>x<=!o11${rD*B!YqYM*70Sxk~q*=+fKyLC&pf zI2FwTIJ*$XDDB-{+Q&e%>|6+Z-237+YpOu@B%z<~~9Y(HVbUC^*z5HAP}OXy`W zRFHLaD3Tp#Y6y_<6%YWf48p514bdFlivq-h(TEwNv;tVWS7M(@M@Q(WAfWb-(j_t6 zOm!DRcRM1>x4k6NhL3B!^!@hxJ5y6AIA}p`Yf$(V9BB2y%OWP+zk!nbE&~z}nEIgQ z&k&AYX|4)v<3A$o!%1Ey!7-Gwk3ck_p)ekmWIoMakzNt{! z&aW5iJT&m#Y-4-6FxPRs5>ZO{>${y}gly!MP~OR!SPh{G3IrGm#@pF!e(;wcSafUq z+IuB?PvW(M|3>d7_xIL1u%1MeZFsN(pjFloWbkY;Cj%NvYSZzb6j#z`E2G=M3tI#j z7)afDekqVh(o63pB??maP6!MB8xBYzf!Wq*FJ80C_WCC;ZTqDl+L|5i<&JOTE=2}X zcSE>w$@Y>H>a@}KA3lGn)+A0Z3aD$*PbyTwz@^7{$GfIZ@_@jl&v?gaq%NR%ji2!H zm{X~oufxNuyI9X_nQ)_H;EQTj&nttkaO0Kq>iDtg(#!qq(nYEjX%m?3 zY2IAjn7nuld0wJE@ci~U26RQBL}Cx(9o-?U>yk|reyjfYEtx)?;^(G*j4Aaz*B|SJ zoX>ACFpyAA$7H?%9b75zwFfLp;SQu6(za0{|FmfRUEj@d%COes`%=u|8&Y4;^vLI*iG^G>)wO&^^iXc*yzCQ-dz#x|C-o#ZuC!29anw9{C~c`48kWpk4-7G&V& zk5}qEO_|T-3xQ>TUt$O?FisFf+F78HW{8FPeW}u=NMw>1wdIUoRS+SWy51ayrpxnm__drx|5#^GRoBdGllVPKNz8jss)vF!e$>mHUCQW??c zNR|h)WMiE?bWGjcc?L2;+AAI8>HBbOZw7N7yT{{E8#Q3nOQamk9%E(a*prkHpX8S%#eLPY9Cu!8t zsQU6?lic_TGz0$XhxX&6#%;g<{S$U``umSMt#JTxsDSlCE)E!X7rMnA1PE{1OOvy) z@*(go#?l`mUvqNHl&XAH0$Po;!yjB;#B@_~r*F2hqHBW#5Oeb^>|Ea7eJ4UjKC{Vn z8rcMLYj+ffCusGt5RfYF5x`&tC(5gS6p z;Qmq!3uI-8cmv9;5*k*fEF7vbx$in2-kKHg&)Kpda&W%GXDebe8RfS4CuET0UV#1e z?;Cc6CCVaOAA7vf#B%6dmXLFs8JPRlG?Khtml>6QzT=V3}Y(7M6z6 z;N)L%(B+>-&D?YR70LQVlmZlq@~hX=RG!X5q-XZaD+4}#i!mEMCMM6PlOlUG)}bpG zsT`=@V%LedrnFa<%;RFw79TbW=WK<`()F$naVxD&rYHEAT1i&*y(`3=$j;)fgK0RC z^lh(tvN$OO;y*MOFKN*Yh-TZwrTH7J=}4~$iLOp#bKI7)oLKeJofJl;{Bd^H>XM3I zmibg3KLGeIcsS(&lxUi&LAUq!alu1xEy90?$q-2dFCV#V5ZW-Tc|+w?#s$|huaB$R zMrq7M~(7So`ll1%srCPzCLnDkn$xl^}jIgMkNmZ>I%EuX4$o9x}{A$}&KJ#uGJDKG< z`dJ!hWDGWW=Z8^_r^2^QbK+w;3YVz)=4Po-@G`Jb(hp)uHh!#qpoI^r-?Epx>$84u zQ35F%*uzJ0)3Ur0=nQ^LS@nH+p>Ddh(`3efQYx_ao`6VR&k8MXHQtu{g}UOZq)to0 z=}CL5Wt_7dX5<9;*y7lH`HYXYC9N7Vw2cecF{cyIsOfBz`YRWLr)YS1p$W zi7#4t;O9-jdFHk@IhRBPlQUFvke*FX%_sa*DMN;)bme z7PQG&^8#(iV^uiTuf;o>@H-RM>{6las1_}fwQvS+rEI|OOYoHs=1_5=tlNb^2Y3`O zNssSSF-DSN4(+U@MXoF8ai5%FDohpSRmu=tvc>4Yry z#NG_~P`6zM#QsfnnglTj_O0^tV$M_Dkl*`P1$M3!0@AED2=4UJW(SbSY z&`;)*Yb86S<}K2Yvt+F02_e3;*%G{_{s;Cg-LoX*2#lEO?{~I#i8ebO1%ICqQv`x; z0uon0$c~Yq1R<~9`QwPW7iR({7_wJc%@_M(6UfUo$3%WC69}Pa@|I6Hi~&8n%fVLW zvzZyT z>hpTTip65-1~;hn3$7KGi?lc2qpX#~*CGTcef#A^y56S!H|kIa`>0?5TFh1bj&zFl~tTq}v2RTd$eB?s_ z&op^~l=p6$!+hUZwux{o%P=$?rkMLrYa!bA#bc?w9K7UP7y!H)B)qhb$%(eVr;6b= z?YY$G#Cns2*!83lIj}_|V9C%QrJ)ap9p{^p$qX(nbLM>481{z-$vg;c2UU)FL=KMi zNj#60z7c(4?(N=+5nh(MsUFndZje5lO{Z~AXf z|5TFWVl?73r2)G=W1&e%vsK7j1fSP~r|IQq7DR_LuSBKn#4I+_wf?wf2Ki#6MoL>K z5r>QOzv}iw{z@vcnIz^)ZhC&Gp&)q_qqcuHj4aw#G%nyzKH_s3sVsyfXqh0hU9HHU zkiUQ6nrU@3zBU`#KM5V_|9n{Pg@K;HCLJK#w_QdlvvFD9+fNgvPyrI{I0 z0R|~%I}xu^+10)#@cve}bVuin_4+&HIET=ms0wg$RFz?UU#AJQdo{NR;0`Fi@o_$^%W*uLqHbC8FZ(wsLE~aAXuR8Q5J5{yPNE}@>V1< ^9x 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 V-sNjBEZmStCQ52*T07cE{tHl}Y)SwC delta 267658 zcmZsiW0Yk7m1!1{J9kH-*=nq42Lf3$VQG1P%5tfRX`;tQGzxkMMZ^Bq)0^_OUjXFppT_Y(h#95Nex2o7CoLy`i~+UA*ctIGY~vktp*+`O29I-cnT1@;RKNSFnI&DkOGS|l_WB= zO)E%^k)DQ5#?5mus}0y$S1MG@plaYQN0 z&I)uDECi2q6|4l$ewt?#1=*(^m-R{Q8@u#{TKe#?#J%vS?cD)5r%a*`uol7yw+S15(PEVv(xqhwGSnF7r!5-!b zY00-5^jyoIs;jSZKDDiHb?IyQ;%dx5}_At5ZNAkeer9xEz zm>_{v=YYDdt#z|TJv;dvY4r-DHWxvW3}Np#rwZJsc)Zih%%rtvEiWPi^|!GD7uDqJ zyY^8N)*{tXv@u6L+~VMNfvPJy-B2+Am{jZo zv((lJF$w5m+GfZ#hlRIWo)O#s_^zxXa9z-TMX21_b~usioWg<8i00HxnQa#6M7P>P zdJZI9^4LZpr0Dtqee=!}sKup%#*h*&qVdQ+kIwASwY)C%NbsT2S&A6FnRXz`@d44#hx7czs%ETJG$PkTiD)*BXv9{I5Mi$W?g-*|1 z9(#z>VyboM$xT;1D!GVV$uf6gndI{g+|WZET<`@J)cRod?fGCW8YQXQA@oE0-E;`> zo{FirF8={-aH_S7n*3=3tf(ekSuiLs;;FV#_UUiy?BpJ-4Ka7|JuoG`VIo$EV{{4g z&)v31J860Iar*Wd3%Hf_GxgWn#eielQuEm@MQ^371O-}UnRgkdm(;qPX1Tq98~$pu zZMw;8>DVP`6n73EgfW@tY#Z0kjpKZD997 z$LnMs2ZEtDHn*AqFA#7^oA&LOeptKQ&KxG*n5X9Iz4z%|uV(8)K)N!RU(>O3QLX&U zYw|NfxkG-94DdFr=v)z;7SwEMDIKEjw*% z>n|dY{>&DlLWGl9fo@`~j693iM;z2sBgi#FRxEgm&sPs{yO<1k#gKqm-0XXMx@ZDc zmlaw2s<6^#)7+<{oZMLR@K=^?-RK$O`j*i@*0aS8YRMp!I^IfkSy4>8Y(G@9lDbUu zbO5P{>w2uzlZII_UacBB+Z4rXT0kgRqFCBd{eMPkKbMvr1opp7|A+>b&CCN#bu4wI zgi@3C5>e(U7u9Fv#BQ1Yi9hd!K@uQ2E<~8oB$?CnYIlrCGGs8T!f!WxKgd(ufmd|B z&K=IDaL*f0^P7v*km+~q!&G=Fvqf4M?>3#f2&XBHwAz!2r=;uAJoL zDnE&;F(^tEDd63xmQChFF8VKR(SxSKf~;bGT-Ic_TYaD1R{<(aQ65n`a2>#(c|HDgi%}} z5B#?k^CTqUZpLE3At+&KSbT%E%3c)Ym)= zrSfN7ZVNA^14oF2;b@BaAKVNQ7P!PEqrB9or;h&l-}&Fs&KVm#uYMUSLkVwNc2 zX!jEwNGr1aSIL}maQdzLte8Nnwx7+}uQl=_>S3?I-i-7lzTV!Eu*1d0rpHgW9~mO7 zC;)Wv;bxW#mFj#u=i~TVhD?QDrTK#pTPo;m)jkNcKLy##W-1%7Csuh32#ex;M)s&z zgCg(L03F`FZSq~+Uk?UVeu-L9ey)V6OXxylyGM%>RuAfn$HD%eSi$W8`s;{mj*$l7 zS6>yna<2Udsycd}Qo&l~qrXaVhQ1&KqyPaOzgwsfcL%C)=n?ymiJ79O4CLuUC!|f( zY%kU9jdukGoi(&tPLdcUwBJ#@W~?1LFuD|r7Y;er1ME%MA@cCo}hzbyQlU24>XVbV!x-yh&tBRxQtIbEytjt|Bf_T{AvN%>Z(~ znumox_?I4~5iGFuCuvTo;5yrx?Ncgc=Y)s!yJj#!jA@Rz`zU+-);Q1XTS$1(Z8a8{ zs4`=bfQ1NJ`qAH4|7j4GX! zUE=}L8E8@mDy3)onAptn-sH=s)x$be$TOmcJ79^JZ|t8>25(h^!gnSm&j2lSH~I|` z?BFI2U(O^&Br}pOX5!GjM+NJhfqX4b2a04jeA-&&RwF(fd_3JgvnG z*b>PFHrBzPOlyCTmt;kgS4H>o3LZ+nt#aApFlzpmsk83RtYRkrewl|%GvCcx$|m0Z2pwDEA)DZIgtiywo2AgN?Er{ zrrZerlTy<`cR5~kySwF}(eI$273hY$>jZx%Um}ju8W}cgQ!uifsR4Pv_Gy%zKK`=X z&`KXMC-s3lHLu#sVY~V4+6%{ihr zLV7FdET36d1Tr1Gcb%{jbnZSHR7Ab5wwc*JzKTp2jWnwMkO1a{2r37%2)7d>)uqC> zQC7!x^;yj{h;)twSIi^?2~jksO1N%dq=K?|K>vu1jhxu{m8nUl>4eZw{WanM=ZI2kr{B&SMrEjH;sbmsmHXYRO13aMQy zNQ1oId0C;ig#no*HsFAemn2MTi=g~;?OV~NtV;8vZUW$=n^!;XpFU+*HrcbJ+_D`0Ev(gzwo75LUIEHgUkv5~; zN+?yDv$Etxb6>vANr4QayT9-bgu}er$wByd^Pt#?bx!??;&d)AO3-Io8|A67lUB^M zCN53v`+K88J?d*)Auggf0kcK^BnmWa@$Eh!iZm(26w-FVb96G8` z4#9@Wy~Puo{$q59@0})c)jE0;CpQf}TRFo0ULSXmRl$6MW1BJMiC9AUoF{o+rry7? zUJ*O7D_sD6?}b+>(Id0;=vVx5?}Y@Z@|6lh3xElHcqsp;Vi`t-OcM{k+E(}0~6L|<>mCxPM}=6@m9|AZ}8u73(O+W$>k%>OXhzsfTp zQ`fnO11=y9s2y(r4`45QrY>w6G)X2ib^Fo<3-Y+B%=I{b%K4&60-rxpS z;0DO}Zz|W`n0iP)!kC}lZ!toGW<*3l{Q9!FHoiI?mcYql^o9uMZ1fX!7O6noHc%k4 zCjQksR`hW7hEzegQK0${GPP9h#+MbVxiMj!-564wh3^tREwA&;iDr&{Euk2x{gn|= zu6fWw`{Vu!{RmJjNd3JfCsiyixE|hEY?VlW;uZ|>4nD{T%d+@xm>yUW{bvM#3TyYE z&dx%gC|HHlh=FV3%Fswb!2$0RP$|%Reu(J)Sf^oo|2oD1_TC`}{sRjH(3`}_1&rcQ zvd8s(&RxM|U@UWvz$Yx3-MLsUn4}t!JcR5eR~db%fui;3Z1AIN*3Yoj%fu~eCkX^o zvR5_|IcJ3zWB3~hq5j5k={5jR*96WFV2PUl`BP-J@%4IXvf6TwXTmDNcw^ zCSLno>d-^Y!=iXI498{l(8@9;15mfHSt%VU()tV4)+0t}9j_Kmz)K70&a=BWnZsvvhQr zi_xt%JiNiO~D4 zf*~tg?gn>s4I6srtDWrtbk&LUqgN?bLDO3Lb3P#ueP1v>k`zLOg9M^-+C`Pz6)&7c zK)TZ!k+#$%7}vS;8f0t9*YIpF>-ak?pC9`^?QAWY*MRleVer zyby+kAoc=QEygC`0{C;bEyt`W3|iMeA|x}*wfuh!{$3mx?rnEP>EF*oj(9s~Ej@Fm$t44%NC)}-Ca(W)tJTMDm*nrh!&Q=_lMICTtf+U-4)Sw zg~YbQqUPOIGO-rfj(UJb$HPm1f@luxxec>J(jCvZ0mFSh><7Vnps0;VLz2UQX=LN^ zjC_D`ge=qs1S*RIRmNF>*t+P5slCxbh&c=MA)h#DaSfK@mO_S#<)zFY#{k*L4Tz)$ zJjAQ%4YMThM^Ss7V~c&#ec+~dtb3w&qEYU<7o~mTiy#IqMX)M08iKEE_3wTs70bM6 zNc5uY zGMI7fBnpWTtR%A)062Qe5U2~9Pk&H32@658DF&|~9yTp`Im*wd165M@5SoGHu%Xa< zP*U$eUl9#53`IccgisK+4petX;1#r&aT#2JOD}kk8g?a6<$nA;BoZAzy$V}4kt^U~ z-bK~YynI6_4r~*O20G9YjKVi*3Fk?cLukp(fRR{;7%V6vrIA!47}isWsZ1iJ*KjRz zHdf5&oCu+s3Jxz2nKC@jKwZfY%npDnOjtOMyCT4Wgv+<3%Mh=~LF7*10fvAlwaLdeRlwE$SCfxn z?rTt2d+AQ?oqC=g)SVZ*;|Rg{vZdo9Ym{xX6yR>`_VHc$ow;>mMtk{je>iWWK67z@W5&sb`)G=v zF3@LP|0F<&uOA{nb@-Q1ULTNQ#@U?Z<$u&k%i3+vPwo|Lkgz{xR<6#u>9wdQ7f+0D z_QSETnA4d>V70TPUG2GMPwY<}1iK92xO_H-y6-&CO3D1@L}r`>R8;opamIa|cx~&g zblF3|h<$ILbP{YtxosnG9@cjE+N+Bn>A!vIyk^;L>J35}2DnDqx&pGn2$${}Kk|P+ zt*+g|PhY9=Asr1AH3z4G49=PV)CIWWa;(<9FqjU^ycJ;1W#ttEa z-D`!!O!YF3HF>&K(<$XKrZ_oQV>G|j`m8agPPg5#wtK|mLvo{ztISrf3nYD0?DTtV z)NH@1KP+ZxyThRf$UfR&1)pea`J!6%1AbgKc7L8B<#b7fssW=Qn_pgEFI8VaQ62|+ zd93rSo#jo;XZNPe)rJT$0`rc4Kk6`lLfc1U`)rVkN#40X5skWhw&70jX#E_`QtdP2 zf?ftM^0K--d#O-hmQP6*M1HhI8+|&r-TZ$Ml5!ju18>^WmdKXOwAEBeT}oX_OP3t~ z!QfTD(;09Ep97%t>fiYcJc7?*{!gPQP#ioCh5((H#zW<ki?>xTM%OmL?j@-a${||sG1Ne8Xgi$_B@Ug~JuUQj_46fyHi%eLG`D9Goar`pj zvN9#1C1_|vI1C67D--93v5LEiYj&uuP6~zi*r42appCcumRvnNViE&@@Mu&;f>n@G zz2+dZvg##x zd{uS74Jde2(=iu1KOcH~Lbe8@*xpu3W)sOdSBk?!&X6Q$-5IqlI3=UG!ZhM-&LV8^ z0EKjLhDla-W1vB7WvDq|jRz0qCGxB#U$$CZBIS7pzs%{qX9y0aaDieIW;5N9O8kDT zBHQnliMz@X(^ALZBOKdrYSEFV%>7wspy;fISPr*`+cd4Z-h19)XaZb#tpjJ=D_y(< zGa5>9Z#Nd2Ec=g9PLMWYJ>tNM*sL(NHut4&g~-{PE1`GXEL||bsQK`j$4B~)8j1=9 zD)e7$C~z=okj;qs)E$|_@{@E5ltOGMZV2>EOLX`H_x&Y|q4#T}BMLlx0x z4$HkHWXf74GHP|5yh<`$0sr{!mNTVQp_w6LHEYD*VQ>Ljr37_$5a!olhQtke%bGP+ zU0|AjE51qG$rq(3TQ|vxIfG2BuWPZ0cYpGKj;(FCwooBSh#0_)L z>R}W7_HGD(8N%lNgD4pfx1d7%z{+(MYys=j*x6|lkM5Z1RruF?=RJgbHBRaV(~u-v z08oR(Iyw_396eecfFSS`1nJlQ;8c8&cw~>BhW5Q137ZxvLX{GvK!d!0*Q-JzTp>EF z6cJv6f-Fr=k}4%imlCdVXEYE6&WO>iaaX)2IgkVhqy(3T$wlL(_E7qlM;e?Fy<6o@ zX+YX%a&mlN2`s^Mi7|LjCFV<5V6%kDOo` zR-8weka8c?A~jTgxQgPQyAS9Tr!f3~v5b|Q>)-Q)wuS=WVAwR^dQenoW|sf*wkgyA z8$$uZB-KITh0V7Bx6QYJ2rvH+xtfK8>0kXYRhm>3C=pt`T2$h%&F!TZ<5AGJv9d_I z7ZH&(zbH^HfU9d)!on~6t{FA6`_7e*0wp(}`5JsQPgOY8owUvd)OQ2G2WkRFXQj$Q z+W4g#X(9Uz>Lbgp>f{yBPv#doMa@NMC1ciMyKlj-*7Z=s&R$1RZ`U=b-r0aZa>?5# z_MCuF5qq)zLZ&9j%V#s(aSuM1NrY(zUP&04IW@u~?|HC^huX^LIC@_mQ;w zU%RfII9>-yubr)r=G!UdSvTC{I8)E_SE`r2^gPlCGMvPe$7~Yca2UcG{(wqyVnNE> zp(W3-$s}NEM2JImC8;XObY2?Ws@@*T4K-x?4Ecq&4r8;vUghI^HU=%=sGT)}Z+8(} zNJ7tH08fcRFC_@sQPoR(W6-MrujZFoxG)A5$Z04MuMcH^I56g=zN-8QxKb4k8W0=e zuFoq6hO;}oAzmcV8WujAX!Dchyb{u{#IDB5==atFI1LnVX?h&>_yD4?AR*>v`m=@a z3bwO|lNP&IQ&61CElh4j&62^r+L<}?BDS|Cz*N-kb-B%a97dOmDIYkZlREnKVR~gZ z*Sca=D}1JLnYPN(G$x66IEs$)v3Kjz!%8TJMH0BC5w(C6HhsCE`+yWws#pS>he0p# zc7W-tNr+4Bo?xSfXzayNlhE*>L-Cs`c8+NFJSc=3GLyxCH?x_;7TmKO@_-_H<;=n% zfEOg33pAqSP(KlDKiiDfbFw{N+PiNBi6rm+ls{uA7@SE&1|XcQboTb@4#i;LOPc{r z_bc!iWx9hbd&Kad9dA-T%XXMMaGxHe(tKB=Q8ZQ`t+ST7&{rIV+FY`}{%fjG;gq0Y zNy^pQzaB^Bl+PH$|9ndgqX^>;4zFJuFw+oM`3z&IN!R@T8z0L16vYEvf(-WWnITD( z@hyd@TZ6QE^D%bN=+rNS47lGPU*Tpj;71UGF6-rAte=GOry+@dkj5>~*%na2fCp|p z;voru$WjHX=W0fmH=XQ1arq}KOPUDcu9|fVY)6jnmD3k#85-5Q01<`k zgA`EC#v`KM3w3st-aM76J3vZ!p_AWzJQXKV{Imz@iXT5D#kqs10@Pp7u~6e%gQvgs4X1O?b_bZLrYT-OZv&R+2zPou zXf(v)hAYEIbY%FA4@f6!!I0>t>q8~Phv=orh`CXHT*e4@J%%{IB*k$KVfvZv&t83M zCj)H^-L=};WHi$_L>k!+lu~D7Syc5Bohgc7F?S3nrdfr-@Sbr64SBM20I4f-Y#MBo z!17}!V3@a)-!4J|sm>BS_`&55Zlp^7dawG+=GDJKSD4wxBk~Y(xOwDGcARvcDSOa)Y>mnkv{v3UK^g43^I4tK4Eq1*ymSPMnxgbAS>G_g(sSw9x&6;_dn< zofA+@2zmEZu)rQEXlf&a08q~!;^WDVvXnRB7b>pba%8k%_GtUWtYmSzzkC9>}L90N2y%F{w4!oAujdKCRc<;ol7vbAv zMOPCs-R3bSS7#yN(+>v8c4G$;nT!$=gq=Mdf!5K;(00Cs%gFiJ!r_HgN=%5yZkf_mplTT zb5TAX&cx)9T1f+aBQiH^$yB0xsxTf4mrr^@IkXDRgv!W!`iRY zYmu=6h^x@Csq9)7Ol!+R>XUucX(UeunG$sA1{dw4*c%qeu^}7xIF}Z)IQB_`faIOT z7XGSG6lEj%w`0DhXxWDMy6jSdUs8pgKqY@}V!p^7l_K@Bg`3to@K8iJPxQMkgh;#p zf*AAw2^L8l0Af5WNo7S7OYR#FXyky##cmHqjs;@4cjI~(8CXmd&nFxu(kSw4&y+wM z!Yg=r`IWNt%G|++NHp7dM74fJhYf)ovJ{fHE5DD&*N)i+zG+!O8Fj7+qd+z6xXcS> zCK``z(ZgEtIa=*_9l)rWn2H>|l<`y*ipJB>Nfw+B0)Rgg&ONxbT! z3Px!aSA#e(A@tuinxe#-e;s+e`LS#+zqnPtZMlL9DRHK2^RoSQnKqTqR?l$*xhc4U z@azj-IZu<-COIoj5ISV*C1I{^yND|&4hD1S_(uxTr9RBE?C$r}=+XizW_EEVE#IoT zX|m&g1=RE@L=|MAE1xcSaSJ!_u#3lhS0jeaLCz<2{*jsyLP^X?Sv|vyb##A`7ztx$@8@`SfcAbYqmzmcW9M*Q+T1LzyImA%;Cn~rQ+9m3C9#FV-9{pxEQ zV*!Fdb!i|yM}RZyOtSMXn^UNddU!L5y8c^IuYSa2pyMNHa`*z2*voc}s3T9~&J>ePkpw(2i*f({LYtq<+s z3J63YV}Xidl#aLhXQCfzC|ZHl+bL7~!W{X)YR7Rr->)I!Ye+{wG&@*(?Y;(}c0`XnR=W*bQBP zTZwyU<(3jU#xuQ^nR>5OXKa~=*+Drx0H+uHrB}R|^$UDCd}f;Qbd@MsT=?DYC;W$n zboUkgtB1f;llC3!|NK>196w{)qQ1*$uRG%C(CL`uaee36wMN~(LWsDToFbKG2+bX; z1@it(h6-DL$EuX*GUIRBbs`gzKG_j>fGbDxx4}c0)1QvEl<*Qs-mb$|N#})WwGuS5 zbeZczQ=GX2n@SS8hao~~g17~P3zSzX_(uSo=VA~>gYD)d9bOggp%j)T!*-X$@YPPL zZyi86T`9!vijwfBDU&bY@hI zCSo={?5MN7Y<;sRSFgXD;ebc=8Cqo=;LHXf&LK`Q{1zb4d#8Dsja%y~$gAm~1(BYw z2+zPC7GoV}dTOfBiQ;XS%47idr8AGdPkfN{4~Yw90lcPKVEDP7kMq%*qnOh^;I3> z2i#!H&)`1+oAuw=-L{_xDhdt^(?(GO3V;DNNh_@bm4}lte+2Y+-xD^7GZ_jU;VSn2q5Pu!WfslP!$Jx;)XF*|>cX#XsB{Fg`dE!GVYpcp~yTfzj;p9yg zOeH&v+7`TKhi^?q6J!PCaf9dG#Sp>7`_q;_MCk76i<8VyeDR*uI!aO8nGW`MS|L1p zRA+i;{zj5zeAMa%qUlce1qUYYA*e!qcl?uMR~^JEkpRs0J74dkZOWM<3Vjq86pvt; zel5`8@@%^i^9l-#m{9|xi~**KU1N$nstD(`La5-;;F<>$$JLvPFQ|mB)pn80T zdIXgh^;f?90vc-o#>O+R;iFnlD7{*|*qKNY<$VG3Mcot2#~*+g=_t4lmiLFh**yam5VM6CKb21C$|6709 zuS`asu6aWUb)pl;tMY}>(b_W?0TGEF}Ym?_gic)WTnhMJPZm_C?dY`QEbO%Apd4!7~T zcbEmxb3!jbO5=hcVm*{hQ>4`U@PzVsT}`y@tUb-7WxY`$O?8FZ3Km@FDCzu9HPoYm z+i7bB0x{TlGI>R|7K_9+U}5rv!tKE4K+br~U5-S0aO6Hr^+RgHJu7tiR5Qf# zwW|9M7!&|@Eyx2Qb*Do;E}q@U>45mC%t%R&_FEXRw!#6aQ<2e}+*pInPmukGn#@=k zp8v}g)X0NiTN~j8)0c^CiIsbZ^;X6=f? za}q|Q*#vmlWnKVr07J`+PBFN?E%!hZbpoJh&I`Zf=AZrz8Tk@0j>CU z?9OI67|8}t?w-3|b6mj_7@awK+q`X^3EqoGU{P93C@}W8G*lC!#I#d8%c^#C;UQbN zBZ<=I%kt%Da0;A9=li-+XTPzxK(B9(oKZ|Sl`=#6VEh1ucLNAoc@R&2|FNNU9u0Zx z_BF*b?{k#5z_i6SBH{O&Jk-y>+w+e(PQ(lfHW9anM} zPhI0_{NhMbRR7i{3|-ldYB_Yk4r2%X|T^5VTrZ-y*H?WH|fAX$y9ZnI}qg?z3IZIe#Ef$M-Z1TDo#B@a<$yTKG}v^HH~`27@aBbvL$r;Y1T1#Inpf*cyrWB&_TFgcn3trY(6&0`i8uC%)YP?~?p!};hR z^0-vLlTg)U%Jpeisz_W_qNz<*jyTp?;a9+$4rdO-OUh0;-7O1%kO(YfYgMx*Y@`H< z8SVPGtP{eyCc*i-4rJ)n-_`Z;tV#@5OkB(sbKj&YQ%I)mZLBTAyb#EzLnwM zKSa{vV7~ozm{7SYt4}PT{jQoSxYqIAbgSJjxM)ymeGZeZJt)-HMxP>^U_GX+*=jt} zIgK>WHsS3w3Z%*?I_YY~eyST%uMJ9fkEceiXXPx_^w0BQu2+VG=mjuH`(j0YXvJlP zf|kd1{#ad4I|(J;tK4q3u81}L!lZ#v_AP1~X&}IOthS>*7X5SH+P1mOot>H^`j`8? zu?j(CnWO4b9%XRYLk+N7D~m9aVYuh{;_mR=mh*jFp7qeo!D5U@=hCfdjKCem`7SQy zS;VQYqX#`XpuonV;Rs+qtCDSDe`#FCkG8?})WLA|td0`0SMW59AhK*Lw}eMj0}YEe z1*4d zL()k!;2>sAbhaEj=wOZMtFECXWx<~*pnlo#v~BnJ&64U_(^tFQi*4TR!v!V@!US42 ztDM-cRLeyfS+N?lBU{w9O><;w(3WKTBRB5cns4|dojTIRDaJc7OQa_Se6O)Lk%xQ> zcOaXT9l$H(#0=1T$KSzCaaK-LaqiP zQih;#F5}%`ZdJb(?v~?*BW8^2(G9*(x()efT_OzQH#VTM@H>Xpy%VynDwDQL630Vq z`D#A%U4%1LT;nJCZ6^=-jSXA}*Z%C}6g@Z$ihM6M8Hj3{A7$V9H_Gg_2FmEWF%o|U zX*cBT%oHRk(8fc;{We~1ZWLHu==c}L7>G0(+~-joUn(YO9+)Bo!Oud#Z7qJ}d+W7S z4~}^`*dgE-;nxyuFo20Q+Oc-Y9v#G45^YW&Az-ljM>)yw8Gr*!F8SD$owsnsZb*$u zLi80u`IScJCPbBhAe}TZDmb%=C1Hyvm(E!c9J<8E{5P-=ePK8za7f7JT+29{BEE}` zh&V$-CoqPIC9KGOMHlXR2SOO>9b9OEVLXE^T@P@Hwlcld>W^8banZs`&Q(3Q08<1M z)oK^3uzF2G_lfJj?>j9F#Z)hdK9rjhrTf*~u`E>0Vz9$X8pDj-T$*m-&KKwS+n|RR zs^j~u`*KP%KUq0ng(`=3e}|-?r^%Wu1l1ceFtD1ClAtcD zS|Z?^+7U%Y%>j8A=OK9hZ?Hlj8BsC~QSxYr3QJBS_Xct$xmFG0xWY0NCrz(=o7t~I zXCU;GXh@BA4avk1Hb%(>Z$bVB-tzpcQb+x3#8mpAX>L;vZa0`5pSXtSg0mM}gGy7r4>8F<@avoKFd5aqsDQw0YzB zS4ds8(fg~f;uoz|3$@BUyD#E&!;j@AsR845b=K4rU_JHGKm01AU`%!SNT#Xs4zGYR zaC*Jo+V&p7^DuH~;a@>$RGxg`ovoG|C!Q$7C?r(gQ5}0H*Pcl21dOFoi7)%9pu+I0quDzh}1bt1=^aWfQ1S)h9<4X2=M9_E$ z7b~PQZ8Tnd-Vm}H1O~h(7TH5U@V$VpjcIH!W2+tGZKPE3?(9x?Jdoiybh^R;7CT^= z+ft~IK;JHIE$M^l282ad6Z}&9E-cbJ>T+)-=2ao3hC%7vBCL4(i3Ok55#_*v^gtQb z15G(HhoHE9%xF^}jltNFjQ6HDa9Q(D;XkG-kdpn3WV#Qq)ZIA~&` zU@D-9zojWL>uMVd?A^W&XI!7$dZ8>=ZcKBi?m*Iu$Prb&!82m7L)nz!~PW*!} z2Xv?hONpLsm@t>Brb*igUwr`exec|{S9;h~Ne00{8ce8T&|tt`6I3PlGtsTHGm+Ib zNUew_{E&^u1p4esi?-UUHJYGlyECOMv_f7rsiD%VHfpoBY8q(lX>foF+-R38#bX5* z5!IEAp~`;gz*G>j2|4w zDB(Pc`Lu^1Uc?7bV2FUe11A7jy-|ge`*MeDB6wlgl%gQVqZX^MgFJWX%%*WrhCS05 z50}U`X}C~}&8D3)J2+tcPNjx{e>V%=^3kR%b%B4ah4ywcP%5ngYk%#RZg@ouCW-R7 zA1M~I-`6w2Wg+WgR;qDb+ZfJN+{=|LbYsFtC3BdiSH^hc!(fX(z&8rqdAa=QfpxHH zy>DB(tMw=7#^BWZ)x^-eISzh#=hOAsPGU}OdX+-Y0T4wNNd=(MANpuv?a_Smg53f1 zIKH*W3|ppu)0lgO-tZvmXX$~M%g^#UJdicO?LWevQWCwK{G1O*?zs*4leZvlo}dOc zBzQ25W(Ej8_P9SY3r^$G(~X1ctm~B-G(xk>*owxm6=0x=oFawVm!8N5-ffL&VZ5^{ zto{JM-SdFMnBx53cUr7m{}#mlbt%mKzb}PZ*qPb?bKk8;Th|_!6T^44ZciK4Anl;1 z`%?=He8VdTem?(qPS_2Ervsj?dRN6#iYd|8E1x-=90^bB=%j>T;$NgN-frI4BpI0z za7<-a6xiAsOLRr!&wCNoMD~p^gH-YnGD;^ zB$RncXt{sJnOosWYVe#FD$V;8zm^9%PnLr16BmQ`jV9!z%ab%<>ao2TmMyK%I`VTw z`>Xv|_D}Scd69JntBuGvLhHEn*t=^zHakZrG!-&LKW$L%ln|l1m(kkzqn=RR8=-AT8>rby5jij<2Pm&iLIgX*gIq{^brl8McMveoS z|2o&kM_amdu4_wmN0IE899(s3oy1D3K&REga`znpo8KBD`*8C0d+yZ zuu}lkRsWWD;3UZft5>HRHqi934P}WIXgIWh^&+d&elyFIJNd$iS`Q+_*(e(y9^tIc z(RD#+%GGn!nhK7ZXa&glH=(nj-NLTyR3}#Gi23|sA_NT~17q4mA;U<94G#$s4cIJ) z9*`1V-E)(`BeW$q3D2=6FK_^vM}tPsZk`5+A!&~ZS(zb>3`a@eED^FaccJzj zc&Ez%a&>FBFSU5l8BUKtpNT~0j_KD|!+-B~n9prJZOP^_>eFvO4fAz$`gw;io=yQm zm8{Qx$tp^4mlA+#*|cQyz_%224uKxlJQO0|kPL9GU!b24DF4OD+tL7LF4lg$Y2~RCud_1Tz40nQjxLgn`|6PznU?C0M-Ic7^#;1pVm!+)zY8 z90R@2C5s$L z@iFqJKyyH8c%-GU-q~Qa1b-#(f7f4IUXTPp}s;>2m~kF%gc9j5abF!iY1_ zbtE(~W+UA(JJT&=c;JPg;GuZQLNzOoQqtV?dV_-&WP1(hoyLH%u@fX^GBFKko-JqM zy~rZfKPTdo3OT|H2PNNjHVvT_LbTxJ>lsj<3 z%$ro%FTBYJZ~TOAh}Wj9?}s@+2T3i_a83H&!TZ+-C+D?XT9oVRHFeS#8mE4C>FnSZ zFBbJ8-(J=Ex|OFVKd1pG9}l{9l`f-a_!>)9mx*2QOFd z!>Vr2XQvlCzx%I;pi6+s(EnoV9Jn)$qAVTTwq2>%wr$(CD#;hywr$&}*tTsundb_fzX2?(fa0PDY}$wIt@G~ziV zXy;X;TTE7SyBN=Q%c}?p-GKUJzR-}+gNxc(%54dnrM$Mo%rG~7}P*RR5v8vYKHrR1B%*h3#Wm-y@F-qSAW@6{0a1Y{qEG_B%hP} zb(-^I?%CYa0nnKO=yT6<@Pg+oT?W{2v}??4CMNdA=MzIFR-ruT2l}86uv@%1z1gWJ z)>M**aP{i7r9Mn7-Ji!+K3%p}_O@Y0O2=Z<9$&ni8rADe=GeiW+z>9$%&cG;Fnyg} z7AHEQk@c5L3d;~?s#|87XlnAH#Y$eP#UUrFvU>F21Hy$S(n zZNrGiJC@{-oS-VVu-BsD9s_bK=M<(q1vGu%&aME|C^3)w>~`~~E7VGzl@g}%qWfwx zr4k7vj|G!k8dY=*t6RP>HKVM|PE&229?Vt(F-cR-`sAiXRCV>#e#ZtPG!o?m68T=V zcd$HF08mej)~Hruatl_(f?bS@mVyS`0w32fGp|$`t|%FdBeryxLeHpFwv|==>fUEH zZE^BUj1Y=;X?n1ZV)S-QcUfeLq(_4{pGlSM{(s{bWy4(r?ob&tFX){;XY9U4WM+Pd z>RqvkoXpia_Dn9rGN{By3C1c1M8xM3BZulu0Q-qqn6N?8&4UPg0oEKec%YpxSbkV# zAsh(fzLmzYoJ=>cA-Ee*1_O{tkF8hJb@m4SOwkaxCZYS(3k!8UJNbVd#%N0+5yO*8 zVmrj12v@0%wr~jZcwt@)-S`8qgEv$SmMI=Rf0HB!n!*(~7G;PV-Mw-!PJ6*LfUufsj z$*~%3vV~8`8h=?pC3a|jwLlRAIuhaQAfm-5XkH>>i+wlWs&$Vlh2xP1t?dF8qAVh# zHcYqTDXPQ|##m^j*F-dzVmh%0e~X%|w7V@?pV1gPT<~nf#cBs)uV=O}4v#GlCSA189=W-GP=exe?7jcDA=Q|J7uV!@l53@;xbvC{8u>VzMO_E@7E+| zrO<5oK`s#*Dq&#Tkdo=8iQFI3^UzY%p!V3UQ%cVJKA0mlZdd3IMXBvIxd^Z3$JhIx zulREec>Z5MH`0S7?v|_1#fI0GX&<}HC*N9P#pEx;ov2$;&!|7rKo;W<%XI}WWV($% z`udw53$e%N@_Nhf%>VgxmO8Zp3ibbZ=9roOV>C(&IBbFMxv4$XUR2$PqKfcp8&6(; zGSiL8c1mV0$HOCJv3iD^@Ny9u%N(mk6bSHw=WbkcmAfmKL?V+w>Vs6kCnP|)+q+O_ z{Oalc^Yrn;#C@BV>^O$#o+_-_K!zF0L#LSqa^(HW`2Giv@~KRGOa9nHDmZL?d{qra zb!#mi@K^i@C)KyCT=OLxyVB03>dSOQ^JSrVZYvPC=eh7)OqbQJ4kzrQ3c^Rm@*&%9N!>TqZe0vN zi;{MlT&8v5w#k3kv)?KH4@K|uhgro)IY_fBpugC-pDF%Lvo^MrjDD}Fgy4}khk0z_ zRF9RH;CqlU5t%zjq`$DWgGtTWK~ZkwFJmB{bR&(R&=z~|?xj^9Jf2**gk}bYwyK6` z;psU{t06e1Bg=CP2cOjemG-Yb#@W}h3$eZBNFE#-B%W7GRq^T^4DUyyzdgm|GhPZ$ zfK{Hi!DLaFlSANKyV_{0ezHkB;NTDeu9lPatt2LXe_gm)pAo`uNh81zBM?6s@^B3gLTmN?cY{K*oPqZ!TZ*%? zoU;>5j&vkR*mb7cIDQq&REe*1(yyth0c>nw{~>;IAF-JDp;O|#VtW0)aw~zK5=;#O zmv>xP2|SCcRe_)Mq6w1EW{5TrAxBB8*arx;EJkgOPTE-It$Td5< z*UJ}3Zy#pUQKw<_-cc>NoIA`ok!Q?g9e$7(-$h637qXx^JE^Yc+vgjD!yOxM0ht|Y zEA<`rqisZf!-`8XcYjgef%C7sP+Xmh2O!c%!7V+28NTZzMhI0rDgbtO(Mj^E1Dr;t5U7MUF?}& z=3{2UJ{ln!R}`zsM(@G3TAdlZ3#+pt1=#kIT!Kk!{ZY#jV7X7ddzegU1Te*B=hl$~ zxBdN{r&-gQA54aN+6cRX?`TU)VP2kvzbCyf;Z|>5PsNNo+mM@e#KaG!mXJkeV&WGJ zZsWBlgcq533c48t6OO)XMBHvo8B*6dL^R*gjBdlBY(;S%U zilekMG~{}5_Z;-H9R*B#Szv3jwJK!>o1983!rs0n<0|9=_Oi@ zurmLOTNku)^yCSN3N?Psd(j9yYAqWIky2pw3ZLp1C?;PoN_%cRG7yo(5CYjIZLj&E z$7ShX*dom<6@D%$&}A4dPX%EpJslEyk7Gf$$nVb>sE#LU5Q>O%DTB>U!=-e~JZe>4 zc?ALmM8y$7GHUGbGQetbnm1$>$06%oXJJx2G4)RxNMutt=yacdR!D+*1_VqxS`*7x z&E5RGx<~jIgWf%pv4TJ^SXw#gENKOj@ z_@9}GIqoGrVF&FYTJ#@L8VC2u1E^&sButyrymOya&`TyeSkKC+Kgn#g*zD9N8=2|; zVVYf7htZRM(tyj)6l@;Uo+&sR>ILBl3Fnce?4Be>Zz**uQ*osJ%el>-DED!`_<`VCLH%TCH`uJL9* zlf>w`0u=1W;Pe%Q$8vjd{g9AuYpiNLbct2TaI>895wqBzVGSCmzVlVnCQ|x;xq5#UTU%=wW&5K&PGSKvWlKKp(u- zoTWgk>3%!It=oLg$42H8ZpE^*1=)7JX;Gt^U;qc(k2vKz6Hhp=99mw;CUOhGz5tU= z^j}oxOs5&+c$b_W10@S8$ju#@0faqmqc+HQ)Q(LiPB~#q1Y;T2`icQ=L(@H3mTW%N z;y;Fz!A>zo_VJ?Mn740CtTjHh=P>W9ce^l)|HjtiG_z>0TpNhyTWbR-lr2k%xE?BO z7J$OIU(i>Z^wsb}Ar;J8u0x?I7&MsqJ&VyjgpWa%MG}Sm*csJ6_4dpluRagYU-e;k zP2q8K`ta}v3(b|@_3k;ObS`F#47KG&H(Q5dtzKjVwpL!y66#`pytt-c?8=dP0xXa1 z3?3LSdNEoqGWbuYvH+&c*#KdP=SaM2apTI<%y>bv)pC#?G>>rxbA&>;y^-48gZM=*e?} zI1St+ianWOoO1zmYt8k^S3Zu3ba0TR_XY@=`WaZx#FRy5D?BGQZpZxSne>-Z6>m`_ z?<_lhj_C~HMpktgNe99gx;~U`8UO{{Cmn^{=Jt|SJC|~%%X^jhdcDV45ENA)3*5Rr zm8*^(y8I_|Zf=Xwzy4|t>?)inUnTMeP7ez0&W^d58#!UK{0bpNkkwhJxAA&nQB$AY zWGt`VZhEQ07-gn`AnC5f9pN_PXrZPuDHT!QH;2C2QgboFZkEFRtV-5ISqR_4_D8t`9$*bO!e z-(3BCaYQyV&(c*QjixoTxdMrnQ?%c+kAn3_Q83Ym5>6Bg`n{o;x>O7G%mE5quQsy$Z? z?54i$MIiLs`Y2taI+MC4FFx(Poc(q|l%WoJp*b`AlV_@}zx&$-_7ihEwHQKV~6J&vFU zFC*!?Fk)+it~$N&r=iP!+wBD_#%rZ?4Cah}pZY$;MRfc9wxXfQei_3{cq@K(1tcPo z5abu%D<_$v#IMWjuyQoEXfoye;J|35BB(sp>3dw*Qrk_E}b<)3*gmCD9 zer?zaEjCoJ-Qn}k{U<}WZreknXDsu;S~Y;>c$-cQ>||yjGR?ClogLDitkbNU^G4W; zt;kdCH1TbfG(IvdeaE4C2&g zFybu(nTPjS50vD2UmVewv}mq>7kBx`v@YDF6ODBGaIR_M16w_nS`Uun2K!)v>Gy(! zp%>YLlD~*lpu;;X>Tm8ei=7kGZkmoxte`AS(u3_6(gq-aX}@^$g_*9(Zh~T9S$XgU z1qH$Cy8!tVn*5N*wZ&^YX1r}sF7&uu9AWXx4`4p^? zC49E6NsQkB4wR%L+9QPvEU`k(3@}2;G|-r8vluER#FU|o2`V!ZWX=2`qxoJ~NFZhh z2Cu#I{U{592WpL#JY_5)-t2&SBEvyYD+F;fmyAPlZtu+P0$?^FY4ZGHlNR)l?hxP+ z2!`l^PqgIBzUfQQz`}A)gN)Hbgy&3O_8FXMm&P;zy`gwPiLczAbyCDJ-UWlP20D8`5g&IRmvS@Nx~- zTX#c*opuwH5yrwn29~yt`z)_yGc_j5N~40y;}yL`h+K_mrv>`+$Dvt=nJSkRg&=}W zShgtvoD;+eTu#1pN)yOa+rU8ujvgFzmW|HwtyC#UdBS9*?co%Giy(IvYeaAz-8K#k zx38q&dMv=DyJyCYThp6Ui5}c-w&zcFOVP3^1w47dttH^vO#OqtP`-#ga6>+EmUfHZ zTxal~_6NryujyjoRP>`ENH+IXuBdEZll6{(Tla`*eeKq)i=!wdS8Wx~vbZ%^g!1sr z*!<8QR=6^@tqjWLtCpJOlFZhZ%nn=}VFM|`ON>6uR32G=DXlPyKCM^D!#H8F0~iff z@mXD-Fgzy|s&q$T?0e(~S0P)hBOhtFFTEZRG(51pHf!^{{g2JdA6va@+}IsJ z3*Ak{d&%fHB_pD)Qn(`54bWezthwJ|k;G}(4m3hhf`v8mNW+xqZ-Tp>X?Wo*(uJR< zQDUihHg^pR7F9D&qL!S~UjN*Zi8vGpUvS|o>~thq=cGqpYyK%tHg0A1!ylkyx*NG_ z2qRdKUb3k24>_FRkDgvJpcARC&WXu@VM5Q(E|ksO`vu$+MXk2T?uV_f?YEsfV=4Hr zN)9&}=zli8-hRfTT(>m+>{@ZOxS0@+pXD6&1W`R~pylT_g~yXT6I!a{Qg<`azaNdH z^Sd^LcILWK;!1gZ<%=I(tfM3m!cihhA$4#ulnKz^=x-jXjf@+g(KN_9N04* zy7H&A-}n|yzj3XmeB>=!=(e}wA6fNiUTgAnkNI~q;x^Au;}OCrrV{{Qk*Mm^eo%=h z!A9@Ah~;7sSs_M~8yiE)Ml+^!Qq%Oe&z-bH9*e>(Zm8BpmGy-`>+n9!oCS?WY z_N=>Z=)M$CJv4rjkA+`&!jv5K^OJ3{16!WH%##9Sje>-FZ`ZmQ__F}MUT;_Q%5|6g zZ6Mkkn2EE1-{}Gxr9JI;R|g7(^?$~s|3jiMvj0b*^gsOU z8k+w^3X<eTngw1b4^d_yNE zo9I265)Q)2>v2NwdhO?ue606_x7*w4m^5}x+l&(bQRT!Ijcj^Ypz3AmB;ww`5Yfbk z;#EWb`3f$v&yCfT4}B$sYyJ1f{Zb+zRgr<002bpNm|+F7mlB1OR8j*=Jf&bdW_(!O zA?0>R>C1thFooT=6Zbp|UDLkI+{>2ZBr4Dhmw*AgM6Hp|enMHFtyxiAY(ZIZG(a(P zB9H|2@o28O^;Ku5n^nNL$XUf*}`95>O{%@1w60k&jgvsFn%fFhIs~ zAq7k1Arah$AvQNL!I@T~4t6Ve&PVRVKQC2Z9vxHZWH4cBF@a3|P6*C#LYrx%Ar#QG z2De6N%cHyCwWY{tS=&}HX`bu2FidYYQ!i_d+g6o)c7~z?=_f(f0+uQ@76lOzNeqJW(L!ucVo8JvPmT^@(;K=YWG>+xrXk ziYV;v!@+D$2?~ORnw3qSRC8u)Gi1DUihVdVGlE!?lS}%0Uxy+v5uulLaVj~V-zmC5rY4}L4({Yld$GO?x`cF_^sbsGZ=X2^vZ2A;t zdfY~Z7fWL*{?+HT$qn$Utm7M-PQCt+i!txN;0ty_zF8jWC&sZQHX$Q}=0aQDhwRoP zGg4YCe|kgYA!wm*sHFtKAmDm}fj+*T=mB!@UO8@j%q2Yu`LF=LINfqY-1fs086CtR zjslydQd!fY+!z``y#usSf0L|GGN-m}1Nz-=#pD1oclfWkY!&lNNl z#WDb6gM^vgOd5OP?at#Or4`+ErA)TgboyhI#XI@!VPyqCN^4o&pl&gDStZlW2M-lj zB&l(3=6LrYMn7Mf>kQ^GqIE%#ZKl4{!LizDbFvtp_S9T(#&jY=n>UyQU?m~w@dz$X zr$JLP_Zu;O=k>K>o4DOg~UwBmXZ`t-6wVZvF)!EhJ^2OXcx**;_j~?1zWK<6pNx{God79O3i-uD0CBgC=@y!~( zX4i#iY+^F-n2TZ5*w|sEB*F3hDA*m2K;xw>c>W4dK5*Rohn31QIKa;3k=)fF7T3Ty z;14YerROiJis3@Fw6I{~0?&gU(|;2ruu}qf2RTIAtjbBLX<3H?U?fRo?JPNN04Lb? zCq~VTx;Tt1AOP`va7SZ|AO;<$hZ4425HEwF)6#1f2UG75=_*mzg-TfILW}xe8#Vkp z0>37em@BR!%zl5&N#z5iI0VAIEp(i5$O4d$bZ9mq;)(0DU9L81E_U1Vp9;XXk6PG2 zs^ON}i|yn$%A5Zp^YK=jRD}Z3hO942+r%C-r7~Y5c*5ir?^1?$Knd#{WzhGf< zGGP9z`{w-rb>D2PjQ=~Tr5U^V7uk2ER)YvJUC?dar_PfKGH*0xx32+IGmNl+$H9!F zQ-tF%?eH>QKewXBs$uNNjBE`mp_Fe`+;vHPNuTv-X)3wP>qE%t?F5m&$IEysIe{cG zz2n`XO^Q{m79|}TTX5$4{HC(YK4vF3cB9~G`{YTsep`cDT}ud1|2-1g+oyz^4V7NZ z^2z?lyK_^nwEVH}U%_tc%%}KN*wpabmoL?J?(QEZz58S?v|+#dJ!JfMtGunV`ZetK zZi!Wkrz-D2!Z>VERGp$22q*A%jP_5`i)bWhuNP|R-X6P3=~@cK&a41#D5xqe6RLdd z*B(aDLb+bQ|FkMVf0=#pGNNMj$y8anvC4hPGuC{$+^OQ~G_ZiA_C?0#%aIe1pUFJgl|01j;(bRMr*EuTwUFe~P(OE!*;5*8FCf zJ;0YIW+BoW`aOC(&j6G{=YAbDYw<59)Jp!s09BXK%2N#Z?WFfL%O=hr$nTq^q^<)w zQMhR1bGgRX5KO_rwjMEL;Wq%~&mL9^ZY}2LT6U+PVpJqyn2#33RN-!;SW2HLLb7C5 z!QgK5%acpRO*Z-CCbVYgU2E_<2<45OLyVJ5y z*ND}^HTOFpp|)9PtGZeD$TZphmtOs0_)fRi%XKZkll}|J5l+BxG73`+(1V%=cD$c~ z4>z`mnF2|pTA>wlKI#E0?od4W4JfM^+f$%@Dy^v~nkN5#C*{9kSeY7suPnrJ1Vp;j zHbur?;5hPdGrrr7@{j#|Ks!{v2-Ybyf|L`S-IECbHivO-Z^=$Q>wS*a-J+|D3v+9~ zBpvw2wJd} zN(XLv5`}&X^4=G>IwNt!GDtn>f|ah%7_n2D1q>QbRkbme&uU=k4}#h*7fg; zHIrGum{zq{|Ej`5nV|>@6t8A_H?M4POd{-dOw3lnQ`fh+goi%vU$Q7|Ye5-^JT@YyR!mvkN7|ZnM z`c6P{l;R^4J>B~EBAn~nZeASj1EJIr<hOQSD7+9iY*7BKu zgwg21M&xxcK?A8QQLuvWqw8qVTxEHnAsnq9@A9=Y^1?0!19&d#&1J2}zv-~S1gX@9 z3Dd@`T>~UIijVo57;b@+FaelQ$D5G&T4i8S7!qHVXdlmUb;tE0^gTh-Vrwn*|(wqm60kKQ-GyVZdXy7M|jm1L7 z;Dn*&4tRAkdBefXBus*OOGCQPj7X>tbL2)g54=a`wYOl=-JaCrK>rdh}T`B%*kZN$pO(tC=CG1XO-V8_p1L?-~%xWljS+O_c^TqSyg?rU_= zAb=-7)gVb*^p`4GP@@8ZBol$ft$D0n{up5T=M{?ewKb%bF+Luf3&8x}_%z)OTp0*Rq>B;oBZ5LoiKIvX);30UCn$2ZTTzJyqN@rj4Hj9! zPXtF5L%YIrw#+q)%$+9ZJys1JRp|v`nNKo z5sB=I9|PW#!UzA{8}8CLKViq$YaIqe0MjxC&A1fk<+-7bo3fm8H1eFrO530d^~ylv zck63GzNzCe#r!i-pc_7t%dC>i$XMbi*y0L-$TYPPsw8VMe0vWnM%JdfCV_ylA5cZi z!F1ibM{WSL;-k;K>^5dSkh)XiE#u;14~FL5ps^^w0)(d%d(o2cE{}{%&kKQ7($qPA zLQ6^sK<5)D`R#aunX#k+=|}Wpf#6*M{YJcj7s|PWHG`CtPpQ9jdr^v_%y`_p92qr0 zD=j8M&(Il5q82i#+i-NPly5LuQ%r@{U)B4NidXwR_7lBdq4$lk1h zn~X+o8Ti1GWrj-#)FR_(BnhA5sGR`}kyEzYimcAan4NN-Yul;Wg!*nidYwBZiLSdH z{H?F=^mWiZ zNsr{@2DLTyg;-Qr%k-J?tmdJ#A+zDPZF;bk zlX`yZf4;WZDCG;Vt;(N9EpW2>yu2L`Mgl;2*k2_6Q;$ObAJSLqKhyv_U`tCnapUiQ zMD`e_gSCsZCsF%GDLGqoq*QgNO?4ef-u%czb&>@9fcui!dik~<280{;l`2%$+L0ax zCSBy+0s4p%>L2L3U$0T`C+_Ss-;YwJzr?~zGOF#|Dzj>xDxi}UHfpwO|EXmX4x`^&QZwjnS`Bl0{Q~E#OyivyV zpBuI(Fbo|p2kcjSt869M?OLM1Fw)!<7Po}!(tu+>oR!N4L<~(pX@gin3dT~L%+mx-D+l^%kqrj z&f|#kr;)<7-7|lxO6%UY^vTxany!5pAN~G4s%8of7Om-seg}ko*t3w{1Dz=`jwz;s z%g}=!&diJZncra_jvnzSLdPOybF`t)w_|J= z(y#1hzq&SUCLIN|o$YtDFUsUgM#w~C1aY%>>0YOwzL z!NTNw3k0%e!FRH1^#*oZBAT5NeA4arMBTKQTSXF9bhs7T`Iu{}fBgNcyurKKe!W+N zw@+Q@Rg*70A1%xzdQ-caw~eE289v*cB@aT5)IhKhpRG{hu{3%v~H zdxyi7N)?gH@5?6XILWDWN-4Zmm(Id6gok$b;Ng-)A#zl9^c}&0mu&$e(CV#L%~~j3 zM4By7hqlIp!irTs4zT_Cvll2jWjDGvvmI=u%SKKBj#ZpwDW&I0g9Fm(&qV~uGY(Sl zXc}QW+WV*S@&gPljm{5+Ctr8op^J0;;!T^}(xpt)YGam5gfF)CDl#r*bAdQ?vYe#y z=aP2Fs<2Y7OvDyh$!Sb02nH>&rQP_JW?8Qy650dl*q~G9E$kptMgh}|qk2sogFEP>taf~#h zaJ>*XTA%@@BAgbXAfqT%C(;nvgCl(EYLjhiHBQ~$cC|4hEY|>?3fOOp$2{=pRGn`?RT1y!Vk4}st5<5k)-Xn}jGbz#K-rwFZ8KEdDG+4&eT0I+5Oe4%q#g-WXF z!jyf?!ez33onJI7?CyGXyRC8&eZW;*_!g3qR4dN5{!;z@h-z-+!0+qI2NQDs3SlN- zsl|4@aBI-6v#5jg~@B%9v&1uGK8&9=t$&)L!v#RTM z#$91-k#O6i&b$Ax0=TBPV$`;;*SeX2W^(Mn1iV52sAt${)2$ClyDz*Yu;IEb;G<eaHXUPY(AMaOrjyqXH^T5 z`%maY=`qT<+IWv#LwySw9=eaCDrp{nSJQvHJf5+xP)JCnyz#Hz$(m*)5#p2poY$|4 z)8vC;?1@#-BAI5g%3i@32DO?(s*2V^NSA*1g9s8O%=Cz+lOK47aBp|3FDSJ=37c>; ziP`yPLdYs(H(?o1BTmLOf1GK#F+m*yI?lV>TO>_D48|Kg1j^21XOLxy89q(`VytvA z7(6+mggAZyOJ=7F>q&iiEWNjYd*GmnLc$#ldt3rkw`KBOs2Fd7Z8!WHlb_X+*Q6c2cYn77T;WdHl_L47FrK!waAUnd`o zz6f5-dwqGl`$&c~FJ~hSqJ_VFtQdRcm-sk9DWC4JH#Rv3R;hXY&TAU2rk*%9dW2eT z?3^<0ir4ex1-YWLW?R&9GQAYd_6g+%$BH+xST7+dp zV)LMdU~oHPmw?&lFrAA2yN%U37VVd{1k&xcQfWq;eCD1uYio&Tj&0n~JzgUDHC5ZX zJx=svCDf9?8;v6XDyYFUR;9Q)7X^eApT$$%DSYGhaHXW40|mBaqklyXmqEZDPsb9s zp+wI4(_wXt$U%c?|E9@B-V&c-u~N1XyuiyoceQs zDWrOYby$*-!qL%sE{Y}F0_Km|XV?Xjc=x0nqX0aMu8tHSFjz%*^n~EOA5Xyv4pg?y zD%$@Ka=GA1_8BqrP7Gs@Zr6MkLP_H>Tr!NwvsWni1M7r^(;q8M+CaQyhW_^*Ze10Z8VoGCS+rINV0Csk0y0{omstXy|xV ze1YL{Nn@V?ch}G_-7ULqN^Aqcdm;WOh6ilj4c>uw3SlT>%X7w~=MNWJ=jzd(( z=hv(Esr`>&=aPK(r#Ef)ClRMOX&;9Euyj;S+WTEVx%`ReZ5U5vC}{L@`d&Nr#Z>vT zabusy{jGnWYD!JCdJ0mXE<^tqk18&|k4$RX5Gx3+q5G%Ez>#J< zTqbB0VaLM1$Niplx{t!FXMGkFTWlw;u13*>X4gV?chg399i)doA7gqL_F_`9)i7wo zv(gv<;P&5tJhX77T%*(2=?oRF>q#3btp(}Q;Js(_0|``t=-bh>c7_r9uCAr}J>1DG z7ybvxUINS{fk{pWrq}3I8_dl&S5vz2h|iFwrze>fRYRDkduf%m0r?k*b&qP6OD& zo=DhixvQy7tH7HqpPvQ#*Yom?u2&hUn^dZ4CkG~jrh=L8#toqnCOqFPL_@ry9H|<=yjO^LY|?wp#2KKSG7@f$zCe0-SiY>VyprRUa15nfjcr@RT0AV5!eV}KO#eC{6w z+Pxq2UIRX#+2m43Np2H~fR!MsNdQT#-O7DmNu{@$ue8$859{hThi{>o2h>KBfBw8Y z@DhM?QPO=J}DRf-f ztJ-28yI$!}K(1?SVR~98cd-J!#-Cqy04^cdc&LqG??(Ge+5nO~KCJHf^r@d%3^#-E;yJts1VN*38i+wZz?Mf(R9Eqz zFg*@eXl-pxIOwBY-q!Z3y#d_N*E_{%t`Csxp&&=^v z@C6&|aZG&S0RV+!T4*MV_p6Z$Rd-NZE~1ysf!YQIPuWb88`B%oLI8C#zDx}CXV}Ql zr4N$GFSvV*YjZ`kG#PW0Y~k8`#}aLEdC}@ z-jsR0J0nb_xOWy8&y5wa$c1JXZkKc5D=rf6>U5zMlkAx1lbr;XFjV~@Wh*tcd55DY z5^(y-p>>H`0jM`i4?w+pD^eIp(3IenNc#O=NHA~x{%r%*p{sz;!WrUU>p5BXbhCk2 z%4B{E-HEQPBhj#5YU~Y8dv&`HM)aO!{)7!9b)R#p(%FVzFHjJ1zn1+5dQoKU{OdS3NN1M6VaSUG+xf&O9#vvTi7)r<=yIAxgcQoH=iz}*8DhG*N3Plut=~WSOkmA?+ zuodDCS&FzS41mUs=1|lV22HvR5Fw{O1K~|MbX1>N|2OWLV9md(Cit43e7=-J)9>#A zg}`9wqnJHMSTKEiu}Ix={z;3h9i3AJDxOcD5Dm(0`+1LK8`XzfnP<=vvk!@jv@o5(U1b0jDs&eX>wkvK3 zK;l=W4(jC|7g#6q>63{Wls%LYP+7UyYBWK3)tCaaL*k3^ z1S(1HoW}4li{=PWRPK7dTdGuM)Du^AvftQ2>6{){XwMD}ZRlY1beYQ>nrq==Wle~e z=^41x0f1P@|IQ1-bgz}n(5l7;kF!xDHjIw=YEQSCc2Y7lONW(i#VfhNJP?rg_Se)0 zUaU0x7Icr+F1`wMv}^?sgv!FY6r>!#vRBYRW^Ugsqe8EIrX z$dRd-B&fnyp2Z?{zFqfyT?dscPKD(z4G-QUEy@_<)r`>)4)?;>kx3Gxb_>yTS$i#d zi&!(9>cN+-8y7h<09*weop={FJ04CG0t6w=yPpo-sY2$tP+lW6iM~Fo&wAVx?$tna z3Se_RGMtH9K(f(jb>~UO(dq%Utj5x()1-+pwVaBcGB%u>$EEltTyiW`)8jAD8YUEd z)MAumys!$zZd`D(QI;)3P*0zh1v%?le5cGd(mIZZ6H8YphrW{A?J;dfiC~BrO}q(9 z1@3|c^Nw5!KiSDIw6Kovc|PWCK{QjN40u7mZ>IZa!s{j2V7ehFtEA)cgjA|K z7~ln))855~O^)<}FU*0N9Ejm4B06MzIVNWh+MA}QajT-SeX4A~xj%v+xcA574RAcQ;XdP@$rCX}dwbtQh>MwmB#^g1%B#7ugI74(I8t5uE9*2%$YN8cg;6}a z4n&9LW(rh=fw41LaP4VPy;9sP!!w#rTscHJ3UVviVM=g4mQ7k1b_FLg4bTVNHfNq; z8)6N_U^X1c5;Dl9nk)j6A=XCG5?q1bFH=NirfcNrmJ;xsNPnpVDJ?>Oqz4i#f;w3q zPgj?kICOsXZr_F2e8OUKX_G45xNj~Ihu`twkKsOR@NLus$*2F4Eyi)Z@uFk}^D5<* z;SiD!Ipr)~`CTy5QRGT}2e36M*=hUoh;QNQFBv1&*^MP3Ybu1~YHor8DsiN=eY$?- z9Yx`v4yaYY__in2ea12bx(o1 zvvlBY>AMSmpV!^11K#^{dH?aE_eR_$>tMX?Pi_L1zI>C5^^hu6&u@76L8R*6ZEg8K z9P8drzH&o@`FkQ0?<$BM1CRh>9$vj`A@#j2`1}tgT&&sDuNQj*GbMDP?1S_j_7%Bi zA2P)o5RBoi@WS*6Mr$|V_je8Pel(`Qstww?k{m^O4zG(maqLH_vRJjQ6DIRTY_2nd zvErG8o<$ZiBlfPOg~{JOsIS(8CaZz^8N7%adKia&GffNqftEB2t*HQ6l-e7%jZw%s zHev_lZ5tj<;D|u84FS)3jl&|_4-0NaYr{^xmG<}pAmg_-2%91b%3P10@vP|0f|n=E zbRI^F{myWA=`JIB5KR-YZ5G?RJDuNm;Yq1wheus8{OqpvLsT-|4DkBX5~-zyz6tSO zDT*$vi*snzbo||#`xpRmJv{i#f?U3XT`5z&3=?NWfPbX9UfeJ$W-N-^9hEB`0-BSf zhZR9u8%Nv-9YXGx;tS6l!FdTeC1nHhw`u$DN%I{<>un<4-ZikkYWD1<<_%$wajSbL zoy|xWVW`{P(fmUE3*|Gr!=5edgBT*=GAg8WfYmfwlqc_G?Y}%nl2^iihAZqqEdz8kbq)-_fmGIiP_RM(hXjjk|=1id>J?mt~1 z0uF0Sj!yLT0I#=a|5*L_s8nLNrWLGongcetNOgVz|4=?Z~C zP`hdq@OcCXMS}}$MA0w-T=+hf3=|s;B)?g*>{eMyojwg-8x#3rLm~K{UdmaGFbfc1{p#ovJQ(}7X2>ywhIQ*QFq>%; zDZ-XzUVlI=p+7e^!5KXz?B8M)2~@$AEF1q^3tL|tz0glVW^}T+_Nl%@s=-9#|Halh zMQ0MI%{sPiJDJ$FlZkEH))(8hCr&1|ZQHi(oZ07`f35#w-}Ob`_Uc-1RXtT0@&Tua7IdH^&}z{NP%1c-8q=JY`i%U*rfgKRlEDeoFap40{_`FPr*e%yGj~S^z=11 zJ~)2b?z{<=70_xQd^GssXyT>7`DgLcER=Hb1aRKhxTP^Y%GDQ`n$9Me%OSGdo8oV* ze9#vyt?vQ$S-?rkNTkYA9b{s}WO3 z6HT6+-LtOP$Ihj}&knu{l@N6LG!&Y7856!lKB^D836SNHELiW2qU}1I05-?^& z&Jk4R;Lk+PhZ64(t@YJ^SiZ_QX;E6@NkKyqeAefroEIi(hRu z*8TUjmxp^`)UHNZRRhS7ISn5Z4G@IX_d2yG90EL8;4w<(ih_Jn8{2HMmLSUnt2W)+ zumh`1pLC4}N?Y|T{&J$W%w^=xpOg9A{?rdF&R?td*r04(P%_NB{|;K-U4EXVM*_F> zmyjPix5KEsvg8GmW8E_=d0G7QBzz8h)MbiTqM>y?ompkHqe^Qz69YjlL3depyRO<4(k9#cBjLh17q*OmW zDF8Iz1W^QysC(3at3G8Rs@z2q=%(~3S*)TES zICfm!y&DJl^?Tt7gIBc~`=&!9Sf$kYcX|*dMhS2V+bcyb2-;K}a(%E1A)81lqg=6@ z5Pfp^*49EeY->ero*4kk>7&lPKU!WrcI&hRsHfWDht^e?nuAaR3ec|pd;h3dIj{Mz zv?mSTzh#3w&Ccu$ozl&dBZmPE_@|7@y?mu>ET!QDiV}QqL+=`Empt%-K;2{TyIHCe zeRedP6Xk%gj~@2rgwjH?WbNEpW$ff|nr9I8%At9+9>*_n|Jy$GaH_J$c{L#RXL~!G zTd@2;ZoN$cD_nn=-2tABiy{(w7VkS#L zjLrzir#h)3FzBUIYo<{cphncqzgu?(w$3lI9QUBNq83PVwpR+Z*j7t0O|f2yEXH)} z3Lp1vIG(iH`i8WEt?Vo?XB*?)VZq|Q#43Km|MD&xI7J?&a|0S8l@u;}g?svA@>usQL!th(=`&+=vP2#RioT?fn0wYeGaT`}7M2IAk%lwtO&iF&qan70E zsbIX95>U-ey%u6Sked75IU za=E(VIRoCX?s?G6nl4M<=5VG}uHSpl(%x$32UFxF8;#e~3qmc` zlmPwB>`S?_XhiRAV)L0~lhU@A(uGTY9e5q&~{X9vFS zbO)c^PcO)p{(Om#vb$XMLj&ME;+WT4XwBGqvSnY2{1E47g*Yd3zSB>7GfTuvX|Z(L zRI;^mp|C}GVH2b14+~om6;Y9G!Qf`d{f%V295h8&*Uw&$fWA|jkP_HGwaWBg?sQBX zoc~{~4r$2zC*j|HqW($+%tWhr^O!85+-MO+qWL&m45?LU%U*w)=*0eU!y}?pUu;@G z%`Nu3aCFZhcLxr;+O5*!=^)AC&e!qbuwzBDJCamMOtrIpt){|4RTMo!>D5~8Ch#TM zY)_v;Yh21yN*r1i!Hw@f4q@`=TK~ zT=vssKwL+#7wf@{O_oE`I#(_(&JS6j1Vrcbta)VOH?Jrf)6?QIlUHB@aP5ZxdF!RJH}9F(^1`-Z&KE z-r<>Fy#1b&%5J2t%TDHAnW7tdv%3H)bS=Vqdm80nH(m!3CtEc~{8!TYF3ciV>UIOJ zJ${5@i=MJ$e)|{p|2R)LYilVGulU)=OFNi{O^by*xV?5+_(`e7#YaUmnibN-E0KpZ zpK}s-o(!caQi%*SQHc{|}c@obFDIN9SN4<%PV)Ay*Dp(2-nN!2a`e$~XpLDNo!BO=83PUkrYf)$HI zjFNyh5~Un8fZidxa$-*cjU520Qbc*5ebKx8jqEXIdbcrHWkTr*!vq?6mB66r&iAA6s*!JI|=5pI~J8nJ|*bK^xWFbp$PDOJvzqA2xMFn z9wC033rzLdcM+AD65zLH%Ug5R(@lwe=t)j*-7KGT`c+SuVPrd@P1%{`-S``8gee~2 z4R2Kf6a;=jPt#a7pmc9p1Mj;(k#Hem0q_OSZluM0+jUO4EdOG|emN^^UH0*Z>x)gW zS7#CIjUxuO*6tz%__HNRIJ++tn#lt#+Un6e9DHB!0=7+GTyVZbFHX#$<54tw4{tK3|zCyVieQv({T9RE(ztpoRsd6hKE z;ZL*T;jcUDJIl~Y-&=H|HQuLIVrsyqw?BZx>Ex1fi(}&c?PDona+!S7sFfc%0Ovhx zL(#G>(F8Y4oSfq7rzh&y__kWpsw`s^`Pg&IW6&##VPZlhI)=N7B8^7D`$M7WXa+|L zm&EF72np6*%K~`B*Ya?$mrH1FAVe~A78we$r=K}&E+kmCpz~j>r=NY&Q{uZvucMfDmD~DP+iV^gZVI7>`Me|ju@GU;+j3!np#T4xU zc(D}S1hVPeoGkR8gv6g=5Pq3BM$k7)Jj0Ek;S< zsQby?J4r*kC)44x-E|}G9+qU3 za#5akxFw4dE*Q3hm}b@zEC(I}QgmdpyS*=Fs0n3w_^f25puoT6212eQ)T~(SVfFFjhwm`%)#fgZR!zk`8#=-a#`L&;`7DpYWX1pMx-@g3zOFWTEsK>;Eu6@;j z!~pY5$@;Kt8utxp5;N3Gt4c6`XZF!#;ioPqEg8rS21>s(UcRb{q*C=kc&sJ3jlVi; z-s%L5i@?Qg@^d{Gkn*i32QVoReSwq`3+V{i+dM<^e~^9XF13^rRgQGt)OA**(;XhH zvPx$Y0U-lvFB@Ro326Q3J}}3OI{Q}Q56}ZsNdVw6o5R(#J7O?YEaw06vt(xfA71Dd z&Y082=+pJz-GmB_9KE`Ktf=}N4=be%GPY%E7A}8-BvCjJIGkv4K;Da2UrCARhBN|y z+3duH-^VhV?v=XB(*SMzYj@8-PE;I?CX=*NX2a5!UCM&$e+cW7&6WDgJx(=t-<~fg zdvJJ2w8N4$Xf2RXzrimxPJLH$e*-?@2{iQR&;u$#4Cc^WJM3qUk5g&eueAZ9vTl%U4x7xwQi&ByzfMG%p4jLv*J~C5wm;wBL8R1UC0L2kqjdfRMm{toN4>{k zh4eG7bJinfbxgLt2n{u-i0uy`oM7&V+xIE%;V{Wk6uI`30f-p2JZ> zZe$JT`Sv@a>_Gk8mp{GPN_K)MT_wQ&Vs^~- zzZz~%<-;_z@{zn3G(fi{rVB!CclKK6V{7;d!%jASx@ZcC zmZP0caKdh1MX{v%Al~O+`VnZANBGY00 zQTQFM$(8zz1&9Vun<+U2-lx<}cg743cJC;d`q0DSN8gAXfY)3tCoI%VC(k}?^WcVk zU?n|c4$#dDg|+TO{`P<|I%x2CDoZ9&DrX|j?tR_SZKp4o(IX$JMDW@OfHVGNE_+Ls z?3q{>)YZh1>_5%N$r|<`n8$ia!0e{C-&13?CkJ6X0qCbU+qEI_!>vZ;ln*ebx95X? z7d=E)X9?Nbi9jH1jSL0Ux6HvF_b83KcEO{H#XNgF_RKWbW4Ba|6d{~dZ2aBaH4jJX zsaoU3F$m6&^c*L$WTk&%hF+pods05a$%mNJX~(PZH_1VA0}dKA(OxwohW11hPhk+` zeD%6Y2e2cwpKcW0{cEGgYS0weMmEyQ@IlKf@%OI5P$G_D*$a5y5pxl|N$$p{8(um= z+w^$<+))&%9eD_ybRVq&O(7U5ukqRpjadrMtI#*d@8N?-^%h8ILP!Q329o;D6YP4j z0nHk-1>^c^Ehx+{hI+V)h=$?VrgB}+Mr-C40<4laki=w!7KXr+vHH=kovq}S zW}HYtLMp(CXN76aE$C#V66??x!#zhel9?FT`mvh14z_t%|Eyf6A_O-4a=m-k4Ko@s zJ?GcBSiR{(RlpQZ^&8izD$P+9$Uqt% z=1Oa}mSAYB!^KG>q;%J(bO)`yHVkuM_djXhx<<^o)=7gk3=xqBAhXj#h=apW14eSi z40yca&TY10<=}^HJ*=vudNI&~2+D3L6=znjDKp?NTaR>55I0WE@DXONKO>+qdiL+R zYBE`vdqja0b&p6i#^zy>K@5m?u5WFz6{BzYS?pP^Nw^2 zMu=|BM)TQPBK)1%ygg;n$suAD3R&GB$#-Q%KD*Y?Rf~xlD2%d~GpzP~06ZotT>7E@ zh65k=k^bl2LsyJT-3jk0PQxWv`GY3&Cf^1aKYHE}Ge5&%CNoLHCoG{9u^z(9w}aH& z^$9W)e$;t?4c^4e1z znt+7Se2QORI$1XVgEvqT0DAB3Wf$|!InjM+_NT-~6N*g=3jG{+b6>jYgW&SI)+G_! zVkzsEbLDZ*y`SjXjEr?S+W=*QukKOEUOZz zY0fpOdhJWDa9PG24LkXW`9s|NkRc(T-|{lm=HgIKf>bNgiv+6-pfKZ67-+_;zLQ0J zA4MJc^P`;He$2(_dCpZk$M9lYKxXx+_+ejKrz0aCroOG1)K*76{bNg-6lzUUfUrqtX%*_e=w*G1{w}Y7lc1>FJGPE4km?rBr~Ia$owtJO6I|Y z<}5Nqi1SYLLlcG=K{VJGc23e;%|6#g<{g&Mh{KA>CBMTTv2~#h-*&Gr6OoAcr|kBb zDyop`EmzP`Q;IH3U6ORFvo5)!X-cxV0C6rX(tdYAe6^zhO8XIJ(+k3`wAMUyhv1&} z^&ey?`+(YIx25eb$iUuW!h_*%tUs`BK*!X;1jd(#!SmQW_C*33jAheFe*$!-A?+DV z&g;AmRx}>P7WNqOM#(nH))5VM$hM2YZSbXYJ^KuXN%6MQ-M<=ePGM&&g?B!sqTGe zNuVDuy%!@mUkA#HlBfc!v#u!09bjrL4tUlwJ5a?IOAPm0+=h?fzzBa}+}|kqRly;dI)fdGFZL0NpZtS~j%uV|O-&+7zg*;=H^7^i7_CrDb@uYB%fyG* zM2<>~bz(1&xX+p6aiabFvEw==uWy*8RTxhG1am9ZR$T@6OT@`hfL-h30Wc-L<2Ljp z)FJZINs=ElAk{K<<)k3S8K^khkyhE%>+!bz^Ua*?SLhPRocN^NQPRnGN?#3%08yw( zccT7Y!inD=5if;}E{4}o7msDgup;F-dmo4h;PS6=fh zo}<})`5eQZ#-(R>eqgJ62B@&!s(ddYRC=d$psNGZufpXpuG}$_rR`DK^RpZI&OC6$ zi?0(@F$+gtk||aehIHOs{Z-AVx4xZpEtR@zHN`0=JHKiqM*{&i{yNHvRk}Q(C>}(U zMbs+X)<1oQJktixeH=u8<^*FXj!~p2uxzTT#>0tf{9P8!z+r&81!%l3Z-U|7WP3Vm zmTSW-K#@v-e0!9$vQI3?4wj^@uyvwlR1`SWNLIBXw%Vt-3{|rZZF^xrdN@HxXGbwQ z`&wJwb-DIj3vE!Ro(#r-L`Pggk}Y{PjBM&+baLW^nc$RG zKFMor?4A)+FKK6u3^4p{VTI@;fwiZpw?Jmqcx{%cIjB5p;X|8kee79bwyaTFhGjjPKrsnBWR2J3#O3+VZvTE*^-Izp3)fK?0OC}1~l++uA=+_*uUr3{D>AskC= zF=gVDHOe6K7!a@AuB`m#9`aExKVrSrYE4=@f#JUj5@0A$#@=MTc?FF0=_b~+aBayj zt0p4No0<{=*V=L_{PEr^X;Y&9ZR%UmEOroPb8cm=Ti7%!nf4d{wQU?YI04S868hiU z%DmD*d$PtBXHJb+WB7BwsV-{~CFUSIb`aJKq5y586|uI{BGB-8sSXuOf( z8gkCiNVO^<7`xojSSb0>>72k`DPyBMhLyayl)XJuF2DbMtoSH$^$=oC7MT2XCJeq> zTNe~(01-Tq(m&JCBg*}9PS{2&u_3e~_s@c!x;@UAkh)jVJeoQ9R#aljVp!|}Spuh9 zD8bR^v^!#}UPk&=RIE~_`nHeuKz*`BE9$@;XXmN@S|;3a6bt5M!Q%?)8oMHA1ZXVD z0e?l30>Hq^axCLB+Vc#qPT_kgMT>JoFU&UHGpc7;OHK_@ar&xF8dUNeQE7r6 z6U~icRU%jbv6Cr;@AJR(3U|TlOu@;>T@^>t;AKj{M1z7R+42?fEx``nl+xmrgdpXt z6o(5WlZ#9(mAG#y@x+(pa75!(KKYej0JmJ#!7MqtW?eqK)YXUjE{byTHn8xxQkea{$0>z8080lq zy-lHLM{|QGWy%+)IEd>~>YxTGC%#i;VMuc&j{KQ0D@7hGw(XFuaqG{y0@7o^g1yeJ zdQ+s0=^R)y)1ihgM9RSF%{CNSaN7Lgrc7emIxEMo@{ovRE)eigq;(-b&>Mqii+fK{ zmCDo*q}g?689sH3%O~wTx#w4QfI!EV8rnKNYp@0#J8Ohzt9cC>t0NDv4?__4HE9+o z$S0ph2}HDpE|!?cV#JG_vjgZj*v)I=VNiBa81uL~xIyK4MhI~Tt%oye1VpHY(7Msv z^2R)%^=0=Bja*OU>H60FYwH<3*5a%u%C6=T+ zL)`1({F1mr;0Z@>m%tRA3AGiTDBIzAdoddP1u;aH(Uzpn+OMTSI7f%xP+a>qa7~r3 z_jdaKZhU^fF*9&idip|&08wTAEG`K-*rz1GcWDxYzO5mgd;=KN7MO=(1e0`9csi70 zm$kdW&$z*d0<(1u-LhG6@LkEe5qk9~cxh9KjBvs!x{~k`F%V8xpTk;E^uu|-9QNA* z@{qm_t|s0d%s%aXW25wY3-GOutx$C&N50d08jV+2{5J{u`LBBefG|i_!jK_y{Leq_ z5-fzl*hoJI%`1ee&zuir3sjil2wXR3JePeeX3FN5Bs~pYBR=fnqebuFC%2dyr9k%O z?yf&Cvg$K-P}IRwO}lb-J-M;&+B}tAcJc0FlaQwvZLV`@=L-vC zOy-=#;J&_KW~`N1BzxOX2!$Te?@xFY!9neZ$3(D79IRv$?$6bbYmtQ_L^2cK<;rA9$`>u3o0+Hlx>9Rm#|N!IQ$Tf+7-MIsOYDwa)Bm8GXhB6S)7vYsRVq! zXQAm&3+4pTa{2nLaJjO#^RT6;JM9sy8R-(ZETy`tUgBpsgFiSO!bI@3=W_|k4zoX^ zAQ5E1)a56sPw)5*<9TyXCS-|xjt16V2$Cq$JFe2fQGgf0NIcCci)k4{;ZB1trInvy z6=Hw{AdoOKaf%qtHA{J+1SWP%KwU;=4^6*-iUL!bbUFUU4A?(q$@y&< ztm?pZkY4@lS+d&F^maH-2RV~@HOcnlRQlBQfNq>*nXY7J@JL zmkq)j8_S)EkR+L?*^qFZoznK)+J`lo}mXR7sk^Xp}66hU`x#6f=Nd7l5Y zzmjTrGmYqi^A$taw-wB0p|rQz2m;?(D0A5K^8z4q&oQHVWlxd!UB6sp@KkrA_320n}EgOAY&6$*rz zF%Mw71VySbPkAV&5}sL<^XjRM2+7z_3KM1c1C#W8Bl#K(B^%2f4+y?Q)5u8ydx|(2 zh%d%SaB`*%Tf(#F=^Gh?h z^F^lQNX_gz4|Fzk$%$usZ5f+5U@6a;n<2^#7ZQ-YJY}SWj%ezEC>Z7wt9w7}dq0fS zd|5PirTDkqNxn@WYHeo*{D$_81(syf1KxAdI`RC{F^}N*fz)(K)24Q53a?hIoeVIO z3|xK>XeK+EA%An0`qoMO0i+(1_DtMQVjkq#uzorE{6#(yq0c{u_S(v!&Iyftm7Am$ zpE~CD=g)v1T|{|bQ8v`wSG1mu=tbq4v>Powb9IWOg?Gx*0rgcDX?|NJXRu0d(?`Z6 zu%+X59sHv8Hdo!ed^!cGTg`LH+Wf}`v_@WZuG(^(r346B>SqX9C|&nFGY^0az7Zgjtr1E8OqFd&R{{j5gX(F@0oeDPI{JOMSk z$^pyodTyarr$A(~kN1b&e7~7F&Wd?ky>kfB>QT_x_J-Smrt&m&Mvu--QMoLgnjvnZ zUn}MyaO?t}eJ$PZqoE?mOaQV}@edAWf<6g?zoK=cw|$@b9jzj*tV39;*yVg323Fy* z@Y8ELnnH%VYfl2Sx89ffnk{8I_9icYE3CK|rmE@)b4^kPkzaM?Sg~?PM@76lL7I(Y=%CbG7IkYUs9>1k@mYWgY=?oe`b^z=dU8Co5ro01geAVo}ZI0 z-yP27zfOYE+G5}fzyK`#YeIcbp$>BWp3JP(pjqzD;g?Yk$n7m7GrDPgWSWn> zLf~WRH(Y3(JjzZ@y)Q^w>h7ukN5tUxAG`HG8;$TBTrdo>rgr8o7DUWUX~5uMG=M2B z8GBp_l%Nhv*AW}gakq+R*5TuXzm_1NZmVjD4=7h3d+}DvC^#OuR(o95U zv?C&?7YD0~${w$mXfoG6DQWu1m^H;3d1kH%thERu$=AwfXD4bh9n3W9{r1*G!6aRH z-o&aJm|VI;BPwuIM`bY2`XRBVf)7)hRnY z8w7ef+O^kThMj)Z0jL0_5ow8HmCz7VT2O{FCfUEUTo9Uv-AuYyqwZ?{Y|M|*bPZ;c z8nw2*oZ3iOkg^ikHj-&r9Mc)UTx!Nc1)jkM7}d4?5VSp;7(rp#%GxOaz6@DCjcOIO zkDPs4kSl`*O*}qvR?<+A8X!^x1Ew4hTc zN3tuc@Gm9?fsb7qf}-}j51lDz&kdP3@+cB5oumey7d%tU@C4>knq5T6@sBW2$kLL6 zO`;BYY668*iX3Te?D`c>)FN0CJ4REyoM3bwV?cGN#pyl`M7{1V0{|i-9`05|MY4)9 z4@>FKT!VSh-Nnxrzw3d$dBd9#tDo!3L}ADGx7Tyt-0R!t@z&$9od568mIFX+4{nbK zYDd)E>&V$se;2U%Z!@6&Zb6dO@R93D1fO}BcKfXcbGy&+m>(tppZh`DwS9|w&*uK# z#oHt$;m>vVn_2J=A%Grsa}bp6)%tl#rRxe){Aj>aEJC$2gV88r#>f!3uy5WtP!i>3 zLinP-6Kr}-?PD$m@cuG${H@7yOTp3M{qudL#tnwD04qG@e{ICC?J}V+s0_DomD}1I zY#2EKs}T=&bpv&+0D#=aPc_-)={4G^H)+#rrlOWG+Zx`UbOWmzIRf3)|jae8K7*rTXhV zi_Si732)O#&RHkW94OmBG}=Gb;}mw^XnYLwyK29t22=TG%Y^+u8}QaJ0UR!A2#dNn zr}QN-gxuxl03=_L)kRWzq*#&Pp^L-;gvERPxH$B8QLLSzG6i3+)xZti2cU{LHUJ)J z>)vPv=6NqoCP65=GsE~LxzYQ%_>=)zJ3$FGVj`1kN)eN(QMxb-1E5_&P|&Ta@&gT^ zi;}6OBHNmILm-4xBzvxRl8qdSR5_ppK%HURIrRYZxfGcK5%Cf!jtpi_ z^(Gyo=oUe${^Sit%Sw`VuxT4%s`Yna?R~9>cd@)n`K4>lsnU_e>7Z9EUy37j!OGx>h|c;1Ni!t#|}^OhwZIdVxO+_=!ld%a&`4XNGnB3lG$ZE;@o9qtH&`s zq0y6TB%nEHPI2@+rL_~N^P4b=ixosAtIiXsK4OAp9X1HCC#x^ZVF zmU@;8NT(hm8W`+uyK^yU>mEv=z%|?4c+~r807`ObxlnvG!_9eB*`L;|$C&cmT9zh| zA%te9Tl6|Q>F3l}MHBDzHO&qa>0?64eI(#(Ig73`mlN+?VJ_!^ZWlv@==c33SZ5W& z=Ye}{%o0%D^icXV!vJqf5GP8S249y*HkPz57aeG^3%|88wY(Q)$9p%WrZ{@DP}E!M ze~AmjGR@y|LDN@Y)H)oQY&;e7j^D8eYEAFPo9y4ie z>G9yNGttlAx1$HlQdltAHA*aiDg(OpV_NheVbn|8G>^DQb;8k*-gI?GomUy- zSI{Ml__GEvqWdu?T;S3`>vY8gpYV0R@7JBNr^{fHf{^L(SlR@bk85(kG(rNqs#vK? zN)u7|<>&`6Ih0sByHWffQtC6tXuFc0TqF`rb{^UYX2awh6uy6)PVBy>UHMLCQt=2C zXI?B4?k?|ci z{glP1J>!S$g&kSf-RO00ce_WlKr&c!J=Lxlh_wHbd*#CsTQea9kY5!QMbpJk6m<=6 zEw3T8?-_4wPGLTI?MA)NG`88AKc`GM+1OfGU71>4Sy{Q1&;7}*X{x*m>G55kkGV>M ztOQOqK1jpup^I}|%@Xw~{*5oL6e7YWw<|N4YY^qTE2Dd)n8$qkMDi41pC)N;oqq)z z^#s8k_O~K{{caf-aEg~(A0XZ&{cLNrBUDrYubDU4Jv2R`zWhtaXYn<8xeKkVb@#1A6!^Gg zzw-08SFL0$ES^vZv&vatVdK59bhMl#@96~Cg)9<$f43Tg>i%>A2gojQTrDNS_^fTd zo3C-axE_rNkk{C0vB`B*w2)U7)W+f6G%Px(6=KT3SO>pd)!fMDn;L5o5m#_J_>_+n z3lj-hl66fvqK3mFQzHp;v5S&WXp(82fXzx$#BAGSo|BI1hEJrt`7>>0PRqZUo~Z*W zkG~7nGHq{4tIyo8nzw7d8Xp^PNoYaAEp*6Ycpx^qtHRX1W|O@wtK1~am%1Av_2{5e z!%smV;Gp$h8`^0zbPvo9AQ5}3YR<#zUvNWcul3#>@voQd?XVkZ7rc&;nCA5RkcP*i z`3(YsGRFp2kxZo~@{&@~Y0wbBGFbqe0*SI-G$^mN)PyyLhWYO+1zR4QS7*I;pPFtT zd>#KR#rm_LjsW6>N^;=57}9+S>}LZUa4GxT)I;Y&PB)nidv6)}T zUmXpGp(wYm+aUcNUAk=^7^vh}BD4HjAKV7PHmxP!Et?4>zD!7-i>kxFr401st|uBw zft=7NzWFM$qdxf*Wk`YR1DN3zE^e4%PN_4jC}JcX6PCbWduNF|O;gu~0x_nZ6ChI6 z2U)Jq%}|?(g+^Z50z$3qc^`n4w$A}{BZqG1#5?9$d5@lQnupmmjx2`+daksroHM10<~svly?)aqmyEF{@;IDx@aO`PEJYJ0PMO;%hS{K{nAKk ze-6JN;-jRH=Tq@L?ly1lYR>x4q3T{kKIS{p^E8Vx9Nt{SLKZsmw2T3np8`idCdw?` zpX8PF!v?ZR^y?*Ipr2NDa@Nf$Vt+IwQrJARGS

ew+5XyU#Gqk(@>xJY=);; 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

Iru^6ZuI@s$x|(dWHhN1x z*6$QZz5Sc_AjlkwXXROn=EFaziXtfooC33ygp3$vTILU7rOd5Q&hrNT8B82guh)c9 zukgHEbOU&W$H`CnC`@-w`q>`msu0q}0jKcJ`5UJqr#D6kjz5n_o$c2gACF4wFWQmT z(TaYMebN6P=5HxwEv2pV=NgidCTYt)$|pIsCWnenabled = homogeneous; } - // Colvar is deemed periodic iff: + + // Colvar is deemed periodic if: // - it is homogeneous // - all cvcs are periodic // - all cvcs have the same period - - b_periodic = cvcs[0]->b_periodic && is_enabled(f_cv_homogeneous); - period = cvcs[0]->period; - for (i = 1; i < cvcs.size(); i++) { - if (!cvcs[i]->b_periodic || cvcs[i]->period != period) { - b_periodic = false; - period = 0.0; + if (cvcs[0]->b_periodic) { // TODO make this a CVC feature + bool b_periodic = true; + period = cvcs[0]->period; + for (i = 1; i < cvcs.size(); i++) { + if (!cvcs[i]->b_periodic || cvcs[i]->period != period) { + b_periodic = false; + period = 0.0; + cvm::log("Warning: although one component is periodic, this colvar will " + "not be treated as periodic, either because the exponent is not " + "1, or because components of different periodicity are defined. " + "Make sure that you know what you are doing!"); + } } + feature_states[f_cv_periodic]->enabled = b_periodic; } - feature_states[f_cv_periodic]->enabled = b_periodic; // check that cvcs are compatible for (i = 0; i < cvcs.size(); i++) { - if ((cvcs[i])->b_periodic && !b_periodic) { - cvm::log("Warning: although this component is periodic, the colvar will " - "not be treated as periodic, either because the exponent is not " - "1, or because multiple components are present. Make sure that " - "you know what you are doing!"); - } // components may have different types only for scripted functions if (!is_enabled(f_cv_scripted) && (colvarvalue::check_types(cvcs[i]->value(), - cvcs[0]->value())) ) { + cvcs[0]->value())) ) { cvm::error("ERROR: you are definining this collective variable " "by using components of different types. " "You must use the same type in order to " - " sum them together.\n", INPUT_ERROR); + "sum them together.\n", INPUT_ERROR); return; } } @@ -207,16 +214,15 @@ colvar::colvar(std::string const &conf) // at this point, the colvar's type is defined f.type(value()); f_accumulated.type(value()); - fb.type(value()); + + reset_bias_force(); get_keyval(conf, "width", width, 1.0); if (width <= 0.0) { cvm::error("Error: \"width\" must be positive.\n", INPUT_ERROR); + return; } - // NOTE: not porting wall stuff to new deps, as this will change to a separate bias - // the grid functions will wait a little as well - lower_boundary.type(value()); lower_wall.type(value()); @@ -400,6 +406,9 @@ colvar::colvar(std::string const &conf) f_old.type(value()); f_old.reset(); + x_restart.type(value()); + after_restart = false; + if (cvm::b_analysis) parse_analysis(conf); @@ -761,9 +770,13 @@ int colvar::calc_cvcs(int first_cvc, size_t num_cvcs) return error_code; } + if (cvm::step_relative() > 0) { + // Total force depends on Jacobian derivative from previous timestep + error_code |= calc_cvc_total_force(first_cvc, num_cvcs); + } + // atom coordinates are updated by the next line error_code |= calc_cvc_values(first_cvc, num_cvcs); error_code |= calc_cvc_gradients(first_cvc, num_cvcs); - error_code |= calc_cvc_total_force(first_cvc, num_cvcs); error_code |= calc_cvc_Jacobians(first_cvc, num_cvcs); if (cvm::debug()) @@ -780,9 +793,12 @@ int colvar::collect_cvc_data() int error_code = COLVARS_OK; + if (cvm::step_relative() > 0) { + // Total force depends on Jacobian derivative from previous timestep + error_code |= collect_cvc_total_forces(); + } error_code |= collect_cvc_values(); error_code |= collect_cvc_gradients(); - error_code |= collect_cvc_total_forces(); error_code |= collect_cvc_Jacobians(); error_code |= calc_colvar_properties(); @@ -872,6 +888,22 @@ int colvar::collect_cvc_values() cvm::log("Colvar \""+this->name+"\" has value "+ cvm::to_str(x, cvm::cv_width, cvm::cv_prec)+".\n"); + if (after_restart) { + after_restart = false; + if (cvm::proxy->simulation_running()) { + cvm::real const jump2 = dist2(x, x_restart) / (width*width); + if (jump2 > 0.25) { + cvm::error("Error: the calculated value of colvar \""+name+ + "\":\n"+cvm::to_str(x)+"\n differs greatly from the value " + "last read from the state file:\n"+cvm::to_str(x_restart)+ + "\nPossible causes are changes in configuration, " + "wrong state file, or how PBC wrapping is handled.\n", + INPUT_ERROR); + return INPUT_ERROR; + } + } + } + return COLVARS_OK; } @@ -979,22 +1011,17 @@ int colvar::calc_cvc_total_force(int first_cvc, size_t num_cvcs) if (cvm::debug()) cvm::log("Calculating total force of colvar \""+this->name+"\".\n"); - // if (!tasks[task_extended_lagrangian] && (cvm::step_relative() > 0)) { - // Disabled check to allow for explicit total force calculation - // even with extended Lagrangian + cvm::increase_depth(); - if (cvm::step_relative() > 0) { - cvm::increase_depth(); - // get from the cvcs the total forces from the PREVIOUS step - for (i = first_cvc, cvc_count = 0; - (i < cvcs.size()) && (cvc_count < cvc_max_count); - i++) { - if (!cvcs[i]->is_enabled()) continue; - cvc_count++; - (cvcs[i])->calc_force_invgrads(); - } - cvm::decrease_depth(); + for (i = first_cvc, cvc_count = 0; + (i < cvcs.size()) && (cvc_count < cvc_max_count); + i++) { + if (!cvcs[i]->is_enabled()) continue; + cvc_count++; + (cvcs[i])->calc_force_invgrads(); } + cvm::decrease_depth(); + if (cvm::debug()) cvm::log("Done calculating total force of colvar \""+this->name+"\".\n"); @@ -1013,6 +1040,11 @@ int colvar::collect_cvc_total_forces() // get from the cvcs the total forces from the PREVIOUS step for (size_t i = 0; i < cvcs.size(); i++) { if (!cvcs[i]->is_enabled()) continue; + if (cvm::debug()) + cvm::log("Colvar component no. "+cvm::to_str(i+1)+ + " within colvar \""+this->name+"\" has total force "+ + cvm::to_str((cvcs[i])->total_force(), + cvm::cv_width, cvm::cv_prec)+".\n"); // linear combination is assumed ft += (cvcs[i])->total_force() * (cvcs[i])->sup_coeff / active_cvc_square_norm; } @@ -1056,6 +1088,11 @@ int colvar::collect_cvc_Jacobians() fj.reset(); for (size_t i = 0; i < cvcs.size(); i++) { if (!cvcs[i]->is_enabled()) continue; + if (cvm::debug()) + cvm::log("Colvar component no. "+cvm::to_str(i+1)+ + " within colvar \""+this->name+"\" has Jacobian derivative"+ + cvm::to_str((cvcs[i])->Jacobian_derivative(), + cvm::cv_width, cvm::cv_prec)+".\n"); // linear combination is assumed fj += (cvcs[i])->Jacobian_derivative() * (cvcs[i])->sup_coeff / active_cvc_square_norm; } @@ -1128,15 +1165,16 @@ cvm::real colvar::update_forces_energy() if (is_enabled(f_cv_Jacobian)) { // the instantaneous Jacobian force was not included in the reported total force; // instead, it is subtracted from the applied force (silent Jacobian correction) + // This requires the Jacobian term for the *current* timestep if (is_enabled(f_cv_hide_Jacobian)) f -= fj; } - if (is_enabled(f_cv_lower_wall) || is_enabled(f_cv_upper_wall)) { + // Wall force + colvarvalue fw(x); + fw.reset(); - // Wall force - colvarvalue fw(x); - fw.reset(); + if (is_enabled(f_cv_lower_wall) || is_enabled(f_cv_upper_wall)) { if (cvm::debug()) cvm::log("Calculating wall forces for colvar \""+this->name+"\".\n"); @@ -1144,12 +1182,11 @@ cvm::real colvar::update_forces_energy() // For a periodic colvar, both walls may be applicable at the same time // in which case we pick the closer one if ( (!is_enabled(f_cv_upper_wall)) || - (this->dist2(x_reported, lower_wall) < this->dist2(x_reported, upper_wall)) ) { + (this->dist2(x, lower_wall) < this->dist2(x, upper_wall)) ) { - cvm::real const grad = this->dist2_lgrad(x_reported, lower_wall); + cvm::real const grad = this->dist2_lgrad(x, lower_wall); if (grad < 0.0) { fw = -0.5 * lower_wall_k * grad; - f += fw; if (cvm::debug()) cvm::log("Applying a lower wall force("+ cvm::to_str(fw)+") to \""+this->name+"\".\n"); @@ -1157,10 +1194,9 @@ cvm::real colvar::update_forces_energy() } else { - cvm::real const grad = this->dist2_lgrad(x_reported, upper_wall); + cvm::real const grad = this->dist2_lgrad(x, upper_wall); if (grad > 0.0) { fw = -0.5 * upper_wall_k * grad; - f += fw; if (cvm::debug()) cvm::log("Applying an upper wall force("+ cvm::to_str(fw)+") to \""+this->name+"\".\n"); @@ -1168,6 +1204,9 @@ cvm::real colvar::update_forces_energy() } } + // At this point f is the force f from external biases that will be applied to the + // extended variable if there is one + if (is_enabled(f_cv_extended_Lagrangian)) { cvm::real dt = cvm::dt(); @@ -1175,11 +1214,12 @@ cvm::real colvar::update_forces_energy() f_ext.reset(); // the total force is applied to the fictitious mass, while the - // atoms only feel the harmonic force + // atoms only feel the harmonic force + wall force // fr: bias force on extended variable (without harmonic spring), for output in trajectory // f_ext: total force on extended variable (including harmonic spring) - // f: - initially, external biasing force (including wall forces) - // - after this code block, colvar force to be applied to atomic coordinates, ie. spring force + // f: - initially, external biasing force + // - after this code block, colvar force to be applied to atomic coordinates + // ie. spring force + wall force fr = f; f_ext = f + (-0.5 * ext_force_k) * this->dist2_lgrad(xr, x); f = (-0.5 * ext_force_k) * this->dist2_rgrad(xr, x); @@ -1209,9 +1249,16 @@ cvm::real colvar::update_forces_energy() vr += (0.5 * dt) * f_ext / ext_mass; xr += dt * vr; xr.apply_constraints(); - if (this->b_periodic) this->wrap(xr); + if (this->is_enabled(f_cv_periodic)) this->wrap(xr); } + // TODO remove the wall force + f += fw; + // Now adding the force on the actual colvar (for those biases who + // bypass the extended Lagrangian mass) + f += fb_actual; + + // Store force to be applied, possibly summed over several timesteps f_accumulated += f; if (is_enabled(f_cv_fdiff_velocity)) { @@ -1428,14 +1475,15 @@ std::istream & colvar::read_restart(std::istream &is) } } - if ( !(get_keyval(conf, "x", x, - colvarvalue(x.type()), colvarparse::parse_silent)) ) { + if ( !(get_keyval(conf, "x", x, x, colvarparse::parse_silent)) ) { cvm::log("Error: restart file does not contain " "the value of the colvar \""+ name+"\" .\n"); } else { cvm::log("Restarting collective variable \""+name+"\" from value: "+ cvm::to_str(x)+"\n"); + x_restart = x; + after_restart = true; } if (is_enabled(f_cv_extended_Lagrangian)) { diff --git a/lib/colvars/colvar.h b/lib/colvars/colvar.h index d7b1e6076f..2cf3d2dac5 100644 --- a/lib/colvars/colvar.h +++ b/lib/colvars/colvar.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVAR_H #define COLVAR_H @@ -170,6 +177,9 @@ public: /// the biases are updated colvarvalue fb; + /// \brief Bias force to the actual value (only useful with extended Lagrangian) + colvarvalue fb_actual; + /// \brief Total \em applied force; fr (if extended_lagrangian /// is defined), fb (if biases are applied) and the walls' forces /// (if defined) contribute to it @@ -183,13 +193,9 @@ public: colvarvalue ft; - /// Period, if it is a constant + /// Period, if this variable is periodic cvm::real period; - /// \brief Same as above, but also takes into account components - /// with a variable period, such as distanceZ - bool b_periodic; - /// \brief Expand the boundaries of multiples of width, to keep the /// value always within range @@ -290,6 +296,9 @@ public: /// Add to the total force from biases void add_bias_force(colvarvalue const &force); + /// Apply a force to the actual value (only meaningful with extended Lagrangian) + void add_bias_force_actual_value(colvarvalue const &force); + /// \brief Collect all forces on this colvar, integrate internal /// equations of motion of internal degrees of freedom; see also /// colvar::communicate_forces() @@ -386,6 +395,12 @@ protected: /// Previous value (to calculate velocities during analysis) colvarvalue x_old; + /// Value read from the most recent state file (if any) + colvarvalue x_restart; + + /// True if a state file was just read + bool after_restart; + /// Time series of values and velocities used in correlation /// functions std::list< std::list > acf_x_history, acf_v_history; @@ -577,9 +592,20 @@ inline void colvar::add_bias_force(colvarvalue const &force) } +inline void colvar::add_bias_force_actual_value(colvarvalue const &force) +{ + if (cvm::debug()) { + cvm::log("Adding biasing force "+cvm::to_str(force)+" to colvar \""+name+"\".\n"); + } + fb_actual += force; +} + + inline void colvar::reset_bias_force() { fb.type(value()); fb.reset(); + fb_actual.type(value()); + fb_actual.reset(); } #endif diff --git a/lib/colvars/colvaratoms.cpp b/lib/colvars/colvaratoms.cpp index e8046a97d5..48c16e887a 100644 --- a/lib/colvars/colvaratoms.cpp +++ b/lib/colvars/colvaratoms.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvarparse.h" #include "colvaratoms.h" @@ -171,7 +178,10 @@ int cvm::atom_group::remove_atom(cvm::atom_iter ai) int cvm::atom_group::init() { - if (!key.size()) key = "atoms"; + if (!key.size()) key = "unnamed"; + description = "atom group " + key; + // These will be overwritten by parse(), if initializing from a config string + atoms.clear(); // TODO: check with proxy whether atom forces etc are available @@ -179,6 +189,7 @@ int cvm::atom_group::init() index = -1; + b_dummy = false; b_center = false; b_rotate = false; b_user_defined_fit = false; @@ -440,6 +451,7 @@ int cvm::atom_group::parse(std::string const &conf) if (b_print_atom_ids) { cvm::log("Internal definition of the atom group:\n"); + cvm::log(print_atom_ids()); } cvm::decrease_depth(); diff --git a/lib/colvars/colvaratoms.h b/lib/colvars/colvaratoms.h index a2a771a8a3..85f6212951 100644 --- a/lib/colvars/colvaratoms.h +++ b/lib/colvars/colvaratoms.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARATOMS_H #define COLVARATOMS_H @@ -64,7 +71,7 @@ public: /// \brief Initialize an atom for collective variable calculation /// and get its internal identifier \param atom_number Atom index in - /// the system topology (starting from 1) + /// the system topology (1-based) atom(int atom_number); /// \brief Initialize an atom for collective variable calculation @@ -453,6 +460,8 @@ public: /// are not used, either because they were not defined (e.g because /// the colvar has not a scalar value) or the biases require to /// micromanage the force. + /// This function will be phased out eventually, in favor of + /// apply_colvar_force() once that is implemented for non-scalar values void apply_force(cvm::rvector const &force); }; diff --git a/lib/colvars/colvarbias.cpp b/lib/colvars/colvarbias.cpp index 76d8489de9..fdd2b6254c 100644 --- a/lib/colvars/colvarbias.cpp +++ b/lib/colvars/colvarbias.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvarvalue.h" #include "colvarbias.h" @@ -29,6 +36,7 @@ colvarbias::colvarbias(char const *key) has_data = false; b_output_energy = false; reset(); + state_file_step = 0; // Start in active state by default enable(f_cvb_active); @@ -141,20 +149,25 @@ int colvarbias::clear() int colvarbias::add_colvar(std::string const &cv_name) { if (colvar *cv = cvm::colvar_by_name(cv_name)) { - // Removed this as nor all biases apply forces eg histogram - // cv->enable(colvar::task_gradients); + if (cvm::debug()) { cvm::log("Applying this bias to collective variable \""+ cv->name+"\".\n"); } + colvars.push_back(cv); colvar_forces.push_back(colvarvalue()); colvar_forces.back().type(cv->value()); // make sure each force is initialized to zero + colvar_forces.back().is_derivative(); // colvar constraints are not applied to the force colvar_forces.back().reset(); cv->biases.push_back(this); // add back-reference to this bias to colvar + if (is_enabled(f_cvb_apply_force)) { + cv->enable(f_cv_gradient); + } + // Add dependency link. // All biases need at least the value of each colvar // although possibly not at all timesteps @@ -165,6 +178,7 @@ int colvarbias::add_colvar(std::string const &cv_name) cv_name+"\".\n", INPUT_ERROR); return INPUT_ERROR; } + return COLVARS_OK; } @@ -190,16 +204,19 @@ void colvarbias::communicate_forces() } -void colvarbias::change_configuration(std::string const &conf) +int colvarbias::change_configuration(std::string const &conf) { - cvm::error("Error: change_configuration() not implemented.\n"); + cvm::error("Error: change_configuration() not implemented.\n", + COLVARS_NOT_IMPLEMENTED); + return COLVARS_NOT_IMPLEMENTED; } cvm::real colvarbias::energy_difference(std::string const &conf) { - cvm::error("Error: energy_difference() not implemented.\n"); - return 0.; + cvm::error("Error: energy_difference() not implemented.\n", + COLVARS_NOT_IMPLEMENTED); + return 0.0; } @@ -225,6 +242,118 @@ int colvarbias::replica_share() return COLVARS_NOT_IMPLEMENTED; } + +std::string const colvarbias::get_state_params() const +{ + std::ostringstream os; + os << "step " << cvm::step_absolute() << "\n" + << "name " << this->name << "\n"; + return os.str(); +} + + +int colvarbias::set_state_params(std::string const &conf) +{ + std::string new_name = ""; + if (colvarparse::get_keyval(conf, "name", new_name, + std::string(""), colvarparse::parse_silent) && + (new_name != this->name)) { + cvm::error("Error: in the state file, the " + "\""+bias_type+"\" block has a different name, \""+new_name+ + "\": different system?\n", INPUT_ERROR); + } + + if (name.size() == 0) { + cvm::error("Error: \""+bias_type+"\" block within the restart file " + "has no identifiers.\n", INPUT_ERROR); + } + + colvarparse::get_keyval(conf, "step", state_file_step, + cvm::step_absolute(), colvarparse::parse_silent); + + return COLVARS_OK; +} + + +std::ostream & colvarbias::write_state(std::ostream &os) +{ + if (cvm::debug()) { + cvm::log("Writing state file for bias \""+name+"\"\n"); + } + os.setf(std::ios::scientific, std::ios::floatfield); + os.precision(cvm::cv_prec); + os << bias_type << " {\n" + << " configuration {\n"; + std::istringstream is(get_state_params()); + std::string line; + while (std::getline(is, line)) { + os << " " << line << "\n"; + } + os << " }\n"; + write_state_data(os); + os << "}\n\n"; + return os; +} + + +std::istream & colvarbias::read_state(std::istream &is) +{ + size_t const start_pos = is.tellg(); + + std::string key, brace, conf; + if ( !(is >> key) || !(key == bias_type) || + !(is >> brace) || !(brace == "{") || + !(is >> colvarparse::read_block("configuration", conf)) || + (set_state_params(conf) != COLVARS_OK) ) { + cvm::error("Error: in reading state configuration for \""+bias_type+"\" bias \""+ + this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR); + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); + return is; + } + + if (!read_state_data(is)) { + cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+ + this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR); + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); + } + + is >> brace; + if (brace != "}") { + cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+ + this->name+"\": no matching brace at position "+ + cvm::to_str(is.tellg())+" in stream.\n"); + is.setstate(std::ios::failbit); + } + + return is; +} + + +std::istream & colvarbias::read_state_data_key(std::istream &is, char const *key) +{ + size_t const start_pos = is.tellg(); + std::string key_in; + if ( !(is >> key_in) || + !(key_in == to_lower_cppstr(std::string(key))) ) { + cvm::error("Error: in reading restart configuration for "+ + bias_type+" bias \""+this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR); + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); + return is; + } + return is; +} + + + std::ostream & colvarbias::write_traj_label(std::ostream &os) { os << " "; diff --git a/lib/colvars/colvarbias.h b/lib/colvars/colvarbias.h index 8238f58f40..12397dcb8f 100644 --- a/lib/colvars/colvarbias.h +++ b/lib/colvars/colvarbias.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARBIAS_H #define COLVARBIAS_H @@ -9,7 +16,8 @@ /// \brief Collective variable bias, base class -class colvarbias : public colvarparse, public colvardeps { +class colvarbias + : public virtual colvarparse, public virtual colvardeps { public: /// Name of this bias @@ -24,6 +32,12 @@ public: /// Add a new collective variable to this bias int add_colvar(std::string const &cv_name); + /// Add a new collective variable to this bias + size_t number_of_colvars() const + { + return colvars.size(); + } + /// Retrieve colvar values and calculate their biasing forces /// Return bias energy virtual int update(); @@ -31,7 +45,7 @@ public: // TODO: move update_bias here (share with metadynamics) /// Load new configuration - force constant and/or centers only - virtual void change_configuration(std::string const &conf); + virtual int change_configuration(std::string const &conf); /// Calculate change in energy from using alternate configuration virtual cvm::real energy_difference(std::string const &conf); @@ -49,7 +63,7 @@ public: virtual void analyze() {} /// Send forces to the collective variables - void communicate_forces(); + virtual void communicate_forces(); /// \brief Constructor colvarbias(char const *key); @@ -60,13 +74,11 @@ public: /// \brief Set to zero all mutable data virtual int reset(); -protected: +private: /// Default constructor colvarbias(); -private: - /// Copy constructor colvarbias(colvarbias &); @@ -78,28 +90,59 @@ public: /// Destructor virtual ~colvarbias(); - /// Read the bias configuration from a restart file - virtual std::istream & read_restart(std::istream &is) = 0; + /// Write the values of specific mutable properties to a string + virtual std::string const get_state_params() const; - /// Write the bias configuration to a restart file - virtual std::ostream & write_restart(std::ostream &os) = 0; + /// Read the values of specific mutable properties from a string + virtual int set_state_params(std::string const &state_conf); + + /// Write all mutable data not already written by get_state_params() + virtual std::ostream & write_state_data(std::ostream &os) + { + return os; + } + + /// Read all mutable data not already set by set_state_params() + virtual std::istream & read_state_data(std::istream &is) + { + return is; + } + + /// Read a keyword from the state data (typically a header) + std::istream & read_state_data_key(std::istream &is, char const *key); + + /// Write the bias configuration to a restart file or other stream + virtual std::ostream & write_state(std::ostream &os); + + /// Read the bias configuration from a restart file or other stream + virtual std::istream & read_state(std::istream &is); /// Write a label to the trajectory file (comment line) virtual std::ostream & write_traj_label(std::ostream &os); - /// (Re)initialize the output files (does not write them yet) - virtual int setup_output() { return COLVARS_OK; } - /// Output quantities such as the bias energy to the trajectory file virtual std::ostream & write_traj(std::ostream &os); - /// Write output files (if defined, e.g. in analysis mode) + /// (Re)initialize the output files (does not write them yet) + virtual int setup_output() + { + return COLVARS_OK; + } + + /// Write any output files that this bias may have (e.g. PMF files) virtual int write_output_files() { return COLVARS_OK; } - inline cvm::real get_energy() { + /// If this bias is communicating with other replicas through files, send it to them + virtual int write_state_to_replicas() + { + return COLVARS_OK; + } + + inline cvm::real get_energy() + { return bias_energy; } @@ -107,9 +150,11 @@ public: static std::vector cvb_features; /// \brief Implementation of the feature list accessor for colvarbias - virtual std::vector &features() { + virtual std::vector &features() + { return cvb_features; } + protected: /// \brief Pointers to collective variables to which the bias is @@ -130,6 +175,9 @@ protected: /// (for history-dependent biases) bool has_data; + /// \brief Step number read from the last state file + size_t state_file_step; + }; #endif diff --git a/lib/colvars/colvarbias_abf.cpp b/lib/colvars/colvarbias_abf.cpp index 1665ea61a9..ccfa401697 100644 --- a/lib/colvars/colvarbias_abf.cpp +++ b/lib/colvars/colvarbias_abf.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvar.h" #include "colvarbias_abf.h" @@ -23,6 +30,8 @@ int colvarbias_abf::init(std::string const &conf) { colvarbias::init(conf); + provide(f_cvb_scalar_variables); + enable(f_cvb_scalar_variables); provide(f_cvb_history_dependent); // TODO relax this in case of VMD plugin @@ -590,16 +599,10 @@ void colvarbias_abf::read_gradients_samples() } -std::ostream & colvarbias_abf::write_restart(std::ostream& os) +std::ostream & colvarbias_abf::write_state_data(std::ostream& os) { - std::ios::fmtflags flags(os.flags()); - os << "abf {\n" - << " configuration {\n" - << " name " << this->name << "\n"; - os << " }\n"; - os.setf(std::ios::fmtflags(0), std::ios::floatfield); // default floating-point format os << "\nsamples\n"; samples->write_raw(os, 8); @@ -617,117 +620,47 @@ std::ostream & colvarbias_abf::write_restart(std::ostream& os) z_gradients->write_raw(os, 8); } - os << "}\n\n"; - os.flags(flags); return os; } -std::istream & colvarbias_abf::read_restart(std::istream& is) +std::istream & colvarbias_abf::read_state_data(std::istream& is) { if ( input_prefix.size() > 0 ) { cvm::error("ERROR: cannot provide both inputPrefix and a colvars state file.\n", INPUT_ERROR); } - size_t const start_pos = is.tellg(); - - cvm::log("Restarting ABF bias \""+ - this->name+"\".\n"); - std::string key, brace, conf; - - if ( !(is >> key) || !(key == "abf") || - !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", conf)) ) { - cvm::log("Error: in reading restart configuration for ABF bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - - std::string name = ""; - if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && - (name != this->name) ) - cvm::error("Error: in the restart file, the " - "\"abf\" block has wrong name(" + name + ")\n"); - if ( name == "" ) { - cvm::error("Error: \"abf\" block in the restart file has no name.\n"); - } - - if ( !(is >> key) || !(key == "samples")) { - cvm::log("Error: in reading restart configuration for ABF bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); + if (! read_state_data_key(is, "samples")) { return is; } if (! samples->read_raw(is)) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); return is; } - if ( !(is >> key) || !(key == "gradient")) { - cvm::log("Error: in reading restart configuration for ABF bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); + if (! read_state_data_key(is, "gradient")) { return is; } if (! gradients->read_raw(is)) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); return is; } if (z_gradients) { - if ( !(is >> key) || !(key == "z_samples")) { - cvm::log("Error: in reading restart configuration for ABF bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); + + if (! read_state_data_key(is, "z_samples")) { return is; } if (! z_samples->read_raw(is)) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); return is; } - if ( !(is >> key) || !(key == "z_gradient")) { - cvm::log("Error: in reading restart configuration for ABF bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); + if (! read_state_data_key(is, "z_gradient")) { return is; } if (! z_gradients->read_raw(is)) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); return is; } } - is >> brace; - if (brace != "}") { - cvm::error("Error: corrupt restart information for ABF bias \""+ - this->name+"\": no matching brace at position "+ - cvm::to_str(is.tellg())+" in the restart file.\n"); - is.setstate(std::ios::failbit); - } + return is; } diff --git a/lib/colvars/colvarbias_abf.h b/lib/colvars/colvarbias_abf.h index ee76240968..41a5475fa7 100644 --- a/lib/colvars/colvarbias_abf.h +++ b/lib/colvars/colvarbias_abf.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARBIAS_ABF_H #define COLVARBIAS_ABF_H @@ -107,8 +114,8 @@ private: /// Read human-readable FE gradients and sample count (if not using restart) void read_gradients_samples(); - std::istream& read_restart(std::istream&); - std::ostream& write_restart(std::ostream&); + std::istream& read_state_data(std::istream&); + std::ostream& write_state_data(std::ostream&); }; #endif diff --git a/lib/colvars/colvarbias_alb.cpp b/lib/colvars/colvarbias_alb.cpp index 8c8956082e..9e414d4db4 100644 --- a/lib/colvars/colvarbias_alb.cpp +++ b/lib/colvars/colvarbias_alb.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include #include @@ -33,6 +40,9 @@ int colvarbias_alb::init(std::string const &conf) { colvarbias::init(conf); + provide(f_cvb_scalar_variables); + enable(f_cvb_scalar_variables); + provide(f_cvb_history_dependent); size_t i; @@ -239,37 +249,8 @@ int colvarbias_alb::update() } -std::istream & colvarbias_alb::read_restart(std::istream &is) +int colvarbias_alb::set_state_params(std::string const &conf) { - size_t const start_pos = is.tellg(); - - cvm::log("Restarting adaptive linear bias \""+ - this->name+"\".\n"); - - std::string key, brace, conf; - if ( !(is >> key) || !(key == "ALB") || - !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", conf)) ) { - - cvm::log("Error: in reading restart configuration for restraint bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - - std::string name = ""; - if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && - (name != this->name) ) - cvm::fatal_error("Error: in the restart file, the " - "\"ALB\" block has a wrong name\n"); - if (name.size() == 0) { - cvm::fatal_error("Error: \"ALB\" block in the restart file " - "has no identifiers.\n"); - } - if (!get_keyval(conf, "setCoupling", set_coupling)) cvm::fatal_error("Error: current setCoupling is missing from the restart.\n"); @@ -299,23 +280,13 @@ std::istream & colvarbias_alb::read_restart(std::istream &is) if (!get_keyval(conf, "b_equilibration", b_equilibration)) cvm::fatal_error("Error: current updateCalls is missing from the restart.\n"); - is >> brace; - if (brace != "}") { - cvm::fatal_error("Error: corrupt restart information for adaptive linear bias \""+ - this->name+"\": no matching brace at position "+ - cvm::to_str(is.tellg())+" in the restart file.\n"); - is.setstate(std::ios::failbit); - } - - return is; + return COLVARS_OK; } -std::ostream & colvarbias_alb::write_restart(std::ostream &os) +std::string const colvarbias_alb::get_state_params() const { - os << "ALB {\n" - << " configuration {\n" - << " name " << this->name << "\n"; + std::ostringstream os; os << " setCoupling "; size_t i; for (i = 0; i < colvars.size(); i++) { @@ -358,10 +329,7 @@ std::ostream & colvarbias_alb::write_restart(std::ostream &os) else os << " b_equilibration no\n"; - os << " }\n" - << "}\n\n"; - - return os; + return os.str(); } diff --git a/lib/colvars/colvarbias_alb.h b/lib/colvars/colvarbias_alb.h index a3c6133db2..d003c244e9 100644 --- a/lib/colvars/colvarbias_alb.h +++ b/lib/colvars/colvarbias_alb.h @@ -1,10 +1,18 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARBIAS_ALB_H #define COLVARBIAS_ALB_H #include "colvar.h" -#include "colvarbias_restraint.h" +#include "colvarbias.h" + class colvarbias_alb : public colvarbias { @@ -15,8 +23,8 @@ public: virtual int init(std::string const &conf); virtual int update(); - virtual std::istream & read_restart(std::istream &is); - virtual std::ostream & write_restart(std::ostream &os); + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); virtual std::ostream & write_traj_label(std::ostream &os); virtual std::ostream & write_traj(std::ostream &os); diff --git a/lib/colvars/colvarbias_histogram.cpp b/lib/colvars/colvarbias_histogram.cpp index eef4b506e3..900ad213d5 100644 --- a/lib/colvars/colvarbias_histogram.cpp +++ b/lib/colvars/colvarbias_histogram.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvar.h" #include "colvarbias_histogram.h" @@ -17,6 +24,9 @@ int colvarbias_histogram::init(std::string const &conf) { colvarbias::init(conf); + provide(f_cvb_scalar_variables); + enable(f_cvb_scalar_variables); + provide(f_cvb_history_dependent); enable(f_cvb_history_dependent); @@ -196,78 +206,25 @@ int colvarbias_histogram::write_output_files() } -std::istream & colvarbias_histogram::read_restart(std::istream& is) +std::istream & colvarbias_histogram::read_state_data(std::istream& is) { - size_t const start_pos = is.tellg(); - - cvm::log("Restarting collective variable histogram \""+ - this->name+"\".\n"); - std::string key, brace, conf; - - if ( !(is >> key) || !(key == "histogram") || - !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", conf)) ) { - cvm::log("Error: in reading restart configuration for histogram \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - - int id = -1; - std::string name = ""; - if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && - (name != this->name) ) - cvm::error("Error: in the restart file, the " - "\"histogram\" block has a wrong name: different system?\n"); - if ( (id == -1) && (name == "") ) { - cvm::error("Error: \"histogram\" block in the restart file " - "has no name.\n"); - } - - if ( !(is >> key) || !(key == "grid")) { - cvm::error("Error: in reading restart configuration for histogram \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); + if (! read_state_data_key(is, "grid")) { return is; } if (! grid->read_raw(is)) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); return is; } - is >> brace; - if (brace != "}") { - cvm::error("Error: corrupt restart information for ABF bias \""+ - this->name+"\": no matching brace at position "+ - cvm::to_str(is.tellg())+" in the restart file.\n"); - is.setstate(std::ios::failbit); - } return is; } -std::ostream & colvarbias_histogram::write_restart(std::ostream& os) + +std::ostream & colvarbias_histogram::write_state_data(std::ostream& os) { std::ios::fmtflags flags(os.flags()); os.setf(std::ios::fmtflags(0), std::ios::floatfield); - - os << "histogram {\n" - << " configuration {\n" - << " name " << this->name << "\n"; - os << " }\n"; - os << "grid\n"; grid->write_raw(os, 8); - - os << "}\n\n"; - os.flags(flags); return os; } diff --git a/lib/colvars/colvarbias_histogram.h b/lib/colvars/colvarbias_histogram.h index cca49b9901..b9c1b49950 100644 --- a/lib/colvars/colvarbias_histogram.h +++ b/lib/colvars/colvarbias_histogram.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARBIAS_HISTOGRAM_H #define COLVARBIAS_HISTOGRAM_H @@ -35,8 +42,8 @@ protected: /// If colvar_array_size is larger than 1, weigh each one by this number before accumulating the histogram std::vector weights; - virtual std::istream& read_restart(std::istream&); - virtual std::ostream& write_restart(std::ostream&); + virtual std::istream & read_state_data(std::istream &is); + virtual std::ostream & write_state_data(std::ostream &os); }; #endif diff --git a/lib/colvars/colvarbias_meta.cpp b/lib/colvars/colvarbias_meta.cpp index 285420932b..01a04d1a01 100644 --- a/lib/colvars/colvarbias_meta.cpp +++ b/lib/colvars/colvarbias_meta.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include #include @@ -26,10 +33,9 @@ colvarbias_meta::colvarbias_meta(char const *key) - : colvarbias(key), - new_hills_begin(hills.end()), - state_file_step(0) + : colvarbias(key) { + new_hills_begin = hills.end(); } @@ -164,11 +170,32 @@ int colvarbias_meta::init(std::string const &conf) target_dist = NULL; get_keyval(conf, "ebMeta", ebmeta, false); if(ebmeta){ + if (use_grids && expand_grids) { + cvm::fatal_error("Error: expandBoundaries is not supported with " + "ebMeta please allocate wide enough boundaries for " + "each colvar ahead of time and set targetdistfile " + "accordingly. \n"); + } target_dist = new colvar_grid_scalar(); target_dist->init_from_colvars(colvars); get_keyval(conf, "targetdistfile", target_dist_file); std::ifstream targetdiststream(target_dist_file.c_str()); target_dist->read_multicol(targetdiststream); + cvm::real min_val = target_dist->minimum_value(); + if(min_val<0){ + cvm::error("Error: Target distribution of ebMeta " + "has negative values!.\n", INPUT_ERROR); + } + cvm::real min_pos_val = target_dist->minimum_pos_value(); + if(min_pos_val<=0){ + cvm::error("Error: Target distribution of ebMeta has negative " + "or zero minimum positive value!.\n", INPUT_ERROR); + } + if(min_val==0){ + cvm::log("WARNING: Target distribution has zero values.\n"); + cvm::log("Zeros will be converted to the minimum positive value.\n"); + target_dist->remove_zeros(min_pos_val); + } // normalize target distribution and multiply by effective volume = exp(differential entropy) target_dist->multiply_constant(1.0/target_dist->integral()); cvm::real volume = std::exp(target_dist->entropy()); @@ -405,7 +432,9 @@ int colvarbias_meta::update() if (ebmeta) { hills_scale *= 1.0/target_dist->value(target_dist->get_colvars_index()); if(cvm::step_absolute() <= long(ebmeta_equil_steps)) { - cvm::real const hills_lambda=(cvm::real(ebmeta_equil_steps - cvm::step_absolute()))/(cvm::real(ebmeta_equil_steps)); + cvm::real const hills_lambda = + (cvm::real(long(ebmeta_equil_steps) - cvm::step_absolute())) / + (cvm::real(ebmeta_equil_steps)); hills_scale = hills_lambda + (1-hills_lambda)*hills_scale; } } @@ -972,7 +1001,7 @@ void colvarbias_meta::read_replica_files() (replicas[ir])->replica_state_file+"\".\n"); std::ifstream is((replicas[ir])->replica_state_file.c_str()); - if (! (replicas[ir])->read_restart(is)) { + if (! (replicas[ir])->read_state(is)) { cvm::log("Reading from file \""+(replicas[ir])->replica_state_file+ "\" failed or incomplete: will try again in "+ cvm::to_str(replica_update_freq)+" steps.\n"); @@ -1068,63 +1097,24 @@ void colvarbias_meta::read_replica_files() } -// ********************************************************************** -// input functions -// ********************************************************************** - - -std::istream & colvarbias_meta::read_restart(std::istream& is) +int colvarbias_meta::set_state_params(std::string const &state_conf) { - size_t const start_pos = is.tellg(); - - if (comm == single_replica) { - // if using a multiple replicas scheme, output messages - // are printed before and after calling this function - cvm::log("Restarting metadynamics bias \""+this->name+"\""+ - ".\n"); - } - std::string key, brace, conf; - if ( !(is >> key) || !(key == "metadynamics") || - !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", conf)) ) { - - if (comm == single_replica) - cvm::log("Error: in reading restart configuration for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - (replica_state_file_in_sync ? ("at position "+ - cvm::to_str(start_pos)+ - " in the state file") : "")+".\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; + std::string new_replica = ""; + if (colvarparse::get_keyval(state_conf, "replicaID", new_replica, + std::string(""), colvarparse::parse_silent) && + (new_replica != this->replica_id)) { + cvm::error("Error: in the state file, the " + "\"metadynamics\" block has a different replicaID: different system?\n", + INPUT_ERROR); + return INPUT_ERROR; } - std::string name = ""; - if ( colvarparse::get_keyval(conf, "name", name, - std::string(""), colvarparse::parse_silent) && - (name != this->name) ) - cvm::fatal_error("Error: in the restart file, the " - "\"metadynamics\" block has a different name: different system?\n"); + return COLVARS_OK; +} - if (name.size() == 0) { - cvm::fatal_error("Error: \"metadynamics\" block within the restart file " - "has no identifiers.\n"); - } - - if (comm != single_replica) { - std::string replica = ""; - if (colvarparse::get_keyval(conf, "replicaID", replica, - std::string(""), colvarparse::parse_silent) && - (replica != this->replica_id)) - cvm::fatal_error("Error: in the restart file, the " - "\"metadynamics\" block has a different replicaID: different system?\n"); - - colvarparse::get_keyval(conf, "step", state_file_step, - cvm::step_absolute(), colvarparse::parse_silent); - } +std::istream & colvarbias_meta::read_state_data(std::istream& is) +{ bool grids_from_restart_file = use_grids; if (use_grids) { @@ -1155,6 +1145,7 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) } size_t const hills_energy_pos = is.tellg(); + std::string key; if (!(is >> key)) { if (hills_energy_backup != NULL) { delete hills_energy; @@ -1316,17 +1307,6 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) } } - is >> brace; - if (brace != "}") { - cvm::log("Incomplete restart information for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": no closing brace at position "+ - cvm::to_str(is.tellg())+" in the file.\n"); - is.setstate(std::ios::failbit); - return is; - } - if (cvm::debug()) cvm::log("colvarbias_meta::read_restart() done\n"); @@ -1424,13 +1404,6 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) } - - -// ********************************************************************** -// output functions -// ********************************************************************** - - int colvarbias_meta::setup_output() { @@ -1537,16 +1510,17 @@ int colvarbias_meta::setup_output() } -std::ostream & colvarbias_meta::write_restart(std::ostream& os) +std::string const colvarbias_meta::get_state_params() const { - os << "metadynamics {\n" - << " configuration {\n" - << " step " << cvm::step_absolute() << "\n" - << " name " << this->name << "\n"; + std::ostringstream os; if (this->comm != single_replica) - os << " replicaID " << this->replica_id << "\n"; - os << " }\n\n"; + os << "replicaID " << this->replica_id << "\n"; + return (colvarbias::get_state_params() + os.str()); +} + +std::ostream & colvarbias_meta::write_state_data(std::ostream& os) +{ if (use_grids) { // this is a very good time to project hills, if you haven't done @@ -1578,8 +1552,12 @@ std::ostream & colvarbias_meta::write_restart(std::ostream& os) } } - os << "}\n\n"; + return os; +} + +int colvarbias_meta::write_state_to_replicas() +{ if (comm != single_replica) { write_replica_state_file(); // schedule to reread the state files of the other replicas (they @@ -1588,12 +1566,16 @@ std::ostream & colvarbias_meta::write_restart(std::ostream& os) (replicas[ir])->replica_state_file_in_sync = false; } } + return COLVARS_OK; +} + +int colvarbias_meta::write_output_files() +{ if (dump_fes) { write_pmf(); } - - return os; + return COLVARS_OK; } @@ -1665,53 +1647,67 @@ void colvarbias_meta::write_pmf() -void colvarbias_meta::write_replica_state_file() +int colvarbias_meta::write_replica_state_file() { - // write down also the restart for the other replicas: TODO: this - // is duplicated code, that could be cleaned up later + if (cvm::debug()) { + cvm::log("Writing replica state file for bias \""+name+"\"\n"); + } + // write down also the restart for the other replicas cvm::backup_file(replica_state_file.c_str()); - cvm::ofstream rep_state_os(replica_state_file.c_str()); - if (!rep_state_os.is_open()) - cvm::fatal_error("Error: in opening file \""+ - replica_state_file+"\" for writing.\n"); - - rep_state_os.setf(std::ios::scientific, std::ios::floatfield); - rep_state_os << "\n" - << "metadynamics {\n" - << " configuration {\n" - << " name " << this->name << "\n" - << " step " << cvm::step_absolute() << "\n"; - if (this->comm != single_replica) { - rep_state_os << " replicaID " << this->replica_id << "\n"; - } - rep_state_os << " }\n\n"; - rep_state_os << " hills_energy\n"; - rep_state_os << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width); - hills_energy->write_restart(rep_state_os); - rep_state_os << " hills_energy_gradients\n"; - rep_state_os << std::setprecision(cvm::cv_prec) - << std::setw(cvm::cv_width); - hills_energy_gradients->write_restart(rep_state_os); - - if ( (!use_grids) || keep_hills ) { - // write all hills currently in memory - for (std::list::const_iterator h = this->hills.begin(); - h != this->hills.end(); - h++) { - rep_state_os << *h; - } - } else { - // write just those that are near the grid boundaries - for (std::list::const_iterator h = this->hills_off_grid.begin(); - h != this->hills_off_grid.end(); - h++) { - rep_state_os << *h; - } + std::ostream *rep_state_os = cvm::proxy->output_stream(replica_state_file); + if (rep_state_os == NULL) { + cvm::error("Error: in opening file \""+ + replica_state_file+"\" for writing.\n", FILE_ERROR); + return FILE_ERROR; } - rep_state_os << "}\n\n"; - rep_state_os.close(); + rep_state_os->setf(std::ios::scientific, std::ios::floatfield); + + if (!write_state(*rep_state_os)) { + cvm::error("Error: in writing to file \""+ + replica_state_file+"\".\n", FILE_ERROR); + cvm::proxy->close_output_stream(replica_state_file); + return FILE_ERROR; + } + + cvm::proxy->close_output_stream(replica_state_file); + + // rep_state_os.setf(std::ios::scientific, std::ios::floatfield); + // rep_state_os << "\n" + // << "metadynamics {\n" + // << " configuration {\n" + // << " name " << this->name << "\n" + // << " step " << cvm::step_absolute() << "\n"; + // if (this->comm != single_replica) { + // rep_state_os << " replicaID " << this->replica_id << "\n"; + // } + // rep_state_os << " }\n\n"; + // rep_state_os << " hills_energy\n"; + // rep_state_os << std::setprecision(cvm::cv_prec) + // << std::setw(cvm::cv_width); + // hills_energy->write_restart(rep_state_os); + // rep_state_os << " hills_energy_gradients\n"; + // rep_state_os << std::setprecision(cvm::cv_prec) + // << std::setw(cvm::cv_width); + // hills_energy_gradients->write_restart(rep_state_os); + + // if ( (!use_grids) || keep_hills ) { + // // write all hills currently in memory + // for (std::list::const_iterator h = this->hills.begin(); + // h != this->hills.end(); + // h++) { + // rep_state_os << *h; + // } + // } else { + // // write just those that are near the grid boundaries + // for (std::list::const_iterator h = this->hills_off_grid.begin(); + // h != this->hills_off_grid.end(); + // h++) { + // rep_state_os << *h; + // } + // } + // rep_state_os << "}\n\n"; + // rep_state_os.close(); // reopen the hills file replica_hills_os.close(); @@ -1721,8 +1717,11 @@ void colvarbias_meta::write_replica_state_file() cvm::fatal_error("Error: in opening file \""+ replica_hills_file+"\" for writing.\n"); replica_hills_os.setf(std::ios::scientific, std::ios::floatfield); + + return COLVARS_OK; } + std::string colvarbias_meta::hill::output_traj() { std::ostringstream os; diff --git a/lib/colvars/colvarbias_meta.h b/lib/colvars/colvarbias_meta.h index 6936e97954..a88a34ba00 100644 --- a/lib/colvars/colvarbias_meta.h +++ b/lib/colvars/colvarbias_meta.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARBIAS_META_H #define COLVARBIAS_META_H @@ -31,10 +38,16 @@ public: virtual int init(std::string const &conf); virtual ~colvarbias_meta(); virtual int update(); - virtual std::istream & read_restart(std::istream &is); - virtual std::ostream & write_restart(std::ostream &os); + + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &state_conf); + virtual std::ostream & write_state_data(std::ostream &os); + virtual std::istream & read_state_data(std::istream &os); + virtual int setup_output(); + virtual int write_output_files(); virtual void write_pmf(); + virtual int write_state_to_replicas(); class hill; typedef std::list::iterator hill_iter; @@ -77,13 +90,6 @@ protected: /// Read a hill from a file std::istream & read_hill(std::istream &is); - /// \brief step present in a state file - /// - /// When using grids and reading state files containing them - /// (multiple replicas), this is used to check whether a hill is - /// newer or older than the grids - size_t state_file_step; - /// \brief Add a new hill; if a .hills trajectory is written, /// write it there; if there is more than one replica, communicate /// it to the others @@ -187,7 +193,7 @@ protected: virtual void read_replica_files(); /// \brief Write data to other replicas - virtual void write_replica_state_file(); + virtual int write_replica_state_file(); /// \brief Additional, "mirror" metadynamics biases, to collect info /// from the other replicas diff --git a/lib/colvars/colvarbias_restraint.cpp b/lib/colvars/colvarbias_restraint.cpp index bd37a430a1..84630984e5 100644 --- a/lib/colvars/colvarbias_restraint.cpp +++ b/lib/colvars/colvarbias_restraint.cpp @@ -1,10 +1,18 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvarvalue.h" #include "colvarbias_restraint.h" + colvarbias_restraint::colvarbias_restraint(char const *key) : colvarbias(key) { @@ -14,127 +22,36 @@ colvarbias_restraint::colvarbias_restraint(char const *key) int colvarbias_restraint::init(std::string const &conf) { colvarbias::init(conf); + enable(f_cvb_apply_force); if (cvm::debug()) cvm::log("Initializing a new restraint bias.\n"); - // TODO move these initializations to constructor and let get_keyval - // only override existing values - target_nstages = 0; - target_nsteps = 0; - force_k = 0.0; + return COLVARS_OK; +} - get_keyval(conf, "forceConstant", force_k, 1.0); - { - // get the initial restraint centers - colvar_centers.resize(colvars.size()); - colvar_centers_raw.resize(colvars.size()); - size_t i; - - enable(f_cvb_apply_force); - - for (i = 0; i < colvars.size(); i++) { - colvar_centers[i].type(colvars[i]->value()); - colvar_centers_raw[i].type(colvars[i]->value()); - if (cvm::debug()) { - cvm::log("colvarbias_restraint: center size = "+ - cvm::to_str(colvar_centers[i].vector1d_value.size())+"\n"); - } - } - if (get_keyval(conf, "centers", colvar_centers, colvar_centers)) { - for (i = 0; i < colvars.size(); i++) { - if (cvm::debug()) { - cvm::log("colvarbias_restraint: parsing initial centers, i = "+cvm::to_str(i)+".\n"); - } - - colvar_centers[i].apply_constraints(); - colvar_centers_raw[i] = colvar_centers[i]; - } - } else { - colvar_centers.clear(); - cvm::error("Error: must define the initial centers of the restraints.\n"); - } - - if (colvar_centers.size() != colvars.size()) { - cvm::error("Error: number of centers does not match " - "that of collective variables.\n"); - } - } - - { - if (cvm::debug()) { - cvm::log("colvarbias_restraint: parsing target centers.\n"); - } - - size_t i; - if (get_keyval(conf, "targetCenters", target_centers, colvar_centers)) { - if (colvar_centers.size() != colvars.size()) { - cvm::error("Error: number of target centers does not match " - "that of collective variables.\n"); - } - b_chg_centers = true; - for (i = 0; i < target_centers.size(); i++) { - target_centers[i].apply_constraints(); - } - } else { - b_chg_centers = false; - target_centers.clear(); - } - } - - if (get_keyval(conf, "targetForceConstant", target_force_k, 0.0)) { - if (b_chg_centers) - cvm::error("Error: cannot specify both targetCenters and targetForceConstant.\n"); - - starting_force_k = force_k; - b_chg_force_k = true; - - get_keyval(conf, "targetEquilSteps", target_equil_steps, 0); - - get_keyval(conf, "lambdaSchedule", lambda_schedule, lambda_schedule); - if (lambda_schedule.size()) { - // There is one more lambda-point than stages - target_nstages = lambda_schedule.size() - 1; - } - } else { - b_chg_force_k = false; - } - - if (b_chg_centers || b_chg_force_k) { - get_keyval(conf, "targetNumSteps", target_nsteps, 0); - if (!target_nsteps) - cvm::error("Error: targetNumSteps must be non-zero.\n"); - - if (get_keyval(conf, "targetNumStages", target_nstages, target_nstages) && - lambda_schedule.size()) { - cvm::error("Error: targetNumStages and lambdaSchedule are incompatible.\n"); - } - - if (target_nstages) { - // This means that either numStages of lambdaSchedule has been provided - stage = 0; - restraint_FE = 0.0; - } - - if (get_keyval(conf, "targetForceExponent", force_k_exp, 1.0)) { - if (! b_chg_force_k) - cvm::log("Warning: not changing force constant: targetForceExponent will be ignored\n"); - if (force_k_exp < 1.0) - cvm::log("Warning: for all practical purposes, targetForceExponent should be 1.0 or greater.\n"); - } - } - - get_keyval(conf, "outputCenters", b_output_centers, false); - if (b_chg_centers) { - get_keyval(conf, "outputAccumulatedWork", b_output_acc_work, false); - } else { - b_output_acc_work = false; - } - acc_work = 0.0; +int colvarbias_restraint::update() +{ + bias_energy = 0.0; if (cvm::debug()) - cvm::log("Done initializing a new restraint bias.\n"); + cvm::log("Updating the restraint bias \""+this->name+"\".\n"); + + // Force and energy calculation + for (size_t i = 0; i < colvars.size(); i++) { + colvar_forces[i].type(colvars[i]->value()); + colvar_forces[i].is_derivative(); + colvar_forces[i] = restraint_force(i); + bias_energy += restraint_potential(i); + } + + if (cvm::debug()) + cvm::log("Done updating the restraint bias \""+this->name+"\".\n"); + + if (cvm::debug()) + cvm::log("Current forces for the restraint bias \""+ + this->name+"\": "+cvm::to_str(colvar_forces)+".\n"); return COLVARS_OK; } @@ -147,9 +64,83 @@ colvarbias_restraint::~colvarbias_restraint() } -void colvarbias_restraint::change_configuration(std::string const &conf) +std::string const colvarbias_restraint::get_state_params() const +{ + return colvarbias::get_state_params(); +} + + +int colvarbias_restraint::set_state_params(std::string const &conf) +{ + return colvarbias::set_state_params(conf); +} + + +std::ostream & colvarbias_restraint::write_traj_label(std::ostream &os) +{ + return colvarbias::write_traj_label(os); +} + + +std::ostream & colvarbias_restraint::write_traj(std::ostream &os) +{ + return colvarbias::write_traj(os); +} + + + +colvarbias_restraint_centers::colvarbias_restraint_centers(char const *key) + : colvarbias(key), colvarbias_restraint(key) +{ +} + + +int colvarbias_restraint_centers::init(std::string const &conf) +{ + size_t i; + + bool null_centers = (colvar_centers.size() == 0); + if (null_centers) { + // try to initialize the restraint centers for the first time + colvar_centers.resize(colvars.size()); + colvar_centers_raw.resize(colvars.size()); + for (i = 0; i < colvars.size(); i++) { + colvar_centers[i].type(colvars[i]->value()); + colvar_centers[i].reset(); + colvar_centers_raw[i].type(colvars[i]->value()); + colvar_centers_raw[i].reset(); + } + } + + if (get_keyval(conf, "centers", colvar_centers, colvar_centers)) { + for (i = 0; i < colvars.size(); i++) { + if (cvm::debug()) { + cvm::log("colvarbias_restraint: parsing initial centers, i = "+cvm::to_str(i)+".\n"); + } + colvar_centers_raw[i] = colvar_centers[i]; + colvar_centers[i].apply_constraints(); + } + null_centers = false; + } + + if (null_centers) { + colvar_centers.clear(); + cvm::error("Error: must define the initial centers of the restraints.\n", INPUT_ERROR); + return INPUT_ERROR; + } + + if (colvar_centers.size() != colvars.size()) { + cvm::error("Error: number of centers does not match " + "that of collective variables.\n", INPUT_ERROR); + return INPUT_ERROR; + } + + return COLVARS_OK; +} + + +int colvarbias_restraint_centers::change_configuration(std::string const &conf) { - get_keyval(conf, "forceConstant", force_k, force_k); if (get_keyval(conf, "centers", colvar_centers, colvar_centers)) { for (size_t i = 0; i < colvars.size(); i++) { colvar_centers[i].type(colvars[i]->value()); @@ -158,61 +149,159 @@ void colvarbias_restraint::change_configuration(std::string const &conf) colvar_centers_raw[i] = colvar_centers[i]; } } + return COLVARS_OK; } -cvm::real colvarbias_restraint::energy_difference(std::string const &conf) + +colvarbias_restraint_k::colvarbias_restraint_k(char const *key) + : colvarbias(key), colvarbias_restraint(key) { - std::vector alt_colvar_centers; - cvm::real alt_force_k; - cvm::real alt_bias_energy = 0.0; + force_k = -1.0; +} - get_keyval(conf, "forceConstant", alt_force_k, force_k); - alt_colvar_centers.resize(colvars.size()); +int colvarbias_restraint_k::init(std::string const &conf) +{ + get_keyval(conf, "forceConstant", force_k, (force_k > 0.0 ? force_k : 1.0)); + if (force_k < 0.0) { + cvm::error("Error: undefined or invalid force constant.\n", INPUT_ERROR); + return INPUT_ERROR; + } + return COLVARS_OK; +} + + +int colvarbias_restraint_k::change_configuration(std::string const &conf) +{ + get_keyval(conf, "forceConstant", force_k, force_k); + return COLVARS_OK; +} + + + +colvarbias_restraint_moving::colvarbias_restraint_moving(char const *key) +{ + target_nstages = 0; + target_nsteps = 0; + stage = 0; + b_chg_centers = false; + b_chg_force_k = false; +} + + +int colvarbias_restraint_moving::init(std::string const &conf) +{ + if (b_chg_centers && b_chg_force_k) { + cvm::error("Error: cannot specify both targetCenters and targetForceConstant.\n", + INPUT_ERROR); + return INPUT_ERROR; + } + + if (b_chg_centers || b_chg_force_k) { + + get_keyval(conf, "targetNumSteps", target_nsteps, target_nsteps); + if (!target_nsteps) { + cvm::error("Error: targetNumSteps must be non-zero.\n", INPUT_ERROR); + return cvm::get_error(); + } + + if (get_keyval(conf, "targetNumStages", target_nstages, target_nstages) && + lambda_schedule.size()) { + cvm::error("Error: targetNumStages and lambdaSchedule are incompatible.\n", INPUT_ERROR); + return cvm::get_error(); + } + } + + return COLVARS_OK; +} + + +std::string const colvarbias_restraint_moving::get_state_params() const +{ + std::ostringstream os; + os.setf(std::ios::scientific, std::ios::floatfield); + if (b_chg_centers || b_chg_force_k) { + // TODO move this + if (target_nstages) { + os << "stage " << std::setw(cvm::it_width) + << stage << "\n"; + } + } + return os.str(); +} + + +int colvarbias_restraint_moving::set_state_params(std::string const &conf) +{ + if (b_chg_centers || b_chg_force_k) { + if (target_nstages) { + // cvm::log ("Reading current stage from the restart.\n"); + if (!get_keyval(conf, "stage", stage)) + cvm::error("Error: current stage is missing from the restart.\n"); + } + } + return COLVARS_OK; +} + + + +colvarbias_restraint_centers_moving::colvarbias_restraint_centers_moving(char const *key) + : colvarbias(key), + colvarbias_restraint(key), + colvarbias_restraint_centers(key), + colvarbias_restraint_moving(key) +{ + b_chg_centers = false; + b_output_centers = false; + b_output_acc_work = false; + acc_work = 0.0; +} + + +int colvarbias_restraint_centers_moving::init(std::string const &conf) +{ + colvarbias_restraint_centers::init(conf); + + if (cvm::debug()) { + cvm::log("colvarbias_restraint: parsing target centers.\n"); + } + size_t i; - for (i = 0; i < colvars.size(); i++) { - alt_colvar_centers[i].type(colvars[i]->value()); - } - if (get_keyval(conf, "centers", alt_colvar_centers, colvar_centers)) { - for (i = 0; i < colvars.size(); i++) { - alt_colvar_centers[i].apply_constraints(); + if (get_keyval(conf, "targetCenters", target_centers, colvar_centers)) { + if (colvar_centers.size() != colvars.size()) { + cvm::error("Error: number of target centers does not match " + "that of collective variables.\n"); } - } - - for (i = 0; i < colvars.size(); i++) { - alt_bias_energy += restraint_potential(restraint_convert_k(alt_force_k, colvars[i]->width), - colvars[i], - alt_colvar_centers[i]); - } - - return alt_bias_energy - bias_energy; -} - - -int colvarbias_restraint::update() -{ - bias_energy = 0.0; - - if (cvm::debug()) - cvm::log("Updating the restraint bias \""+this->name+"\".\n"); - - // Setup first stage of staged variable force constant calculation - if (b_chg_force_k && target_nstages && cvm::step_absolute() == 0) { - cvm::real lambda; - if (lambda_schedule.size()) { - lambda = lambda_schedule[0]; - } else { - lambda = 0.0; + b_chg_centers = true; + for (i = 0; i < target_centers.size(); i++) { + target_centers[i].apply_constraints(); } - force_k = starting_force_k + (target_force_k - starting_force_k) - * std::pow(lambda, force_k_exp); - cvm::log("Restraint " + this->name + ", stage " + - cvm::to_str(stage) + " : lambda = " + cvm::to_str(lambda)); - cvm::log("Setting force constant to " + cvm::to_str(force_k)); } if (b_chg_centers) { + // parse moving restraint options + colvarbias_restraint_moving::init(conf); + } else { + target_centers.clear(); + return COLVARS_OK; + } + + get_keyval(conf, "outputCenters", b_output_centers, b_output_centers); + get_keyval(conf, "outputAccumulatedWork", b_output_acc_work, b_output_acc_work); + + return COLVARS_OK; +} + + +int colvarbias_restraint_centers_moving::update() +{ + if (b_chg_centers) { + + if (cvm::debug()) { + cvm::log("Updating centers for the restraint bias \""+ + this->name+"\": "+cvm::to_str(colvar_centers)+".\n"); + } if (!centers_incr.size()) { // if this is the first calculation, calculate the advancement @@ -224,30 +313,30 @@ int colvarbias_restraint::update() centers_incr[i].type(colvars[i]->value()); centers_incr[i] = (target_centers[i] - colvar_centers_raw[i]) / cvm::real( target_nstages ? (target_nstages - stage) : - (target_nsteps - cvm::step_absolute())); + (target_nsteps - cvm::step_absolute())); } if (cvm::debug()) { cvm::log("Center increment for the restraint bias \""+ - this->name+"\": "+cvm::to_str(centers_incr)+" at stage "+cvm::to_str(stage)+ ".\n"); + this->name+"\": "+cvm::to_str(centers_incr)+" at stage "+cvm::to_str(stage)+ ".\n"); } } if (target_nstages) { if ((cvm::step_relative() > 0) - && (cvm::step_absolute() % target_nsteps) == 0 - && stage < target_nstages) { + && (cvm::step_absolute() % target_nsteps) == 0 + && stage < target_nstages) { - for (size_t i = 0; i < colvars.size(); i++) { - colvar_centers_raw[i] += centers_incr[i]; - colvar_centers[i] = colvar_centers_raw[i]; - colvars[i]->wrap(colvar_centers[i]); - colvar_centers[i].apply_constraints(); - } - stage++; - cvm::log("Moving restraint \"" + this->name + - "\" stage " + cvm::to_str(stage) + - " : setting centers to " + cvm::to_str(colvar_centers) + - " at step " + cvm::to_str(cvm::step_absolute())); + for (size_t i = 0; i < colvars.size(); i++) { + colvar_centers_raw[i] += centers_incr[i]; + colvar_centers[i] = colvar_centers_raw[i]; + colvars[i]->wrap(colvar_centers[i]); + colvar_centers[i].apply_constraints(); + } + stage++; + cvm::log("Moving restraint \"" + this->name + + "\" stage " + cvm::to_str(stage) + + " : setting centers to " + cvm::to_str(colvar_centers) + + " at step " + cvm::to_str(cvm::step_absolute())); } } else if ((cvm::step_relative() > 0) && (cvm::step_absolute() <= target_nsteps)) { // move the restraint centers in the direction of the targets @@ -260,16 +349,201 @@ int colvarbias_restraint::update() } } - if (cvm::debug()) - cvm::log("Current centers for the restraint bias \""+ - this->name+"\": "+cvm::to_str(colvar_centers)+".\n"); + if (cvm::debug()) { + cvm::log("New centers for the restraint bias \""+ + this->name+"\": "+cvm::to_str(colvar_centers)+".\n"); + } + } + + return COLVARS_OK; +} + + +int colvarbias_restraint_centers_moving::update_acc_work() +{ + if (b_output_acc_work) { + if ((cvm::step_relative() > 0) || (cvm::step_absolute() == 0)) { + for (size_t i = 0; i < colvars.size(); i++) { + // project forces on the calculated increments at this step + acc_work += colvar_forces[i] * centers_incr[i]; + } + } + } + return COLVARS_OK; +} + + +std::string const colvarbias_restraint_centers_moving::get_state_params() const +{ + std::ostringstream os; + os.setf(std::ios::scientific, std::ios::floatfield); + + if (b_chg_centers) { + size_t i; + os << "centers "; + for (i = 0; i < colvars.size(); i++) { + os << " " + << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) + << colvar_centers[i]; + } + os << "\n"; + os << "centers_raw "; + for (i = 0; i < colvars.size(); i++) { + os << " " + << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) + << colvar_centers_raw[i]; + } + os << "\n"; + + if (b_output_acc_work) { + os << "accumulatedWork " + << std::setprecision(cvm::en_prec) << std::setw(cvm::en_width) + << acc_work << "\n"; + } + } + + return colvarbias_restraint_moving::get_state_params() + os.str(); +} + + +int colvarbias_restraint_centers_moving::set_state_params(std::string const &conf) +{ + colvarbias_restraint::set_state_params(conf); + + if (b_chg_centers) { + // cvm::log ("Reading the updated restraint centers from the restart.\n"); + if (!get_keyval(conf, "centers", colvar_centers)) + cvm::error("Error: restraint centers are missing from the restart.\n"); + if (!get_keyval(conf, "centers_raw", colvar_centers_raw)) + cvm::error("Error: \"raw\" restraint centers are missing from the restart.\n"); + if (b_output_acc_work) { + if (!get_keyval(conf, "accumulatedWork", acc_work)) + cvm::error("Error: accumulatedWork is missing from the restart.\n"); + } + } + + return COLVARS_OK; +} + + +std::ostream & colvarbias_restraint_centers_moving::write_traj_label(std::ostream &os) +{ + if (b_output_centers) { + for (size_t i = 0; i < colvars.size(); i++) { + size_t const this_cv_width = (colvars[i]->value()).output_width(cvm::cv_width); + os << " x0_" + << cvm::wrap_string(colvars[i]->name, this_cv_width-3); + } + } + + if (b_output_acc_work) { + os << " W_" + << cvm::wrap_string(this->name, cvm::en_width-2); + } + + return os; +} + + +std::ostream & colvarbias_restraint_centers_moving::write_traj(std::ostream &os) +{ + if (b_output_centers) { + for (size_t i = 0; i < colvars.size(); i++) { + os << " " + << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) + << colvar_centers[i]; + } + } + + if (b_output_acc_work) { + os << " " + << std::setprecision(cvm::en_prec) << std::setw(cvm::en_width) + << acc_work; + } + + return os; +} + + + +colvarbias_restraint_k_moving::colvarbias_restraint_k_moving(char const *key) + : colvarbias(key), + colvarbias_restraint(key), + colvarbias_restraint_k(key), + colvarbias_restraint_moving(key) +{ + b_chg_force_k = false; + target_equil_steps = 0; + target_force_k = 0.0; + starting_force_k = 0.0; + force_k_exp = 1.0; + restraint_FE = 0.0; +} + + +int colvarbias_restraint_k_moving::init(std::string const &conf) +{ + colvarbias_restraint_k::init(conf); + + if (get_keyval(conf, "targetForceConstant", target_force_k, target_force_k)) { + starting_force_k = force_k; + b_chg_force_k = true; } if (b_chg_force_k) { - // Coupling parameter, between 0 and 1 + // parse moving restraint options + colvarbias_restraint_moving::init(conf); + } else { + return COLVARS_OK; + } + + get_keyval(conf, "targetEquilSteps", target_equil_steps, target_equil_steps); + + if (get_keyval(conf, "lambdaSchedule", lambda_schedule, lambda_schedule) && + target_nstages > 0) { + cvm::error("Error: targetNumStages and lambdaSchedule are incompatible.\n", INPUT_ERROR); + return cvm::get_error(); + } + + if (lambda_schedule.size()) { + // There is one more lambda-point than stages + target_nstages = lambda_schedule.size() - 1; + } + + if (get_keyval(conf, "targetForceExponent", force_k_exp, force_k_exp)) { + if (! b_chg_force_k) + cvm::log("Warning: not changing force constant: targetForceExponent will be ignored\n"); + } + if (force_k_exp < 1.0) { + cvm::log("Warning: for all practical purposes, targetForceExponent should be 1.0 or greater.\n"); + } + + return COLVARS_OK; +} + + +int colvarbias_restraint_k_moving::update() +{ + if (b_chg_force_k) { + cvm::real lambda; if (target_nstages) { + + if (cvm::step_absolute() == 0) { + // Setup first stage of staged variable force constant calculation + if (lambda_schedule.size()) { + lambda = lambda_schedule[0]; + } else { + lambda = 0.0; + } + force_k = starting_force_k + (target_force_k - starting_force_k) + * std::pow(lambda, force_k_exp); + cvm::log("Restraint " + this->name + ", stage " + + cvm::to_str(stage) + " : lambda = " + cvm::to_str(lambda)); + cvm::log("Setting force constant to " + cvm::to_str(force_k)); + } + // TI calculation: estimate free energy derivative // need current lambda if (lambda_schedule.size()) { @@ -284,8 +558,7 @@ int colvarbias_restraint::update() // Square distance normalized by square colvar width cvm::real dist_sq = 0.0; for (size_t i = 0; i < colvars.size(); i++) { - dist_sq += colvars[i]->dist2(colvars[i]->value(), colvar_centers[i]) - / (colvars[i]->width * colvars[i]->width); + dist_sq += d_restraint_potential_dk(i); } restraint_FE += 0.5 * force_k_exp * std::pow(lambda, force_k_exp - 1.0) @@ -296,8 +569,8 @@ int colvarbias_restraint::update() if (cvm::step_absolute() % target_nsteps == 0 && cvm::step_absolute() > 0) { - cvm::log("Lambda= " + cvm::to_str(lambda) + " dA/dLambda= " - + cvm::to_str(restraint_FE / cvm::real(target_nsteps - target_equil_steps))); + cvm::log("Lambda= " + cvm::to_str(lambda) + " dA/dLambda= " + + cvm::to_str(restraint_FE / cvm::real(target_nsteps - target_equil_steps))); // ...and move on to the next one if (stage < target_nstages) { @@ -310,220 +583,133 @@ int colvarbias_restraint::update() lambda = cvm::real(stage) / cvm::real(target_nstages); } force_k = starting_force_k + (target_force_k - starting_force_k) - * std::pow(lambda, force_k_exp); + * std::pow(lambda, force_k_exp); cvm::log("Restraint " + this->name + ", stage " + - cvm::to_str(stage) + " : lambda = " + cvm::to_str(lambda)); + cvm::to_str(stage) + " : lambda = " + cvm::to_str(lambda)); cvm::log("Setting force constant to " + cvm::to_str(force_k)); } } + } else if (cvm::step_absolute() <= target_nsteps) { + // update force constant (slow growth) lambda = cvm::real(cvm::step_absolute()) / cvm::real(target_nsteps); force_k = starting_force_k + (target_force_k - starting_force_k) - * std::pow(lambda, force_k_exp); + * std::pow(lambda, force_k_exp); } } - if (cvm::debug()) - cvm::log("Done updating the restraint bias \""+this->name+"\".\n"); - - // Force and energy calculation - for (size_t i = 0; i < colvars.size(); i++) { - colvar_forces[i].type(colvars[i]->value()); - colvar_forces[i] = -1.0 * restraint_force(restraint_convert_k(force_k, colvars[i]->width), - colvars[i], - colvar_centers[i]); - bias_energy += restraint_potential(restraint_convert_k(force_k, colvars[i]->width), - colvars[i], - colvar_centers[i]); - if (cvm::debug()) { - cvm::log("dist_grad["+cvm::to_str(i)+ - "] = "+cvm::to_str(colvars[i]->dist2_lgrad(colvars[i]->value(), - colvar_centers[i]))+"\n"); - } - } - - if (b_output_acc_work) { - if ((cvm::step_relative() > 0) || (cvm::step_absolute() == 0)) { - for (size_t i = 0; i < colvars.size(); i++) { - // project forces on the calculated increments at this step - acc_work += colvar_forces[i] * centers_incr[i]; - } - } - } - - if (cvm::debug()) - cvm::log("Current forces for the restraint bias \""+ - this->name+"\": "+cvm::to_str(colvar_forces)+".\n"); - return COLVARS_OK; } -std::istream & colvarbias_restraint::read_restart(std::istream &is) +std::string const colvarbias_restraint_k_moving::get_state_params() const +{ + std::ostringstream os; + os.setf(std::ios::scientific, std::ios::floatfield); + if (b_chg_force_k) { + os << "forceConstant " + << std::setprecision(cvm::en_prec) + << std::setw(cvm::en_width) << force_k << "\n"; + } + return colvarbias_restraint_moving::get_state_params() + os.str(); +} + + +int colvarbias_restraint_k_moving::set_state_params(std::string const &conf) +{ + colvarbias_restraint::set_state_params(conf); + + if (b_chg_force_k) { + // cvm::log ("Reading the updated force constant from the restart.\n"); + if (!get_keyval(conf, "forceConstant", force_k, force_k)) + cvm::error("Error: force constant is missing from the restart.\n"); + } + + return COLVARS_OK; +} + + +std::ostream & colvarbias_restraint_k_moving::write_traj_label(std::ostream &os) +{ + return os; +} + + +std::ostream & colvarbias_restraint_k_moving::write_traj(std::ostream &os) +{ + return os; +} + + + +// redefined due to legacy state file keyword "harmonic" +std::istream & colvarbias_restraint::read_state(std::istream &is) { size_t const start_pos = is.tellg(); - cvm::log("Restarting restraint bias \""+ - this->name+"\".\n"); - std::string key, brace, conf; if ( !(is >> key) || !(key == "restraint" || key == "harmonic") || !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", conf)) ) { - - cvm::log("Error: in reading restart configuration for restraint bias \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); + !(is >> colvarparse::read_block("configuration", conf)) || + (set_state_params(conf) != COLVARS_OK) ) { + cvm::error("Error: in reading state configuration for \""+bias_type+"\" bias \""+ + this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR); is.clear(); is.seekg(start_pos, std::ios::beg); is.setstate(std::ios::failbit); return is; } -// int id = -1; - std::string name = ""; -// if ( ( (colvarparse::get_keyval (conf, "id", id, -1, colvarparse::parse_silent)) && -// (id != this->id) ) || - if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && - (name != this->name) ) - cvm::error("Error: in the restart file, the " - "\"restraint\" block has a wrong name\n"); -// if ( (id == -1) && (name == "") ) { - if (name.size() == 0) { - cvm::error("Error: \"restraint\" block in the restart file " - "has no identifiers.\n"); - } - - if (b_chg_centers) { -// cvm::log ("Reading the updated restraint centers from the restart.\n"); - if (!get_keyval(conf, "centers", colvar_centers)) - cvm::error("Error: restraint centers are missing from the restart.\n"); - if (!get_keyval(conf, "centers_raw", colvar_centers_raw)) - cvm::error("Error: \"raw\" restraint centers are missing from the restart.\n"); - } - - if (b_chg_force_k) { -// cvm::log ("Reading the updated force constant from the restart.\n"); - if (!get_keyval(conf, "forceConstant", force_k)) - cvm::error("Error: force constant is missing from the restart.\n"); - } - - if (target_nstages) { -// cvm::log ("Reading current stage from the restart.\n"); - if (!get_keyval(conf, "stage", stage)) - cvm::error("Error: current stage is missing from the restart.\n"); - } - - if (b_output_acc_work) { - if (!get_keyval(conf, "accumulatedWork", acc_work)) - cvm::error("Error: accumulatedWork is missing from the restart.\n"); + if (!read_state_data(is)) { + cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+ + this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR); + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); } is >> brace; if (brace != "}") { - cvm::error("Error: corrupt restart information for restraint bias \""+ - this->name+"\": no matching brace at position "+ - cvm::to_str(is.tellg())+" in the restart file.\n"); + cvm::log("brace = "+brace+"\n"); + cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+ + this->name+"\": no matching brace at position "+ + cvm::to_str(is.tellg())+" in stream.\n"); is.setstate(std::ios::failbit); } + return is; } -std::ostream & colvarbias_restraint::write_restart(std::ostream &os) +std::ostream & colvarbias_restraint::write_state(std::ostream &os) { + os.setf(std::ios::scientific, std::ios::floatfield); os << "restraint {\n" - << " configuration {\n" - // << " id " << this->id << "\n" - << " name " << this->name << "\n"; - - if (b_chg_centers) { - size_t i; - os << " centers "; - for (i = 0; i < colvars.size(); i++) { - os << " " << colvar_centers[i]; - } - os << "\n"; - os << " centers_raw "; - for (i = 0; i < colvars.size(); i++) { - os << " " << colvar_centers_raw[i]; - } - os << "\n"; + << " configuration {\n"; + std::istringstream is(get_state_params()); + std::string line; + while (std::getline(is, line)) { + os << " " << line << "\n"; } - - if (b_chg_force_k) { - os << " forceConstant " - << std::setprecision(cvm::en_prec) - << std::setw(cvm::en_width) << force_k << "\n"; - } - - if (target_nstages) { - os << " stage " << std::setw(cvm::it_width) - << stage << "\n"; - } - - if (b_output_acc_work) { - os << " accumulatedWork " << acc_work << "\n"; - } - - os << " }\n" - << "}\n\n"; - + os << " }\n"; + write_state_data(os); + os << "}\n\n"; return os; } -std::ostream & colvarbias_restraint::write_traj_label(std::ostream &os) -{ - os << " "; - - if (b_output_energy) - os << " E_" - << cvm::wrap_string(this->name, cvm::en_width-2); - - if (b_output_centers) - for (size_t i = 0; i < colvars.size(); i++) { - size_t const this_cv_width = (colvars[i]->value()).output_width(cvm::cv_width); - os << " x0_" - << cvm::wrap_string(colvars[i]->name, this_cv_width-3); - } - - if (b_output_acc_work) - os << " W_" - << cvm::wrap_string(this->name, cvm::en_width-2); - - return os; -} - - -std::ostream & colvarbias_restraint::write_traj(std::ostream &os) -{ - os << " "; - - if (b_output_energy) - os << " " - << std::setprecision(cvm::en_prec) << std::setw(cvm::en_width) - << bias_energy; - - if (b_output_centers) - for (size_t i = 0; i < colvars.size(); i++) { - os << " " - << std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width) - << colvar_centers[i]; - } - - if (b_output_acc_work) - os << " " - << std::setprecision(cvm::en_prec) << std::setw(cvm::en_width) - << acc_work; - - return os; -} - colvarbias_restraint_harmonic::colvarbias_restraint_harmonic(char const *key) - : colvarbias_restraint(key) + : colvarbias(key), + colvarbias_restraint(key), + colvarbias_restraint_centers(key), + colvarbias_restraint_moving(key), + colvarbias_restraint_k(key), + colvarbias_restraint_centers_moving(key), + colvarbias_restraint_k_moving(key) { } @@ -531,44 +717,332 @@ colvarbias_restraint_harmonic::colvarbias_restraint_harmonic(char const *key) int colvarbias_restraint_harmonic::init(std::string const &conf) { colvarbias_restraint::init(conf); + colvarbias_restraint_moving::init(conf); + colvarbias_restraint_centers_moving::init(conf); + colvarbias_restraint_k_moving::init(conf); for (size_t i = 0; i < colvars.size(); i++) { if (colvars[i]->width != 1.0) cvm::log("The force constant for colvar \""+colvars[i]->name+ "\" will be rescaled to "+ - cvm::to_str(restraint_convert_k(force_k, colvars[i]->width))+ + cvm::to_str(force_k / (colvars[i]->width * colvars[i]->width))+ " according to the specified width.\n"); } + return COLVARS_OK; } -cvm::real colvarbias_restraint_harmonic::restraint_potential(cvm::real k, - colvar const *x, - colvarvalue const &xcenter) const +int colvarbias_restraint_harmonic::update() { - return 0.5 * k * x->dist2(x->value(), xcenter); + // update parameters (centers or force constant) + colvarbias_restraint_centers_moving::update(); + colvarbias_restraint_k_moving::update(); + + // update restraint energy and forces + colvarbias_restraint::update(); + + // update accumulated work using the current forces + colvarbias_restraint_centers_moving::update_acc_work(); + + return COLVARS_OK; } -colvarvalue colvarbias_restraint_harmonic::restraint_force(cvm::real k, - colvar const *x, - colvarvalue const &xcenter) const +cvm::real colvarbias_restraint_harmonic::restraint_potential(size_t i) const { - return 0.5 * k * x->dist2_lgrad(x->value(), xcenter); + return 0.5 * force_k / (colvars[i]->width * colvars[i]->width) * + colvars[i]->dist2(colvars[i]->value(), colvar_centers[i]); } -cvm::real colvarbias_restraint_harmonic::restraint_convert_k(cvm::real k, - cvm::real dist_measure) const +colvarvalue const colvarbias_restraint_harmonic::restraint_force(size_t i) const { - return k / (dist_measure * dist_measure); + return -0.5 * force_k / (colvars[i]->width * colvars[i]->width) * + colvars[i]->dist2_lgrad(colvars[i]->value(), colvar_centers[i]); +} + + +cvm::real colvarbias_restraint_harmonic::d_restraint_potential_dk(size_t i) const +{ + return 0.5 / (colvars[i]->width * colvars[i]->width) * + colvars[i]->dist2(colvars[i]->value(), colvar_centers[i]); +} + + +std::string const colvarbias_restraint_harmonic::get_state_params() const +{ + return colvarbias_restraint::get_state_params() + + colvarbias_restraint_centers_moving::get_state_params() + + colvarbias_restraint_k_moving::get_state_params(); +} + + +int colvarbias_restraint_harmonic::set_state_params(std::string const &conf) +{ + int error_code = COLVARS_OK; + error_code |= colvarbias_restraint::set_state_params(conf); + error_code |= colvarbias_restraint_centers_moving::set_state_params(conf); + error_code |= colvarbias_restraint_k_moving::set_state_params(conf); + return error_code; +} + + +std::ostream & colvarbias_restraint_harmonic::write_traj_label(std::ostream &os) +{ + colvarbias_restraint::write_traj_label(os); + colvarbias_restraint_centers_moving::write_traj_label(os); + colvarbias_restraint_k_moving::write_traj_label(os); + return os; +} + + +std::ostream & colvarbias_restraint_harmonic::write_traj(std::ostream &os) +{ + colvarbias_restraint::write_traj(os); + colvarbias_restraint_centers_moving::write_traj(os); + colvarbias_restraint_k_moving::write_traj(os); + return os; +} + + +int colvarbias_restraint_harmonic::change_configuration(std::string const &conf) +{ + return colvarbias_restraint_centers::change_configuration(conf) | + colvarbias_restraint_k::change_configuration(conf); +} + + +cvm::real colvarbias_restraint_harmonic::energy_difference(std::string const &conf) +{ + cvm::real const old_bias_energy = bias_energy; + cvm::real const old_force_k = force_k; + std::vector const old_centers = colvar_centers; + + change_configuration(conf); + update(); + + cvm::real const result = (bias_energy - old_bias_energy); + + bias_energy = old_bias_energy; + force_k = old_force_k; + colvar_centers = old_centers; + + return result; +} + + + +colvarbias_restraint_harmonic_walls::colvarbias_restraint_harmonic_walls(char const *key) + : colvarbias(key), + colvarbias_restraint(key), + colvarbias_restraint_k(key), + colvarbias_restraint_moving(key), + colvarbias_restraint_k_moving(key) +{ +} + + +int colvarbias_restraint_harmonic_walls::init(std::string const &conf) +{ + colvarbias_restraint::init(conf); + colvarbias_restraint_moving::init(conf); + colvarbias_restraint_k_moving::init(conf); + + provide(f_cvb_scalar_variables); + enable(f_cvb_scalar_variables); + + size_t i; + + bool b_null_lower_walls = false; + if (lower_walls.size() == 0) { + b_null_lower_walls = true; + lower_walls.resize(number_of_colvars()); + for (i = 0; i < colvars.size(); i++) { + lower_walls[i].type(colvars[i]->value()); + lower_walls[i].reset(); + } + } + if (!get_keyval(conf, "lowerWalls", lower_walls, lower_walls) && + b_null_lower_walls) { + cvm::log("Lower walls were not provided.\n"); + lower_walls.resize(0); + } + + bool b_null_upper_walls = false; + if (upper_walls.size() == 0) { + b_null_upper_walls = true; + upper_walls.resize(number_of_colvars()); + for (i = 0; i < colvars.size(); i++) { + upper_walls[i].type(colvars[i]->value()); + upper_walls[i].reset(); + } + } + if (!get_keyval(conf, "upperWalls", upper_walls, upper_walls) && + b_null_upper_walls) { + cvm::log("Upper walls were not provided.\n"); + upper_walls.resize(0); + } + + if ((lower_walls.size() == 0) && (upper_walls.size() == 0)) { + cvm::error("Error: no walls provided.\n", INPUT_ERROR); + return INPUT_ERROR; + } + + if ((lower_walls.size() == 0) || (upper_walls.size() == 0)) { + for (i = 0; i < colvars.size(); i++) { + if (colvars[i]->is_enabled(f_cv_periodic)) { + cvm::error("Error: at least one variable is periodic, " + "both walls must be provided .\n", INPUT_ERROR); + return INPUT_ERROR; + } + } + } + + if ((lower_walls.size() > 0) && (upper_walls.size() > 0)) { + for (i = 0; i < colvars.size(); i++) { + if (lower_walls[i] >= upper_walls[i]) { + cvm::error("Error: one upper wall, "+ + cvm::to_str(upper_walls[i])+ + ", is not higher than the lower wall, "+ + cvm::to_str(lower_walls[i])+".\n", + INPUT_ERROR); + } + } + } + + for (i = 0; i < colvars.size(); i++) { + if (colvars[i]->width != 1.0) + cvm::log("The force constant for colvar \""+colvars[i]->name+ + "\" will be rescaled to "+ + cvm::to_str(force_k / (colvars[i]->width * colvars[i]->width))+ + " according to the specified width.\n"); + } + + return COLVARS_OK; +} + + +int colvarbias_restraint_harmonic_walls::update() +{ + colvarbias_restraint_k_moving::update(); + + colvarbias_restraint::update(); + + return COLVARS_OK; +} + + +void colvarbias_restraint_harmonic_walls::communicate_forces() +{ + for (size_t i = 0; i < colvars.size(); i++) { + if (cvm::debug()) { + cvm::log("Communicating a force to colvar \""+ + colvars[i]->name+"\".\n"); + } + colvars[i]->add_bias_force_actual_value(colvar_forces[i]); + } +} + + +cvm::real colvarbias_restraint_harmonic_walls::colvar_distance(size_t i) const +{ + colvar *cv = colvars[i]; + colvarvalue const &cvv = colvars[i]->actual_value(); + + // For a periodic colvar, both walls may be applicable at the same time + // in which case we pick the closer one + + if (cv->is_enabled(f_cv_periodic)) { + cvm::real const lower_wall_dist2 = cv->dist2(cvv, lower_walls[i]); + cvm::real const upper_wall_dist2 = cv->dist2(cvv, upper_walls[i]); + if (lower_wall_dist2 < upper_wall_dist2) { + cvm::real const grad = cv->dist2_lgrad(cvv, lower_walls[i]); + if (grad < 0.0) { return grad; } + } else { + cvm::real const grad = cv->dist2_lgrad(cvv, upper_walls[i]); + if (grad > 0.0) { return grad; } + } + return 0.0; + } + + if (lower_walls.size() > 0) { + cvm::real const grad = cv->dist2_lgrad(cvv, lower_walls[i]); + if (grad < 0.0) { return grad; } + } + if (upper_walls.size() > 0) { + cvm::real const grad = cv->dist2_lgrad(cvv, upper_walls[i]); + if (grad > 0.0) { return grad; } + } + return 0.0; +} + + +cvm::real colvarbias_restraint_harmonic_walls::restraint_potential(size_t i) const +{ + cvm::real const dist = colvar_distance(i); + return 0.5 * force_k / (colvars[i]->width * colvars[i]->width) * + dist * dist; +} + + +colvarvalue const colvarbias_restraint_harmonic_walls::restraint_force(size_t i) const +{ + cvm::real const dist = colvar_distance(i); + return -0.5 * force_k / (colvars[i]->width * colvars[i]->width) * + dist; +} + + +cvm::real colvarbias_restraint_harmonic_walls::d_restraint_potential_dk(size_t i) const +{ + cvm::real const dist = colvar_distance(i); + return 0.5 / (colvars[i]->width * colvars[i]->width) * + dist * dist; +} + + +std::string const colvarbias_restraint_harmonic_walls::get_state_params() const +{ + return colvarbias_restraint::get_state_params() + + colvarbias_restraint_k_moving::get_state_params(); +} + + +int colvarbias_restraint_harmonic_walls::set_state_params(std::string const &conf) +{ + int error_code = COLVARS_OK; + error_code |= colvarbias_restraint::set_state_params(conf); + error_code |= colvarbias_restraint_k_moving::set_state_params(conf); + return error_code; +} + + +std::ostream & colvarbias_restraint_harmonic_walls::write_traj_label(std::ostream &os) +{ + colvarbias_restraint::write_traj_label(os); + colvarbias_restraint_k_moving::write_traj_label(os); + return os; +} + + +std::ostream & colvarbias_restraint_harmonic_walls::write_traj(std::ostream &os) +{ + colvarbias_restraint::write_traj(os); + colvarbias_restraint_k_moving::write_traj(os); + return os; } colvarbias_restraint_linear::colvarbias_restraint_linear(char const *key) - : colvarbias_restraint(key) + : colvarbias(key), + colvarbias_restraint(key), + colvarbias_restraint_centers(key), + colvarbias_restraint_moving(key), + colvarbias_restraint_k(key), + colvarbias_restraint_centers_moving(key), + colvarbias_restraint_k_moving(key) { } @@ -576,38 +1050,118 @@ colvarbias_restraint_linear::colvarbias_restraint_linear(char const *key) int colvarbias_restraint_linear::init(std::string const &conf) { colvarbias_restraint::init(conf); + colvarbias_restraint_moving::init(conf); + colvarbias_restraint_centers_moving::init(conf); + colvarbias_restraint_k_moving::init(conf); for (size_t i = 0; i < colvars.size(); i++) { + if (colvars[i]->is_enabled(f_cv_periodic)) { + cvm::error("Error: linear biases cannot be applied to periodic variables.\n", + INPUT_ERROR); + return INPUT_ERROR; + } if (colvars[i]->width != 1.0) cvm::log("The force constant for colvar \""+colvars[i]->name+ "\" will be rescaled to "+ - cvm::to_str(restraint_convert_k(force_k, colvars[i]->width))+ + cvm::to_str(force_k / colvars[i]->width)+ " according to the specified width.\n"); } + return COLVARS_OK; } -cvm::real colvarbias_restraint_linear::restraint_potential(cvm::real k, - colvar const *x, - colvarvalue const &xcenter) const +int colvarbias_restraint_linear::update() { - return k * (x->value() - xcenter); + // update parameters (centers or force constant) + colvarbias_restraint_centers_moving::update(); + colvarbias_restraint_k_moving::update(); + + // update restraint energy and forces + colvarbias_restraint::update(); + + // update accumulated work using the current forces + colvarbias_restraint_centers_moving::update_acc_work(); + + return COLVARS_OK; } -colvarvalue colvarbias_restraint_linear::restraint_force(cvm::real k, - colvar const *x, - colvarvalue const &xcenter) const +int colvarbias_restraint_linear::change_configuration(std::string const &conf) { - return k; + // Only makes sense to change the force constant + return colvarbias_restraint_k::change_configuration(conf); } -cvm::real colvarbias_restraint_linear::restraint_convert_k(cvm::real k, - cvm::real dist_measure) const +cvm::real colvarbias_restraint_linear::energy_difference(std::string const &conf) { - return k / dist_measure; + cvm::real const old_bias_energy = bias_energy; + cvm::real const old_force_k = force_k; + + change_configuration(conf); + update(); + + cvm::real const result = (bias_energy - old_bias_energy); + + bias_energy = old_bias_energy; + force_k = old_force_k; + + return result; +} + + +cvm::real colvarbias_restraint_linear::restraint_potential(size_t i) const +{ + return force_k / colvars[i]->width * (colvars[i]->value() - colvar_centers[i]); +} + + +colvarvalue const colvarbias_restraint_linear::restraint_force(size_t i) const +{ + return -1.0 * force_k / colvars[i]->width; +} + + +cvm::real colvarbias_restraint_linear::d_restraint_potential_dk(size_t i) const +{ + return 1.0 / colvars[i]->width * (colvars[i]->value() - colvar_centers[i]); +} + + +std::string const colvarbias_restraint_linear::get_state_params() const +{ + return colvarbias_restraint::get_state_params() + + colvarbias_restraint_centers_moving::get_state_params() + + colvarbias_restraint_k_moving::get_state_params(); +} + + +int colvarbias_restraint_linear::set_state_params(std::string const &conf) +{ + int error_code = COLVARS_OK; + error_code |= colvarbias_restraint::set_state_params(conf); + error_code |= colvarbias_restraint_centers_moving::set_state_params(conf); + error_code |= colvarbias_restraint_k_moving::set_state_params(conf); + return error_code; +} + + +std::ostream & colvarbias_restraint_linear::write_traj_label(std::ostream &os) +{ + colvarbias_restraint::write_traj_label(os); + colvarbias_restraint_centers_moving::write_traj_label(os); + colvarbias_restraint_k_moving::write_traj_label(os); + return os; +} + + +std::ostream & colvarbias_restraint_linear::write_traj(std::ostream &os) +{ + colvarbias_restraint::write_traj(os); + colvarbias_restraint_centers_moving::write_traj(os); + colvarbias_restraint_k_moving::write_traj(os); + return os; } diff --git a/lib/colvars/colvarbias_restraint.h b/lib/colvars/colvarbias_restraint.h index 54097bd524..cbdd9c44d1 100644 --- a/lib/colvars/colvarbias_restraint.h +++ b/lib/colvars/colvarbias_restraint.h @@ -1,36 +1,43 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARBIAS_RESTRAINT_H #define COLVARBIAS_RESTRAINT_H #include "colvarbias.h" -/// \brief Bias restraint, optionally moving towards a target +/// \brief Most general definition of a colvar restraint: +/// see derived classes for specific types /// (implementation of \link colvarbias \endlink) -class colvarbias_restraint : public colvarbias { +class colvarbias_restraint + : public virtual colvarbias +{ public: /// Retrieve colvar values and calculate their biasing forces virtual int update(); - // TODO the following can be supplanted by a new call to init() /// Load new configuration - force constant and/or centers only - virtual void change_configuration(std::string const &conf); + virtual int change_configuration(std::string const &conf) { return COLVARS_NOT_IMPLEMENTED; } /// Calculate change in energy from using alternate configuration - virtual cvm::real energy_difference(std::string const &conf); + virtual cvm::real energy_difference(std::string const &conf) { return 0.0; } - /// Read the bias configuration from a restart file - virtual std::istream & read_restart(std::istream &is); + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + // virtual std::ostream & write_state_data(std::ostream &os); + // virtual std::istream & read_state_data(std::istream &os); + virtual std::ostream & write_state(std::ostream &os); + virtual std::istream & read_state(std::istream &is); - /// Write the bias configuration to a restart file - virtual std::ostream & write_restart(std::ostream &os); - - /// Write a label to the trajectory file (comment line) virtual std::ostream & write_traj_label(std::ostream &os); - - /// Output quantities such as the bias energy to the trajectory file virtual std::ostream & write_traj(std::ostream &os); /// \brief Constructor @@ -42,26 +49,110 @@ public: protected: - /// \brief Potential function - virtual cvm::real restraint_potential(cvm::real k, colvar const *x, - colvarvalue const &xcenter) const = 0; + /// \brief Potential function for the i-th colvar + virtual cvm::real restraint_potential(size_t i) const = 0; - /// \brief Force function - virtual colvarvalue restraint_force(cvm::real k, colvar const *x, - colvarvalue const &xcenter) const = 0; + /// \brief Force function for the i-th colvar + virtual colvarvalue const restraint_force(size_t i) const = 0; - ///\brief Unit scaling - virtual cvm::real restraint_convert_k(cvm::real k, cvm::real dist_measure) const = 0; + /// \brief Derivative of the potential function with respect to the force constant + virtual cvm::real d_restraint_potential_dk(size_t i) const = 0; +}; + + +/// Definition and parsing of the restraint centers +class colvarbias_restraint_centers + : public virtual colvarbias_restraint +{ +public: + + colvarbias_restraint_centers(char const *key); + virtual int init(std::string const &conf); + virtual int change_configuration(std::string const &conf); + +protected: /// \brief Restraint centers std::vector colvar_centers; - /// \brief Restraint centers without wrapping or constraints applied + /// \brief Restraint centers outside the domain of the colvars (no wrapping or constraints applied) std::vector colvar_centers_raw; +}; + + +/// Definition and parsing of the force constant +class colvarbias_restraint_k + : public virtual colvarbias_restraint +{ +public: + + colvarbias_restraint_k(char const *key); + virtual int init(std::string const &conf); + virtual int change_configuration(std::string const &conf); + +protected: + /// \brief Restraint force constant + cvm::real force_k; +}; + + +/// Options to change the restraint configuration over time (shared between centers and k moving) +class colvarbias_restraint_moving + : public virtual colvarparse { +public: + + colvarbias_restraint_moving(char const *key); + // Note: despite the diamond inheritance, most of this function gets only executed once + virtual int init(std::string const &conf); + virtual int update() { return COLVARS_OK; } + virtual int change_configuration(std::string const &conf) { return COLVARS_NOT_IMPLEMENTED; } + + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + +protected: /// \brief Moving target? bool b_chg_centers; + /// \brief Changing force constant? + bool b_chg_force_k; + + /// \brief Number of stages over which to perform the change + /// If zero, perform a continuous change + int target_nstages; + + /// \brief Number of current stage of the perturbation + int stage; + + /// \brief Lambda-schedule for custom varying force constant + std::vector lambda_schedule; + + /// \brief Number of steps required to reach the target force constant + /// or restraint centers + long target_nsteps; +}; + + +/// Options to change the restraint centers over time +class colvarbias_restraint_centers_moving + : public virtual colvarbias_restraint_centers, + public virtual colvarbias_restraint_moving +{ +public: + + colvarbias_restraint_centers_moving(char const *key); + virtual int init(std::string const &conf); + virtual int update(); + virtual int change_configuration(std::string const &conf) { return COLVARS_NOT_IMPLEMENTED; } + + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + virtual std::ostream & write_traj_label(std::ostream &os); + virtual std::ostream & write_traj(std::ostream &os); + +protected: + /// \brief New restraint centers std::vector target_centers; @@ -78,11 +169,29 @@ protected: /// \brief Accumulated work cvm::real acc_work; - /// \brief Restraint force constant - cvm::real force_k; + /// Update the accumulated work + int update_acc_work(); +}; - /// \brief Changing force constant? - bool b_chg_force_k; + +/// Options to change the restraint force constant over time +class colvarbias_restraint_k_moving + : public virtual colvarbias_restraint_k, + public virtual colvarbias_restraint_moving +{ +public: + + colvarbias_restraint_k_moving(char const *key); + virtual int init(std::string const &conf); + virtual int update(); + virtual int change_configuration(std::string const &conf) { return COLVARS_NOT_IMPLEMENTED; } + + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + virtual std::ostream & write_traj_label(std::ostream &os); + virtual std::ostream & write_traj(std::ostream &os); + +protected: /// \brief Restraint force constant (target value) cvm::real target_force_k; @@ -90,9 +199,6 @@ protected: /// \brief Restraint force constant (starting value) cvm::real starting_force_k; - /// \brief Lambda-schedule for custom varying force constant - std::vector lambda_schedule; - /// \brief Exponent for varying the force constant cvm::real force_k_exp; @@ -100,71 +206,91 @@ protected: /// (in TI, would be the accumulating FE derivative) cvm::real restraint_FE; - /// \brief Equilibration steps for restraint FE calculation through TI cvm::real target_equil_steps; - - /// \brief Number of stages over which to perform the change - /// If zero, perform a continuous change - int target_nstages; - - /// \brief Number of current stage of the perturbation - int stage; - - /// \brief Number of steps required to reach the target force constant - /// or restraint centers - long target_nsteps; }; /// \brief Harmonic bias restraint /// (implementation of \link colvarbias_restraint \endlink) -class colvarbias_restraint_harmonic : public colvarbias_restraint { - +class colvarbias_restraint_harmonic + : public colvarbias_restraint_centers_moving, + public colvarbias_restraint_k_moving +{ public: - colvarbias_restraint_harmonic(char const *key); virtual int init(std::string const &conf); - // no additional members, destructor not needed + virtual int update(); + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + virtual std::ostream & write_traj_label(std::ostream &os); + virtual std::ostream & write_traj(std::ostream &os); + virtual int change_configuration(std::string const &conf); + virtual cvm::real energy_difference(std::string const &conf); protected: - /// \brief Potential function - virtual cvm::real restraint_potential(cvm::real k, colvar const *x, - colvarvalue const &xcenter) const; + virtual cvm::real restraint_potential(size_t i) const; + virtual colvarvalue const restraint_force(size_t i) const; + virtual cvm::real d_restraint_potential_dk(size_t i) const; +}; - /// \brief Force function - virtual colvarvalue restraint_force(cvm::real k, colvar const *x, - colvarvalue const &xcenter) const; - ///\brief Unit scaling - virtual cvm::real restraint_convert_k(cvm::real k, cvm::real dist_measure) const; +/// \brief Wall restraint +/// (implementation of \link colvarbias_restraint \endlink) +class colvarbias_restraint_harmonic_walls + : public colvarbias_restraint_k_moving +{ +public: + colvarbias_restraint_harmonic_walls(char const *key); + virtual int init(std::string const &conf); + virtual int update(); + virtual void communicate_forces(); + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + virtual std::ostream & write_traj_label(std::ostream &os); + virtual std::ostream & write_traj(std::ostream &os); + +protected: + + /// \brief Location of the lower walls + std::vector lower_walls; + + /// \brief Location of the upper walls + std::vector upper_walls; + + virtual cvm::real colvar_distance(size_t i) const; + virtual cvm::real restraint_potential(size_t i) const; + virtual colvarvalue const restraint_force(size_t i) const; + virtual cvm::real d_restraint_potential_dk(size_t i) const; }; /// \brief Linear bias restraint /// (implementation of \link colvarbias_restraint \endlink) -class colvarbias_restraint_linear : public colvarbias_restraint { +class colvarbias_restraint_linear + : public colvarbias_restraint_centers_moving, + public colvarbias_restraint_k_moving +{ public: colvarbias_restraint_linear(char const *key); virtual int init(std::string const &conf); - // no additional members, destructor not needed + virtual int update(); + virtual int change_configuration(std::string const &conf); + virtual cvm::real energy_difference(std::string const &conf); + + virtual std::string const get_state_params() const; + virtual int set_state_params(std::string const &conf); + virtual std::ostream & write_traj_label(std::ostream &os); + virtual std::ostream & write_traj(std::ostream &os); protected: - /// \brief Potential function - virtual cvm::real restraint_potential(cvm::real k, colvar const *x, - colvarvalue const &xcenter) const; - - /// \brief Force function - virtual colvarvalue restraint_force(cvm::real k, colvar const *x, - colvarvalue const &xcenter) const; - - ///\brief Unit scaling - virtual cvm::real restraint_convert_k(cvm::real k, cvm::real dist_measure) const; - + virtual cvm::real restraint_potential(size_t i) const; + virtual colvarvalue const restraint_force(size_t i) const; + virtual cvm::real d_restraint_potential_dk(size_t i) const; }; diff --git a/lib/colvars/colvarcomp.cpp b/lib/colvars/colvarcomp.cpp index 050e03f78e..d99da56386 100644 --- a/lib/colvars/colvarcomp.cpp +++ b/lib/colvars/colvarcomp.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvarvalue.h" #include "colvar.h" @@ -154,15 +161,17 @@ void colvar::cvc::read_data() void colvar::cvc::calc_force_invgrads() { - cvm::fatal_error("Error: calculation of inverse gradients is not implemented " - "for colvar components of type \""+function_type+"\".\n"); + cvm::error("Error: calculation of inverse gradients is not implemented " + "for colvar components of type \""+function_type+"\".\n", + COLVARS_NOT_IMPLEMENTED); } void colvar::cvc::calc_Jacobian_derivative() { - cvm::fatal_error("Error: calculation of inverse gradients is not implemented " - "for colvar components of type \""+function_type+"\".\n"); + cvm::error("Error: calculation of inverse gradients is not implemented " + "for colvar components of type \""+function_type+"\".\n", + COLVARS_NOT_IMPLEMENTED); } @@ -281,6 +290,33 @@ void colvar::cvc::debug_gradients(cvm::atom_group *group) } +cvm::real colvar::cvc::dist2(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return x1.dist2(x2); +} + + +colvarvalue colvar::cvc::dist2_lgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return x1.dist2_grad(x2); +} + + +colvarvalue colvar::cvc::dist2_rgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return x2.dist2_grad(x1); +} + + +void colvar::cvc::wrap(colvarvalue &x) const +{ + return; +} + + // Static members std::vector colvar::cvc::cvc_features; diff --git a/lib/colvars/colvarcomp.h b/lib/colvars/colvarcomp.h index 0649895e45..a230cae8a9 100644 --- a/lib/colvars/colvarcomp.h +++ b/lib/colvars/colvarcomp.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARCOMP_H #define COLVARCOMP_H @@ -105,8 +112,8 @@ public: /// options from the provided configuration string /// Returns reference to new group cvm::atom_group *parse_group(std::string const &conf, - char const *group_key, - bool optional = false); + char const *group_key, + bool optional = false); /// \brief Parse options pertaining to total force calculation virtual int init_total_force_params(std::string const &conf); @@ -130,7 +137,7 @@ public: } /// \brief Obtain data needed for the calculation for the backend - void read_data(); + virtual void read_data(); /// \brief Calculate the variable virtual void calc_value() = 0; @@ -151,17 +158,14 @@ public: /// \brief Return the previously calculated value - virtual colvarvalue const & value() const; - - // /// \brief Return const pointer to the previously calculated value - // virtual const colvarvalue *p_value() const; + colvarvalue const & value() const; /// \brief Return the previously calculated total force - virtual colvarvalue const & total_force() const; + colvarvalue const & total_force() const; /// \brief Return the previously calculated divergence of the /// inverse atomic gradients - virtual colvarvalue const & Jacobian_derivative() const; + colvarvalue const & Jacobian_derivative() const; /// \brief Apply the collective variable force, by communicating the /// atomic forces to the simulation program (\b Note: the \link ft @@ -247,52 +251,24 @@ protected: }; - - inline colvarvalue const & colvar::cvc::value() const { return x; } -// inline const colvarvalue * colvar::cvc::p_value() const -// { -// return &x; -// } inline colvarvalue const & colvar::cvc::total_force() const { return ft; } + inline colvarvalue const & colvar::cvc::Jacobian_derivative() const { return jd; } -inline cvm::real colvar::cvc::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return x1.dist2(x2); -} - -inline colvarvalue colvar::cvc::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return x1.dist2_grad(x2); -} - -inline colvarvalue colvar::cvc::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return x2.dist2_grad(x1); -} - -inline void colvar::cvc::wrap(colvarvalue &x) const -{ - return; -} - /// \brief Colvar component: distance between the centers of mass of /// two groups (colvarvalue::type_scalar type, range [0:*)) @@ -312,7 +288,7 @@ protected: public: distance(std::string const &conf); distance(); - virtual inline ~distance() {} + virtual ~distance() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -327,6 +303,7 @@ public: }; + // \brief Colvar component: distance vector between centers of mass // of two groups (\link colvarvalue::type_3vector \endlink type, // range (-*:*)x(-*:*)x(-*:*)) @@ -336,7 +313,7 @@ class colvar::distance_vec public: distance_vec(std::string const &conf); distance_vec(); - virtual inline ~distance_vec() {} + virtual ~distance_vec() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -352,6 +329,7 @@ public: }; + /// \brief Colvar component: distance unit vector (direction) between /// centers of mass of two groups (colvarvalue::type_unit3vector type, /// range [-1:1]x[-1:1]x[-1:1]) @@ -361,19 +339,14 @@ class colvar::distance_dir public: distance_dir(std::string const &conf); distance_dir(); - virtual inline ~distance_dir() {} + virtual ~distance_dir() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); - virtual cvm::real dist2(colvarvalue const &x1, - colvarvalue const &x2) const; - virtual colvarvalue dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const; - virtual colvarvalue dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const; }; + /// \brief Colvar component: projection of the distance vector along /// an axis(colvarvalue::type_scalar type, range (-*:*)) class colvar::distance_z @@ -399,7 +372,7 @@ protected: public: distance_z(std::string const &conf); distance_z(); - virtual inline ~distance_z() {} + virtual ~distance_z() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -416,6 +389,7 @@ public: }; + /// \brief Colvar component: projection of the distance vector on a /// plane (colvarvalue::type_scalar type, range [0:*)) class colvar::distance_xy @@ -429,7 +403,7 @@ protected: public: distance_xy(std::string const &conf); distance_xy(); - virtual inline ~distance_xy() {} + virtual ~distance_xy() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -444,6 +418,7 @@ public: }; + /// \brief Colvar component: average distance between two groups of atoms, weighted as the sixth power, /// as in NMR refinements(colvarvalue::type_scalar type, range (0:*)) class colvar::distance_inv @@ -455,7 +430,7 @@ protected: public: distance_inv(std::string const &conf); distance_inv(); - virtual inline ~distance_inv() {} + virtual ~distance_inv() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -468,6 +443,7 @@ public: }; + /// \brief Colvar component: N1xN2 vector of pairwise distances /// (colvarvalue::type_vector type, range (0:*) for each component) class colvar::distance_pairs @@ -483,16 +459,10 @@ protected: public: distance_pairs(std::string const &conf); distance_pairs(); - virtual inline ~distance_pairs() {} + virtual ~distance_pairs() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); - virtual cvm::real dist2(colvarvalue const &x1, - colvarvalue const &x2) const; - virtual colvarvalue dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const; - virtual colvarvalue dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const; }; @@ -509,7 +479,7 @@ public: /// Constructor gyration(std::string const &conf); gyration(); - virtual inline ~gyration() {} + virtual ~gyration() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -524,6 +494,7 @@ public: }; + /// \brief Colvar component: moment of inertia of an atom group /// (colvarvalue::type_scalar type, range [0:*)) class colvar::inertia @@ -533,7 +504,7 @@ public: /// Constructor inertia(std::string const &conf); inertia(); - virtual inline ~inertia() {} + virtual ~inertia() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -546,6 +517,7 @@ public: }; + /// \brief Colvar component: moment of inertia of an atom group /// around a user-defined axis (colvarvalue::type_scalar type, range [0:*)) class colvar::inertia_z @@ -558,7 +530,7 @@ public: /// Constructor inertia_z(std::string const &conf); inertia_z(); - virtual inline ~inertia_z() {} + virtual ~inertia_z() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -571,6 +543,7 @@ public: }; + /// \brief Colvar component: projection of 3N coordinates onto an /// eigenvector(colvarvalue::type_scalar type, range (-*:*)) class colvar::eigenvector @@ -597,7 +570,7 @@ public: /// Constructor eigenvector(std::string const &conf); - virtual inline ~eigenvector() {} + virtual ~eigenvector() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -645,7 +618,7 @@ public: /// \brief Initialize the three groups after three atoms angle(cvm::atom const &a1, cvm::atom const &a2, cvm::atom const &a3); angle(); - virtual inline ~angle() {} + virtual ~angle() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -659,6 +632,8 @@ public: colvarvalue const &x2) const; }; + + /// \brief Colvar component: angle between the dipole of a molecule and an axis /// formed by two groups of atoms(colvarvalue::type_scalar type, range [0:PI]) class colvar::dipole_angle @@ -691,7 +666,7 @@ public: /// \brief Initialize the three groups after three atoms dipole_angle (cvm::atom const &a1, cvm::atom const &a2, cvm::atom const &a3); dipole_angle(); - virtual inline ~dipole_angle() {} + virtual ~dipole_angle() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force (colvarvalue const &force); @@ -703,6 +678,8 @@ public: colvarvalue const &x2) const; }; + + /// \brief Colvar component: dihedral between the centers of mass of /// four groups (colvarvalue::type_scalar type, range [-PI:PI]) class colvar::dihedral @@ -732,7 +709,7 @@ public: /// \brief Initialize the four groups after four atoms dihedral(cvm::atom const &a1, cvm::atom const &a2, cvm::atom const &a3, cvm::atom const &a4); dihedral(); - virtual inline ~dihedral() {} + virtual ~dihedral() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -753,6 +730,7 @@ public: }; + /// \brief Colvar component: coordination number between two groups /// (colvarvalue::type_scalar type, range [0:N1*N2]) class colvar::coordnum @@ -781,7 +759,7 @@ public: /// Constructor coordnum(std::string const &conf); coordnum(); - virtual inline ~coordnum() {} + virtual ~coordnum() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -812,6 +790,8 @@ public: colvarvalue const &x2) const; }; + + /// \brief Colvar component: self-coordination number within a group /// (colvarvalue::type_scalar type, range [0:N*(N-1)/2]) class colvar::selfcoordnum @@ -830,7 +810,7 @@ public: /// Constructor selfcoordnum(std::string const &conf); selfcoordnum(); - virtual inline ~selfcoordnum() {} + virtual ~selfcoordnum() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -852,6 +832,7 @@ public: }; + /// \brief Colvar component: coordination number between two groups /// (colvarvalue::type_scalar type, range [0:N1*N2]) class colvar::groupcoordnum @@ -873,7 +854,7 @@ public: /// Constructor groupcoordnum(std::string const &conf); groupcoordnum(); - virtual inline ~groupcoordnum() {} + virtual ~groupcoordnum() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -896,6 +877,7 @@ public: static cvm::real switching_function(cvm::rvector const &r0_vec, int const &exp_num, int const &exp_den, cvm::atom &A1, cvm::atom &A2); + */ virtual cvm::real dist2(colvarvalue const &x1, colvarvalue const &x2) const; @@ -903,10 +885,10 @@ public: colvarvalue const &x2) const; virtual colvarvalue dist2_rgrad(colvarvalue const &x1, colvarvalue const &x2) const; - */ }; + /// \brief Colvar component: hydrogen bond, defined as the product of /// a colvar::coordnum and 1/2*(1-cos((180-ang)/ang_tol)) /// (colvarvalue::type_scalar type, range [0:1]) @@ -941,6 +923,7 @@ public: }; + /// \brief Colvar component: alpha helix content of a contiguous /// segment of 5 or more residues, implemented as a sum of phi/psi /// dihedral angles and hydrogen bonds (colvarvalue::type_scalar type, @@ -969,7 +952,7 @@ public: // alpha_dihedrals (std::string const &conf); // alpha_dihedrals(); -// virtual inline ~alpha_dihedrals() {} +// virtual ~alpha_dihedrals() {} // virtual void calc_value(); // virtual void calc_gradients(); // virtual void apply_force (colvarvalue const &force); @@ -982,6 +965,7 @@ public: // }; + /// \brief Colvar component: alpha helix content of a contiguous /// segment of 5 or more residues, implemented as a sum of Ca-Ca-Ca /// angles and hydrogen bonds (colvarvalue::type_scalar type, range @@ -1022,6 +1006,8 @@ public: colvarvalue const &x2) const; }; + + /// \brief Colvar component: dihedPC /// Projection of the config onto a dihedral principal component /// See e.g. Altis et al., J. Chem. Phys 126, 244111 (2007) @@ -1050,6 +1036,8 @@ public: colvarvalue const &x2) const; }; + + /// \brief Colvar component: orientation in space of an atom group, /// with respect to a set of reference coordinates /// (colvarvalue::type_quaternion type, range @@ -1078,7 +1066,7 @@ public: orientation(std::string const &conf); orientation(); - virtual inline ~orientation() {} + virtual ~orientation() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -1091,6 +1079,7 @@ public: }; + /// \brief Colvar component: angle of rotation with respect to a set /// of reference coordinates (colvarvalue::type_scalar type, range /// [0:PI)) @@ -1101,7 +1090,7 @@ public: orientation_angle(std::string const &conf); orientation_angle(); - virtual inline ~orientation_angle() {} + virtual ~orientation_angle() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -1114,6 +1103,7 @@ public: }; + /// \brief Colvar component: cosine of the angle of rotation with respect to a set /// of reference coordinates (colvarvalue::type_scalar type, range /// [-1:1]) @@ -1124,7 +1114,7 @@ public: orientation_proj(std::string const &conf); orientation_proj(); - virtual inline ~orientation_proj() {} + virtual ~orientation_proj() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -1137,6 +1127,7 @@ public: }; + /// \brief Colvar component: projection of the orientation vector onto /// a predefined axis (colvarvalue::type_scalar type, range [-1:1]) class colvar::tilt @@ -1150,7 +1141,7 @@ public: tilt(std::string const &conf); tilt(); - virtual inline ~tilt() {} + virtual ~tilt() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -1177,7 +1168,7 @@ public: spin_angle(std::string const &conf); spin_angle(); - virtual inline ~spin_angle() {} + virtual ~spin_angle() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -1215,7 +1206,7 @@ public: /// Constructor rmsd(std::string const &conf); - virtual inline ~rmsd() {} + virtual ~rmsd() {} virtual void calc_value(); virtual void calc_gradients(); virtual void calc_force_invgrads(); @@ -1230,6 +1221,7 @@ public: }; + // \brief Colvar component: flat vector of Cartesian coordinates // Mostly useful to compute scripted colvar values class colvar::cartesian @@ -1243,7 +1235,7 @@ protected: public: cartesian(std::string const &conf); cartesian(); - virtual inline ~cartesian() {} + virtual ~cartesian() {} virtual void calc_value(); virtual void calc_gradients(); virtual void apply_force(colvarvalue const &force); @@ -1260,255 +1252,26 @@ public: #define simple_scalar_dist_functions(TYPE) \ \ - inline cvm::real colvar::TYPE::dist2(colvarvalue const &x1, \ - colvarvalue const &x2) const \ + \ + cvm::real colvar::TYPE::dist2(colvarvalue const &x1, \ + colvarvalue const &x2) const \ { \ return (x1.real_value - x2.real_value)*(x1.real_value - x2.real_value); \ } \ \ - inline colvarvalue colvar::TYPE::dist2_lgrad(colvarvalue const &x1, \ - colvarvalue const &x2) const \ + \ + colvarvalue colvar::TYPE::dist2_lgrad(colvarvalue const &x1, \ + colvarvalue const &x2) const \ { \ return 2.0 * (x1.real_value - x2.real_value); \ } \ \ - inline colvarvalue colvar::TYPE::dist2_rgrad(colvarvalue const &x1, \ - colvarvalue const &x2) const \ + \ + colvarvalue colvar::TYPE::dist2_rgrad(colvarvalue const &x1, \ + colvarvalue const &x2) const \ { \ return this->dist2_lgrad(x2, x1); \ } \ \ -simple_scalar_dist_functions(distance) -// NOTE: distance_z has explicit functions, see below -simple_scalar_dist_functions(distance_xy) -simple_scalar_dist_functions(distance_inv) -simple_scalar_dist_functions(angle) -simple_scalar_dist_functions(dipole_angle) -simple_scalar_dist_functions(coordnum) -simple_scalar_dist_functions(selfcoordnum) -simple_scalar_dist_functions(h_bond) -simple_scalar_dist_functions(gyration) -simple_scalar_dist_functions(inertia) -simple_scalar_dist_functions(inertia_z) -simple_scalar_dist_functions(rmsd) -simple_scalar_dist_functions(orientation_angle) -simple_scalar_dist_functions(orientation_proj) -simple_scalar_dist_functions(tilt) -simple_scalar_dist_functions(eigenvector) -// simple_scalar_dist_functions (alpha_dihedrals) -simple_scalar_dist_functions(alpha_angles) -simple_scalar_dist_functions(dihedPC) - - -// metrics functions for cvc implementations with a periodicity - -inline cvm::real colvar::dihedral::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ -cvm::real diff = x1.real_value - x2.real_value; -diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); -return diff * diff; -} - -inline colvarvalue colvar::dihedral::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ -cvm::real diff = x1.real_value - x2.real_value; -diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); -return 2.0 * diff; -} - -inline colvarvalue colvar::dihedral::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ -cvm::real diff = x1.real_value - x2.real_value; -diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); -return (-2.0) * diff; -} - -inline void colvar::dihedral::wrap(colvarvalue &x) const -{ -if ((x.real_value - wrap_center) >= 180.0) { -x.real_value -= 360.0; -return; -} - -if ((x.real_value - wrap_center) < -180.0) { -x.real_value += 360.0; -return; -} - -return; -} - -inline cvm::real colvar::spin_angle::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ -cvm::real diff = x1.real_value - x2.real_value; -diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); -return diff * diff; -} - -inline colvarvalue colvar::spin_angle::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ -cvm::real diff = x1.real_value - x2.real_value; -diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); -return 2.0 * diff; -} - -inline colvarvalue colvar::spin_angle::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ -cvm::real diff = x1.real_value - x2.real_value; -diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); -return (-2.0) * diff; -} - -inline void colvar::spin_angle::wrap(colvarvalue &x) const -{ -if ((x.real_value - wrap_center) >= 180.0) { -x.real_value -= 360.0; -return; -} - -if ((x.real_value - wrap_center) < -180.0) { -x.real_value += 360.0; -return; -} - -return; -} - - -// Projected distance -// Differences should always be wrapped around 0 (ignoring wrap_center) -inline cvm::real colvar::distance_z::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ - cvm::real diff = x1.real_value - x2.real_value; - if (period != 0.0) { - cvm::real shift = std::floor(diff/period + 0.5); - diff -= shift * period; - } - return diff * diff; -} - -inline colvarvalue colvar::distance_z::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - cvm::real diff = x1.real_value - x2.real_value; - if (period != 0.0) { - cvm::real shift = std::floor(diff/period + 0.5); - diff -= shift * period; - } - return 2.0 * diff; -} - -inline colvarvalue colvar::distance_z::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - cvm::real diff = x1.real_value - x2.real_value; - if (period != 0.0) { - cvm::real shift = std::floor(diff/period + 0.5); - diff -= shift * period; - } - return (-2.0) * diff; -} - -inline void colvar::distance_z::wrap(colvarvalue &x) const -{ - if (! this->b_periodic) { - // don't wrap if the period has not been set - return; - } - - cvm::real shift = std::floor((x.real_value - wrap_center) / period + 0.5); - x.real_value -= shift * period; - return; -} - - -// distance between three dimensional vectors -// -// TODO apply PBC to distance_vec -// Note: differences should be centered around (0, 0, 0)! - -inline cvm::real colvar::distance_vec::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return cvm::position_dist2(x1.rvector_value, x2.rvector_value); -} - -inline colvarvalue colvar::distance_vec::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return 2.0 * cvm::position_distance(x2.rvector_value, x1.rvector_value); -} - -inline colvarvalue colvar::distance_vec::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return 2.0 * cvm::position_distance(x2.rvector_value, x1.rvector_value); -} - -inline cvm::real colvar::distance_dir::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return (x1.rvector_value - x2.rvector_value).norm2(); -} - -inline colvarvalue colvar::distance_dir::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return colvarvalue((x1.rvector_value - x2.rvector_value), colvarvalue::type_unit3vector); -} - -inline colvarvalue colvar::distance_dir::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return colvarvalue((x2.rvector_value - x1.rvector_value), colvarvalue::type_unit3vector); -} - -inline cvm::real colvar::distance_pairs::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return (x1.vector1d_value - x2.vector1d_value).norm2(); -} - -inline colvarvalue colvar::distance_pairs::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return colvarvalue((x1.vector1d_value - x2.vector1d_value), colvarvalue::type_vector); -} - -inline colvarvalue colvar::distance_pairs::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return colvarvalue((x2.vector1d_value - x1.vector1d_value), colvarvalue::type_vector); -} - - -// distance between quaternions - -inline cvm::real colvar::orientation::dist2(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return x1.quaternion_value.dist2(x2); -} - -inline colvarvalue colvar::orientation::dist2_lgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return x1.quaternion_value.dist2_grad(x2); -} - -inline colvarvalue colvar::orientation::dist2_rgrad(colvarvalue const &x1, - colvarvalue const &x2) const -{ - return x2.quaternion_value.dist2_grad(x1); -} - - #endif diff --git a/lib/colvars/colvarcomp_angles.cpp b/lib/colvars/colvarcomp_angles.cpp index 6b05fb16eb..4c3390a8bd 100644 --- a/lib/colvars/colvarcomp_angles.cpp +++ b/lib/colvars/colvarcomp_angles.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvar.h" #include "colvarcomp.h" @@ -7,6 +14,7 @@ #include + colvar::angle::angle(std::string const &conf) : cvc(conf) { @@ -85,6 +93,7 @@ void colvar::angle::calc_gradients() group3->set_weighted_gradient(dxdr3); } + void colvar::angle::calc_force_invgrads() { // This uses a force measurement on groups 1 and 3 only @@ -107,6 +116,7 @@ void colvar::angle::calc_force_invgrads() return; } + void colvar::angle::calc_Jacobian_derivative() { // det(J) = (2 pi) r^2 * sin(theta) @@ -129,6 +139,8 @@ void colvar::angle::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(angle) + colvar::dipole_angle::dipole_angle(std::string const &conf) @@ -235,6 +247,8 @@ void colvar::dipole_angle::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(dipole_angle) + colvar::dihedral::dihedral(std::string const &conf) @@ -453,3 +467,46 @@ void colvar::dihedral::apply_force(colvarvalue const &force) } +// metrics functions for cvc implementations with a periodicity + +cvm::real colvar::dihedral::dist2(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); + return diff * diff; +} + + +colvarvalue colvar::dihedral::dist2_lgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); + return 2.0 * diff; +} + + +colvarvalue colvar::dihedral::dist2_rgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); + return (-2.0) * diff; +} + + +void colvar::dihedral::wrap(colvarvalue &x) const +{ + if ((x.real_value - wrap_center) >= 180.0) { + x.real_value -= 360.0; + return; + } + + if ((x.real_value - wrap_center) < -180.0) { + x.real_value += 360.0; + return; + } + + return; +} diff --git a/lib/colvars/colvarcomp_coordnums.cpp b/lib/colvars/colvarcomp_coordnums.cpp index d5e87e6b1e..987a16a816 100644 --- a/lib/colvars/colvarcomp_coordnums.cpp +++ b/lib/colvars/colvarcomp_coordnums.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include "colvarmodule.h" @@ -13,10 +20,10 @@ template cvm::real colvar::coordnum::switching_function(cvm::real const &r0, - int const &en, - int const &ed, - cvm::atom &A1, - cvm::atom &A2) + int const &en, + int const &ed, + cvm::atom &A1, + cvm::atom &A2) { cvm::rvector const diff = cvm::position_distance(A1.pos, A2.pos); cvm::real const l2 = diff.norm2()/(r0*r0); @@ -42,10 +49,10 @@ cvm::real colvar::coordnum::switching_function(cvm::real const &r0, template cvm::real colvar::coordnum::switching_function(cvm::rvector const &r0_vec, - int const &en, - int const &ed, - cvm::atom &A1, - cvm::atom &A2) + int const &en, + int const &ed, + cvm::atom &A1, + cvm::atom &A2) { cvm::rvector const diff = cvm::position_distance(A1.pos, A2.pos); cvm::rvector const scal_diff(diff.x/r0_vec.x, diff.y/r0_vec.y, diff.z/r0_vec.z); @@ -190,6 +197,7 @@ void colvar::coordnum::calc_gradients() } } + void colvar::coordnum::apply_force(colvarvalue const &force) { if (!group1->noforce) @@ -200,6 +208,9 @@ void colvar::coordnum::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(coordnum) + + // h_bond member functions @@ -252,6 +263,7 @@ colvar::h_bond::h_bond(cvm::atom const &acceptor, atom_groups[0]->add_atom(donor); } + colvar::h_bond::h_bond() : cvc() { @@ -284,6 +296,8 @@ void colvar::h_bond::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(h_bond) + colvar::selfcoordnum::selfcoordnum(std::string const &conf) @@ -339,6 +353,9 @@ void colvar::selfcoordnum::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(selfcoordnum) + + // groupcoordnum member functions colvar::groupcoordnum::groupcoordnum(std::string const &conf) : distance(conf), b_anisotropic(false) @@ -448,7 +465,6 @@ cvm::real colvar::groupcoordnum::switching_function(cvm::rvector const &r0_vec, #endif - void colvar::groupcoordnum::calc_value() { @@ -460,7 +476,6 @@ void colvar::groupcoordnum::calc_value() x.real_value = coordnum::switching_function(r0, en, ed, group1_com_atom, group2_com_atom); - } @@ -486,3 +501,6 @@ void colvar::groupcoordnum::apply_force(colvarvalue const &force) if (!group2->noforce) group2->apply_colvar_force(force.real_value); } + + +simple_scalar_dist_functions(groupcoordnum) diff --git a/lib/colvars/colvarcomp_distances.cpp b/lib/colvars/colvarcomp_distances.cpp index 9ef96af2d3..7481dd360b 100644 --- a/lib/colvars/colvarcomp_distances.cpp +++ b/lib/colvars/colvarcomp_distances.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include "colvarmodule.h" @@ -91,6 +98,9 @@ void colvar::distance::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(distance) + + colvar::distance_vec::distance_vec(std::string const &conf) : distance(conf) @@ -138,6 +148,27 @@ void colvar::distance_vec::apply_force(colvarvalue const &force) } +cvm::real colvar::distance_vec::dist2(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return cvm::position_dist2(x1.rvector_value, x2.rvector_value); +} + + +colvarvalue colvar::distance_vec::dist2_lgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return 2.0 * cvm::position_distance(x2.rvector_value, x1.rvector_value); +} + + +colvarvalue colvar::distance_vec::dist2_rgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return 2.0 * cvm::position_distance(x2.rvector_value, x1.rvector_value); +} + + colvar::distance_z::distance_z(std::string const &conf) : cvc(conf) @@ -191,6 +222,7 @@ colvar::distance_z::distance_z(std::string const &conf) } + colvar::distance_z::distance_z() { function_type = "distance_z"; @@ -200,6 +232,7 @@ colvar::distance_z::distance_z() x.type(colvarvalue::type_scalar); } + void colvar::distance_z::calc_value() { if (fixed_axis) { @@ -227,6 +260,7 @@ void colvar::distance_z::calc_value() this->wrap(x); } + void colvar::distance_z::calc_gradients() { main->set_weighted_gradient( axis ); @@ -248,6 +282,7 @@ void colvar::distance_z::calc_gradients() } } + void colvar::distance_z::calc_force_invgrads() { main->read_total_forces(); @@ -260,11 +295,13 @@ void colvar::distance_z::calc_force_invgrads() } } + void colvar::distance_z::calc_Jacobian_derivative() { jd.real_value = 0.0; } + void colvar::distance_z::apply_force(colvarvalue const &force) { if (!ref1->noforce) @@ -278,6 +315,56 @@ void colvar::distance_z::apply_force(colvarvalue const &force) } +// Differences should always be wrapped around 0 (ignoring wrap_center) +cvm::real colvar::distance_z::dist2(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + if (b_periodic) { + cvm::real shift = std::floor(diff/period + 0.5); + diff -= shift * period; + } + return diff * diff; +} + + +colvarvalue colvar::distance_z::dist2_lgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + if (b_periodic) { + cvm::real shift = std::floor(diff/period + 0.5); + diff -= shift * period; + } + return 2.0 * diff; +} + + +colvarvalue colvar::distance_z::dist2_rgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + if (b_periodic) { + cvm::real shift = std::floor(diff/period + 0.5); + diff -= shift * period; + } + return (-2.0) * diff; +} + + +void colvar::distance_z::wrap(colvarvalue &x) const +{ + if (!b_periodic) { + // don't wrap if the period has not been set + return; + } + + cvm::real shift = std::floor((x.real_value - wrap_center) / period + 0.5); + x.real_value -= shift * period; + return; +} + + colvar::distance_xy::distance_xy(std::string const &conf) : distance_z(conf) @@ -289,6 +376,7 @@ colvar::distance_xy::distance_xy(std::string const &conf) x.type(colvarvalue::type_scalar); } + colvar::distance_xy::distance_xy() : distance_z() { @@ -299,6 +387,7 @@ colvar::distance_xy::distance_xy() x.type(colvarvalue::type_scalar); } + void colvar::distance_xy::calc_value() { if (b_no_PBC) { @@ -321,6 +410,7 @@ void colvar::distance_xy::calc_value() x.real_value = dist_v_ortho.norm(); } + void colvar::distance_xy::calc_gradients() { // Intermediate quantity (r_P3 / r_12 where P is the projection @@ -348,6 +438,7 @@ void colvar::distance_xy::calc_gradients() } } + void colvar::distance_xy::calc_force_invgrads() { main->read_total_forces(); @@ -360,11 +451,13 @@ void colvar::distance_xy::calc_force_invgrads() } } + void colvar::distance_xy::calc_Jacobian_derivative() { jd.real_value = x.real_value ? (1.0 / x.real_value) : 0.0; } + void colvar::distance_xy::apply_force(colvarvalue const &force) { if (!ref1->noforce) @@ -378,6 +471,9 @@ void colvar::distance_xy::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(distance_xy) + + colvar::distance_dir::distance_dir(std::string const &conf) : distance(conf) @@ -403,7 +499,7 @@ void colvar::distance_dir::calc_value() dist_v = group2->center_of_mass() - group1->center_of_mass(); } else { dist_v = cvm::position_distance(group1->center_of_mass(), - group2->center_of_mass()); + group2->center_of_mass()); } x.rvector_value = dist_v.unit(); } @@ -460,6 +556,7 @@ colvar::distance_inv::distance_inv(std::string const &conf) x.type(colvarvalue::type_scalar); } + colvar::distance_inv::distance_inv() { function_type = "distance_inv"; @@ -467,6 +564,7 @@ colvar::distance_inv::distance_inv() x.type(colvarvalue::type_scalar); } + void colvar::distance_inv::calc_value() { x.real_value = 0.0; @@ -504,6 +602,7 @@ void colvar::distance_inv::calc_value() x.real_value = std::pow(x.real_value, -1.0/(cvm::real(exponent))); } + void colvar::distance_inv::calc_gradients() { cvm::real const dxdsum = (-1.0/(cvm::real(exponent))) * std::pow(x.real_value, exponent+1) / cvm::real(group1->size() * group2->size()); @@ -515,6 +614,7 @@ void colvar::distance_inv::calc_gradients() } } + void colvar::distance_inv::apply_force(colvarvalue const &force) { if (!group1->noforce) @@ -525,6 +625,9 @@ void colvar::distance_inv::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(distance_inv) + + colvar::distance_pairs::distance_pairs(std::string const &conf) : cvc(conf) @@ -579,11 +682,13 @@ void colvar::distance_pairs::calc_value() } } + void colvar::distance_pairs::calc_gradients() { // will be calculated on the fly in apply_force() } + void colvar::distance_pairs::apply_force(colvarvalue const &force) { if (b_no_PBC) { @@ -608,6 +713,7 @@ void colvar::distance_pairs::apply_force(colvarvalue const &force) } + colvar::gyration::gyration(std::string const &conf) : cvc(conf) { @@ -682,6 +788,9 @@ void colvar::gyration::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(gyration) + + colvar::inertia::inertia(std::string const &conf) : gyration(conf) @@ -722,6 +831,10 @@ void colvar::inertia::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(inertia_z) + + + colvar::inertia_z::inertia_z(std::string const &conf) : inertia(conf) { @@ -772,6 +885,10 @@ void colvar::inertia_z::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(inertia) + + + colvar::rmsd::rmsd(std::string const &conf) : cvc(conf) @@ -971,6 +1088,8 @@ void colvar::rmsd::calc_Jacobian_derivative() } +simple_scalar_dist_functions(rmsd) + colvar::eigenvector::eigenvector(std::string const &conf) @@ -1255,6 +1374,10 @@ void colvar::eigenvector::calc_Jacobian_derivative() } +simple_scalar_dist_functions(eigenvector) + + + colvar::cartesian::cartesian(std::string const &conf) : cvc(conf) { diff --git a/lib/colvars/colvarcomp_protein.cpp b/lib/colvars/colvarcomp_protein.cpp index e5db3a4b50..393c7dcf9a 100644 --- a/lib/colvars/colvarcomp_protein.cpp +++ b/lib/colvars/colvarcomp_protein.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include "colvarmodule.h" @@ -119,6 +126,7 @@ colvar::alpha_angles::alpha_angles() x.type(colvarvalue::type_scalar); } + colvar::alpha_angles::~alpha_angles() { while (theta.size() != 0) { @@ -131,6 +139,7 @@ colvar::alpha_angles::~alpha_angles() } } + void colvar::alpha_angles::calc_value() { x.real_value = 0.0; @@ -222,6 +231,10 @@ void colvar::alpha_angles::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(alpha_angles) + + + ////////////////////////////////////////////////////////////////////// // dihedral principal component ////////////////////////////////////////////////////////////////////// @@ -337,14 +350,22 @@ colvar::dihedPC::dihedPC(std::string const &conf) for (size_t i = 0; i < residues.size()-1; i++) { // Psi theta.push_back(new colvar::dihedral(cvm::atom(r[i ], "N", sid), - cvm::atom(r[i ], "CA", sid), - cvm::atom(r[i ], "C", sid), - cvm::atom(r[i+1], "N", sid))); + cvm::atom(r[i ], "CA", sid), + cvm::atom(r[i ], "C", sid), + cvm::atom(r[i+1], "N", sid))); + atom_groups.push_back(theta.back()->atom_groups[0]); + atom_groups.push_back(theta.back()->atom_groups[1]); + atom_groups.push_back(theta.back()->atom_groups[2]); + atom_groups.push_back(theta.back()->atom_groups[3]); // Phi (next res) theta.push_back(new colvar::dihedral(cvm::atom(r[i ], "C", sid), - cvm::atom(r[i+1], "N", sid), - cvm::atom(r[i+1], "CA", sid), - cvm::atom(r[i+1], "C", sid))); + cvm::atom(r[i+1], "N", sid), + cvm::atom(r[i+1], "CA", sid), + cvm::atom(r[i+1], "C", sid))); + atom_groups.push_back(theta.back()->atom_groups[0]); + atom_groups.push_back(theta.back()->atom_groups[1]); + atom_groups.push_back(theta.back()->atom_groups[2]); + atom_groups.push_back(theta.back()->atom_groups[3]); } if (cvm::debug()) @@ -400,3 +421,6 @@ void colvar::dihedPC::apply_force(colvarvalue const &force) coeffs[2*i+1] * dsindt) * force); } } + + +simple_scalar_dist_functions(dihedPC) diff --git a/lib/colvars/colvarcomp_rotations.cpp b/lib/colvars/colvarcomp_rotations.cpp index a3cbbb2908..936e770169 100644 --- a/lib/colvars/colvarcomp_rotations.cpp +++ b/lib/colvars/colvarcomp_rotations.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include "colvarmodule.h" @@ -123,6 +130,27 @@ void colvar::orientation::apply_force(colvarvalue const &force) } +cvm::real colvar::orientation::dist2(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return x1.quaternion_value.dist2(x2); +} + + +colvarvalue colvar::orientation::dist2_lgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return x1.quaternion_value.dist2_grad(x2); +} + + +colvarvalue colvar::orientation::dist2_rgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + return x2.quaternion_value.dist2_grad(x1); +} + + colvar::orientation_angle::orientation_angle(std::string const &conf) : orientation(conf) @@ -176,6 +204,9 @@ void colvar::orientation_angle::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(orientation_angle) + + colvar::orientation_proj::orientation_proj(std::string const &conf) : orientation(conf) @@ -220,6 +251,9 @@ void colvar::orientation_proj::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(orientation_proj) + + colvar::tilt::tilt(std::string const &conf) : orientation(conf) @@ -278,6 +312,9 @@ void colvar::tilt::apply_force(colvarvalue const &force) } +simple_scalar_dist_functions(tilt) + + colvar::spin_angle::spin_angle(std::string const &conf) : orientation(conf) @@ -339,3 +376,46 @@ void colvar::spin_angle::apply_force(colvarvalue const &force) atoms->apply_colvar_force(fw); } } + + +cvm::real colvar::spin_angle::dist2(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); + return diff * diff; +} + + +colvarvalue colvar::spin_angle::dist2_lgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); + return 2.0 * diff; +} + + +colvarvalue colvar::spin_angle::dist2_rgrad(colvarvalue const &x1, + colvarvalue const &x2) const +{ + cvm::real diff = x1.real_value - x2.real_value; + diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); + return (-2.0) * diff; +} + + +void colvar::spin_angle::wrap(colvarvalue &x) const +{ + if ((x.real_value - wrap_center) >= 180.0) { + x.real_value -= 360.0; + return; + } + + if ((x.real_value - wrap_center) < -180.0) { + x.real_value += 360.0; + return; + } + + return; +} diff --git a/lib/colvars/colvardeps.cpp b/lib/colvars/colvardeps.cpp index a44f86c292..e3ccd4ecf5 100644 --- a/lib/colvars/colvardeps.cpp +++ b/lib/colvars/colvardeps.cpp @@ -1,3 +1,13 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + + #include "colvardeps.h" @@ -219,6 +229,9 @@ void colvardeps::init_cvb_requires() { f_description(f_cvb_history_dependent, "history-dependent"); + f_description(f_cvb_scalar_variables, "require scalar variables"); + f_req_children(f_cvb_scalar_variables, f_cv_scalar); + // Initialize feature_states for each instance feature_states.reserve(f_cvb_ntot); for (i = 0; i < f_cvb_ntot; i++) { @@ -229,6 +242,9 @@ void colvardeps::init_cvb_requires() { // some biases are not history-dependent feature_states[f_cvb_history_dependent]->available = false; + + // by default, biases should work with vector variables, too + feature_states[f_cvb_scalar_variables]->available = false; } @@ -321,6 +337,7 @@ void colvardeps::init_cv_requires() { // The features below are set programmatically f_description(f_cv_scripted, "scripted"); f_description(f_cv_periodic, "periodic"); + f_req_self(f_cv_periodic, f_cv_homogeneous); f_description(f_cv_scalar, "scalar"); f_description(f_cv_linear, "linear"); f_description(f_cv_homogeneous, "homogeneous"); @@ -407,6 +424,11 @@ void colvardeps::init_cvc_requires() { // Each cvc specifies what other features are available feature_states[f_cvc_active]->available = true; feature_states[f_cvc_gradient]->available = true; + + // Features that are implemented by default if their requirements are + feature_states[f_cvc_one_site_total_force]->available = true; + + // Features That are implemented only for certain simulation engine configurations feature_states[f_cvc_scalable_com]->available = (cvm::proxy->scalable_group_coms() == COLVARS_OK); feature_states[f_cvc_scalable]->available = feature_states[f_cvc_scalable_com]->available; } diff --git a/lib/colvars/colvardeps.h b/lib/colvars/colvardeps.h index 31dfd0e302..4ef27ded85 100644 --- a/lib/colvars/colvardeps.h +++ b/lib/colvars/colvardeps.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARDEPS_H #define COLVARDEPS_H @@ -157,6 +164,7 @@ public: f_cvb_apply_force, // will apply forces f_cvb_get_total_force, // requires total forces f_cvb_history_dependent, // depends on simulation history + f_cvb_scalar_variables, // requires scalar colvars f_cvb_ntot }; diff --git a/lib/colvars/colvargrid.cpp b/lib/colvars/colvargrid.cpp index ca2d935e1c..3b25acd2ef 100644 --- a/lib/colvars/colvargrid.cpp +++ b/lib/colvars/colvargrid.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include "colvarmodule.h" #include "colvarvalue.h" #include "colvarparse.h" @@ -73,6 +80,21 @@ cvm::real colvar_grid_scalar::minimum_value() const return min; } +cvm::real colvar_grid_scalar::minimum_pos_value() const +{ + cvm::real minpos = data[0]; + size_t i; + for (i = 0; i < nt; i++) { + if(data[i] > 0) { + minpos = data[i]; + break; + } + } + for (i = 0; i < nt; i++) { + if (data[i] > 0 && data[i] < minpos) minpos = data[i]; + } + return minpos; +} cvm::real colvar_grid_scalar::integral() const { diff --git a/lib/colvars/colvargrid.h b/lib/colvars/colvargrid.h index 135e405ee7..d4b9295c6e 100644 --- a/lib/colvars/colvargrid.h +++ b/lib/colvars/colvargrid.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARGRID_H #define COLVARGRID_H @@ -378,6 +385,13 @@ public: return value_to_bin_scalar(actual_value[i] ? cv[i]->actual_value() : cv[i]->value(), i); } + /// \brief Report the bin corresponding to the current value of variable i + /// and assign first or last bin if out of boundaries + inline int current_bin_scalar_bound(int const i) const + { + return value_to_bin_scalar_bound(actual_value[i] ? cv[i]->actual_value() : cv[i]->value(), i); + } + /// \brief Report the bin corresponding to the current value of item iv in variable i inline int current_bin_scalar(int const i, int const iv) const { @@ -393,6 +407,16 @@ public: return (int) std::floor( (value.real_value - lower_boundaries[i].real_value) / widths[i] ); } + /// \brief Use the lower boundary and the width to report which bin + /// the provided value is in and assign first or last bin if out of boundaries + inline int value_to_bin_scalar_bound(colvarvalue const &value, const int i) const + { + int bin_index = std::floor( (value.real_value - lower_boundaries[i].real_value) / widths[i] ); + if (bin_index < 0) bin_index=0; + if (bin_index >=int(nx[i])) bin_index=int(nx[i])-1; + return (int) bin_index; + } + /// \brief Same as the standard version, but uses another grid definition inline int value_to_bin_scalar(colvarvalue const &value, colvarvalue const &new_offset, @@ -514,6 +538,13 @@ public: data[i] *= a; } + /// \brief Assign all zero elements a scalar constant (fast loop) + inline void remove_zeros(cvm::real const &a) + { + for (size_t i = 0; i < nt; i++) + if(data[i]==0) data[i] = a; + } + /// \brief Get the bin indices corresponding to the provided values of /// the colvars @@ -537,6 +568,17 @@ public: return index; } + /// \brief Get the bin indices corresponding to the provided values of + /// the colvars and assign first or last bin if out of boundaries + inline std::vector const get_colvars_index_bound() const + { + std::vector index = new_index(); + for (size_t i = 0; i < nd; i++) { + index[i] = current_bin_scalar_bound(i); + } + return index; + } + /// \brief Get the minimal distance (in number of bins) from the /// boundaries; a negative number is returned if the given point is /// off-grid @@ -1169,42 +1211,46 @@ public: inline cvm::real log_gradient_finite_diff(const std::vector &ix0, int n = 0) { - cvm::real A0, A1; - std::vector ix; - - // factor for mesh width, 2.0 for central finite difference - // but only 1.0 on edges for non-PBC coordinates - cvm::real factor; + int A0, A1, A2; + std::vector ix = ix0; if (periodic[n]) { - factor = 2.; - ix = ix0; ix[n]--; wrap(ix); A0 = data[address(ix)]; ix = ix0; ix[n]++; wrap(ix); A1 = data[address(ix)]; - } else { - factor = 0.; - ix = ix0; - if (ix[n] > 0) { // not left edge - ix[n]--; - factor += 1.; + if (A0 * A1 == 0) { + return 0.; // can't handle empty bins + } else { + return (std::log((cvm::real)A1) - std::log((cvm::real)A0)) + / (widths[n] * 2.); } + } else if (ix[n] > 0 && ix[n] < nx[n]-1) { // not an edge + ix[n]--; A0 = data[address(ix)]; ix = ix0; - if (ix[n]+1 < nx[n]) { // not right edge - ix[n]++; - factor += 1.; - } + ix[n]++; A1 = data[address(ix)]; - } - if (A0 == 0 || A1 == 0) { - // can't handle empty bins - return 0.; + if (A0 * A1 == 0) { + return 0.; // can't handle empty bins + } else { + return (std::log((cvm::real)A1) - std::log((cvm::real)A0)) + / (widths[n] * 2.); + } } else { - return (std::log((cvm::real)A1) - std::log((cvm::real)A0)) - / (widths[n] * factor); + // edge: use 2nd order derivative + int increment = (ix[n] == 0 ? 1 : -1); + // move right from left edge, or the other way around + A0 = data[address(ix)]; + ix[n] += increment; A1 = data[address(ix)]; + ix[n] += increment; A2 = data[address(ix)]; + if (A0 * A1 * A2 == 0) { + return 0.; // can't handle empty bins + } else { + return (-1.5 * std::log((cvm::real)A0) + 2. * std::log((cvm::real)A1) + - 0.5 * std::log((cvm::real)A2)) * increment / widths[n]; + } } } }; @@ -1322,6 +1368,9 @@ public: /// \brief Return the lowest value cvm::real minimum_value() const; + /// \brief Return the lowest positive value + cvm::real minimum_pos_value() const; + /// \brief Calculates the integral of the map (uses widths if they are defined) cvm::real integral() const; diff --git a/lib/colvars/colvarmodule.cpp b/lib/colvars/colvarmodule.cpp index 8e110275b2..b9a435152b 100644 --- a/lib/colvars/colvarmodule.cpp +++ b/lib/colvars/colvarmodule.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include @@ -296,6 +303,9 @@ int colvarmodule::parse_biases(std::string const &conf) /// initialize harmonic restraints parse_biases_type(conf, "harmonic", n_rest_biases); + /// initialize harmonic walls restraints + parse_biases_type(conf, "harmonicWalls", n_rest_biases); + /// initialize histograms parse_biases_type(conf, "histogram", n_histo_biases); @@ -562,7 +572,6 @@ int colvarmodule::calc_colvars() colvars_smp_items.reserve(colvars.size()); // set up a vector containing all components - size_t num_colvar_items = 0; cvm::increase_depth(); for (cvi = colvars.begin(); cvi != colvars.end(); cvi++) { @@ -576,8 +585,6 @@ int colvarmodule::calc_colvars() colvars_smp.push_back(*cvi); colvars_smp_items.push_back(icvc); } - - num_colvar_items += num_items; } cvm::decrease_depth(); @@ -641,7 +648,7 @@ int colvarmodule::calc_biases() for (bi = biases.begin(); bi != biases.end(); bi++) { error_code |= (*bi)->update(); if (cvm::get_error()) { - return COLVARS_ERROR; + return error_code; } } cvm::decrease_depth(); @@ -1007,7 +1014,7 @@ std::istream & colvarmodule::read_restart(std::istream &is) for (std::vector::iterator bi = biases.begin(); bi != biases.end(); bi++) { - if (!((*bi)->read_restart(is))) { + if (!((*bi)->read_state(is))) { cvm::error("Error: in reading restart configuration for bias \""+ (*bi)->name+"\".\n", INPUT_ERROR); @@ -1070,15 +1077,15 @@ continue the previous simulation.\n\n"); cvm::log(cvm::line_marker); // update this ahead of time in this special case - output_prefix = proxy->output_prefix(); + output_prefix = proxy->input_prefix(); cvm::log("All output files will now be saved with the prefix \""+output_prefix+".tmp.*\".\n"); - output_prefix = output_prefix+".tmp"; - write_output_files(); cvm::log(cvm::line_marker); cvm::log("Please review the important warning above. After that, you may rename:\n\ \""+output_prefix+".tmp.colvars.state\"\n\ to:\n\ -\""+output_prefix+".colvars.state\"\n"); +\""+ proxy->input_prefix()+".colvars.state\"\n"); + output_prefix = output_prefix+".tmp"; + write_output_files(); cvm::error("Exiting with error until issue is addressed.\n", FATAL_ERROR); } @@ -1120,6 +1127,7 @@ int colvarmodule::write_output_files() bi != biases.end(); bi++) { (*bi)->write_output_files(); + (*bi)->write_state_to_replicas(); } cvm::decrease_depth(); @@ -1212,20 +1220,30 @@ std::ostream & colvarmodule::write_restart(std::ostream &os) << " version " << std::string(COLVARS_VERSION) << "\n" << "}\n\n"; + int error_code = COLVARS_OK; + cvm::increase_depth(); for (std::vector::iterator cvi = colvars.begin(); cvi != colvars.end(); cvi++) { (*cvi)->write_restart(os); + error_code |= (*cvi)->write_output_files(); } for (std::vector::iterator bi = biases.begin(); bi != biases.end(); bi++) { - (*bi)->write_restart(os); + (*bi)->write_state(os); + error_code |= (*bi)->write_state_to_replicas(); + error_code |= (*bi)->write_output_files(); } cvm::decrease_depth(); + if (error_code != COLVARS_OK) { + // TODO make this function return an int instead + os.setstate(std::ios::failbit); + } + return os; } diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index d5907f57e9..c63d04bcc4 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -1,10 +1,17 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARMODULE_H #define COLVARMODULE_H #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2016-10-27" +#define COLVARS_VERSION "2016-12-22" #endif #ifndef COLVARS_DEBUG diff --git a/lib/colvars/colvarparse.cpp b/lib/colvars/colvarparse.cpp index 86cd00ad29..4d2e17f098 100644 --- a/lib/colvars/colvarparse.cpp +++ b/lib/colvars/colvarparse.cpp @@ -1,3 +1,11 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. #include diff --git a/lib/colvars/colvarparse.h b/lib/colvars/colvarparse.h index 892f1632e1..acdc46ddc9 100644 --- a/lib/colvars/colvarparse.h +++ b/lib/colvars/colvarparse.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARPARSE_H #define COLVARPARSE_H diff --git a/lib/colvars/colvarproxy.h b/lib/colvars/colvarproxy.h index 255fba688b..bdf65c0b1f 100644 --- a/lib/colvars/colvarproxy.h +++ b/lib/colvars/colvarproxy.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARPROXY_H #define COLVARPROXY_H @@ -24,11 +31,18 @@ public: /// Pointer to the main object colvarmodule *colvars; - /// Default constructor - inline colvarproxy() : b_smp_active(true), script(NULL) {} + /// Constructor + colvarproxy() + { + colvars = NULL; + b_simulation_running = true; + b_smp_active = true; + script = NULL; + } - /// Default destructor - virtual ~colvarproxy() {} + /// Destructor + virtual ~colvarproxy() + {} /// (Re)initialize required member data after construction virtual int setup() @@ -104,6 +118,19 @@ public: return 0; } +protected: + + /// Whether a simulation is running (and try to prevent irrecovarable errors) + bool b_simulation_running; + +public: + + /// Whether a simulation is running (and try to prevent irrecovarable errors) + virtual bool simulation_running() const + { + return b_simulation_running; + } + protected: /// \brief Currently opened output files: by default, these are ofstream objects. diff --git a/lib/colvars/colvarscript.cpp b/lib/colvars/colvarscript.cpp index a0269aa7a9..ffb83e9780 100644 --- a/lib/colvars/colvarscript.cpp +++ b/lib/colvars/colvarscript.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include #include diff --git a/lib/colvars/colvarscript.h b/lib/colvars/colvarscript.h index 7778c3757f..bfb8381e3b 100644 --- a/lib/colvars/colvarscript.h +++ b/lib/colvars/colvarscript.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARSCRIPT_H #define COLVARSCRIPT_H diff --git a/lib/colvars/colvartypes.cpp b/lib/colvars/colvartypes.cpp index 6f773bd5f7..5200d4d041 100644 --- a/lib/colvars/colvartypes.cpp +++ b/lib/colvars/colvartypes.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include diff --git a/lib/colvars/colvartypes.h b/lib/colvars/colvartypes.h index 2c3d49f686..e0cebb83bc 100644 --- a/lib/colvars/colvartypes.h +++ b/lib/colvars/colvartypes.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARTYPES_H #define COLVARTYPES_H diff --git a/lib/colvars/colvarvalue.cpp b/lib/colvars/colvarvalue.cpp index 28650c8250..deccc6b7e0 100644 --- a/lib/colvars/colvarvalue.cpp +++ b/lib/colvars/colvarvalue.cpp @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include #include @@ -72,6 +79,7 @@ void colvarvalue::set_elem(int const icv, colvarvalue const &x) void colvarvalue::set_random() { + size_t ic; switch (this->type()) { case colvarvalue::type_scalar: this->real_value = cvm::rand_gaussian(); @@ -91,7 +99,7 @@ void colvarvalue::set_random() this->quaternion_value.q3 = cvm::rand_gaussian(); break; case colvarvalue::type_vector: - for (size_t ic = 0; ic < this->vector1d_value.size(); ic++) { + for (ic = 0; ic < this->vector1d_value.size(); ic++) { this->vector1d_value[ic] = cvm::rand_gaussian(); } break; @@ -103,56 +111,6 @@ void colvarvalue::set_random() } -colvarvalue colvarvalue::inverse() const -{ - switch (value_type) { - case colvarvalue::type_scalar: - return colvarvalue(1.0/real_value); - break; - case colvarvalue::type_3vector: - case colvarvalue::type_unit3vector: - case colvarvalue::type_unit3vectorderiv: - return colvarvalue(cvm::rvector(1.0/rvector_value.x, - 1.0/rvector_value.y, - 1.0/rvector_value.z)); - break; - case colvarvalue::type_quaternion: - case colvarvalue::type_quaternionderiv: - return colvarvalue(cvm::quaternion(1.0/quaternion_value.q0, - 1.0/quaternion_value.q1, - 1.0/quaternion_value.q2, - 1.0/quaternion_value.q3)); - break; - case colvarvalue::type_vector: - { - cvm::vector1d result(vector1d_value); - if (elem_types.size() > 0) { - // if we have information about non-scalar types, use it - size_t i; - for (i = 0; i < elem_types.size(); i++) { - result.sliceassign(elem_indices[i], elem_indices[i]+elem_sizes[i], - cvm::vector1d((this->get_elem(i)).inverse())); - } - } else { - size_t i; - for (i = 0; i < result.size(); i++) { - if (result[i] != 0.0) { - result = 1.0/result[i]; - } - } - } - return colvarvalue(result, type_vector); - } - break; - case colvarvalue::type_notset: - default: - undef_op(); - break; - } - return colvarvalue(); -} - - // binary operations between two colvarvalues colvarvalue operator + (colvarvalue const &x1, @@ -321,7 +279,7 @@ colvarvalue colvarvalue::dist2_grad(colvarvalue const &x2) const (-1.0) * sin_t * v2.z + cos_t/sin_t * (v1.z - cos_t*v2.z) ), - colvarvalue::type_unit3vector ); + colvarvalue::type_unit3vectorderiv ); } case colvarvalue::type_quaternion: case colvarvalue::type_quaternionderiv: diff --git a/lib/colvars/colvarvalue.h b/lib/colvars/colvarvalue.h index 3e5e2645a3..e369feefcd 100644 --- a/lib/colvars/colvarvalue.h +++ b/lib/colvars/colvarvalue.h @@ -1,5 +1,12 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #ifndef COLVARVALUE_H #define COLVARVALUE_H @@ -128,30 +135,23 @@ public: {} /// \brief Copy constructor from rvector base type (Note: this sets - /// automatically a type \link type_3vector \endlink , if you want a + /// by default a type \link type_3vector \endlink , if you want a /// \link type_unit3vector \endlink you must set it explicitly) - inline colvarvalue(cvm::rvector const &v) - : value_type(type_3vector), rvector_value(v) - {} - - /// \brief Copy constructor from rvector base type (additional - /// argument to make possible to choose a \link type_unit3vector - /// \endlink - inline colvarvalue(cvm::rvector const &v, Type const &vti) + inline colvarvalue(cvm::rvector const &v, Type vti = type_3vector) : value_type(vti), rvector_value(v) {} /// \brief Copy constructor from quaternion base type - inline colvarvalue(cvm::quaternion const &q) - : value_type(type_quaternion), quaternion_value(q) + inline colvarvalue(cvm::quaternion const &q, Type vti = type_quaternion) + : value_type(vti), quaternion_value(q) {} + /// Copy constructor from vector1d base type + colvarvalue(cvm::vector1d const &v, Type vti = type_vector); + /// Copy constructor from another \link colvarvalue \endlink colvarvalue(colvarvalue const &x); - /// Copy constructor from vector1d base type - colvarvalue(cvm::vector1d const &v, Type const &vti); - /// Set to the null value for the data type currently defined void reset(); @@ -211,10 +211,6 @@ public: return std::sqrt(this->norm2()); } - /// \brief Return the value whose scalar product with this value is - /// 1 - inline colvarvalue inverse() const; - /// Square distance between this \link colvarvalue \endlink and another cvm::real dist2(colvarvalue const &x2) const; @@ -536,7 +532,7 @@ inline colvarvalue::colvarvalue(colvarvalue const &x) } } -inline colvarvalue::colvarvalue(cvm::vector1d const &v, Type const &vti) +inline colvarvalue::colvarvalue(cvm::vector1d const &v, Type vti) { if ((vti != type_vector) && (v.size() != num_dimensions(vti))) { cvm::error("Error: trying to initialize a variable of type \""+type_desc(vti)+ @@ -620,11 +616,22 @@ inline int colvarvalue::check_types_assign(colvarvalue::Type const &vt1, } if (vt1 != type_notset) { - if (vt1 != vt2) { - cvm::error("Trying to assign a colvar value with type \""+ - type_desc(vt2)+"\" to one with type \""+ - type_desc(vt1)+"\".\n"); - return COLVARS_ERROR; + if (((vt1 == type_unit3vector) && + (vt2 == type_unit3vectorderiv)) || + ((vt2 == type_unit3vector) && + (vt1 == type_unit3vectorderiv)) || + ((vt1 == type_quaternion) && + (vt2 == type_quaternionderiv)) || + ((vt2 == type_quaternion) && + (vt1 == type_quaternionderiv))) { + return COLVARS_OK; + } else { + if (vt1 != vt2) { + cvm::error("Trying to assign a colvar value with type \""+ + type_desc(vt2)+"\" to one with type \""+ + type_desc(vt1)+"\".\n"); + return COLVARS_ERROR; + } } } return COLVARS_OK; diff --git a/src/USER-COLVARS/README b/src/USER-COLVARS/README index 759556aeb5..9090a07ead 100644 --- a/src/USER-COLVARS/README +++ b/src/USER-COLVARS/README @@ -1,49 +1,46 @@ -This package implements the "fix colvars" command which can be used +This package implements the "fix colvars" command, which can be used in a LAMMPS input script. -This fix allows use of "collective variables" to implement Adaptive -Biasing Force, Metadynamics, Steered MD, Umbrella Sampling and -Restraints. +The fix allows use of enhanced sampling methods based on a reduced set +of "collective variables", including free-energy estimators based on +thermodynamic forces, non-equilibrium work and probability +distributions. -This package uses an external library in lib/colvars which must be -compiled before making LAMMPS. See the lib/colvars/README file and -the LAMMPS manual for information on building LAMMPS with external -libraries. The settings in the Makefile.lammps file in that directory -must be correct for LAMMPS to build correctly with this package -installed. +The package uses the "Colvars" library, whose source code is included +in the LAMMPS source code distribution and must be linked with LAMMPS. +See the lib/colvars/README file and the LAMMPS manual for information +on building LAMMPS with external libraries. The settings in the +Makefile.lammps file in that directory must be correct for LAMMPS to +build correctly with this package installed. -The external library is a portable collective variable module library -written and maintained by Giacomo Fiorin (ICMS, Temple University, -Philadelphia, PA, USA) and Jerome Henin (IBPC, CNRS, Paris, France). +The files in the USER-COLVARS package folder implement an interface +between LAMMPS and Colvars, originally written by Axel Kohlmeyer +(akohlmey@gmail.com) and maintained by Giacomo Fiorin +(giacomo.fiorin@gmail.com). -More info about this library can be found at: http://colvars.github.io +More info about the Colvars library can be found at: -and in these publications: +https://github.com/colvars/colvars + +and in the reference article: Using collective variables to drive molecular dynamics simulations, -Giacomo Fiorin, Michael L. Klein & Jérôme Hénin: Molecular Physics, -111, 3345-3362 (2013) +G. Fiorin, M. L. Klein, and J. Henin, +Molecular Physics 111, 3345 (2013) +http://dx.doi.org/10.1080/00268976.2013.813594 -Exploring Multidimensional Free Energy Landscapes Using Time-Dependent -Biases on Collective Variables, J. Hénin, G. Fiorin, C. Chipot, and -M. L. Klein, J. Chem. Theory Comput., 6, 35-47 (2010). +A reference manual for the package and library is included with the +LAMMPS doc pages: +doc/PDF/colvars-refman-lammps.pdf +which also includes citations to the articles documenting the various +methods that make use Colvars. -The colvars fix implementes a thin interface layer, which exchanges -information between LAMMPS and the collective variable module. This -interface was written and is maintained by Axel Kohlmeyer -(akohlmey@gmail.com) +There are also example scripts for using this package in the folder +examples/USER/colvars, as well as the GitHub page for Colvars. -See the doc page of fix colvars for more details. - -There is a reference manual for the package included with the LAMMPS -doc pages: doc/PDF/colvars-refman-lammps.pdf - -There are example scripts for using this package in -examples/USER/colvars. - -The person who created this package is Axel Kohlmeyer at Temple U -(akohlmey at gmail.com). Contact him directly if you have questions. +Please contact Giacomo Fiorin (giacomo.fiorin@gmail.com) for questions +regarding this package. --------------------------------- -Version: 2015-01-08 +Version: 2016-12-22 diff --git a/src/USER-COLVARS/colvarproxy_lammps.cpp b/src/USER-COLVARS/colvarproxy_lammps.cpp index 350009f6bf..7320263ba7 100644 --- a/src/USER-COLVARS/colvarproxy_lammps.cpp +++ b/src/USER-COLVARS/colvarproxy_lammps.cpp @@ -1,3 +1,12 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + #include #include "lammps.h" diff --git a/src/USER-COLVARS/colvarproxy_lammps.h b/src/USER-COLVARS/colvarproxy_lammps.h index f1636e112b..c0b4ea20fe 100644 --- a/src/USER-COLVARS/colvarproxy_lammps.h +++ b/src/USER-COLVARS/colvarproxy_lammps.h @@ -1,5 +1,13 @@ // -*- c++ -*- +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + + #ifndef COLVARPROXY_LAMMPS_H #define COLVARPROXY_LAMMPS_H @@ -21,7 +29,7 @@ #endif #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2016-10-05" +#define COLVARPROXY_VERSION "2016-12-27" #endif /* struct for packed data communication of coordinates and forces. */ diff --git a/src/USER-COLVARS/fix_colvars.cpp b/src/USER-COLVARS/fix_colvars.cpp index 6a3613d76a..59e6c46b76 100644 --- a/src/USER-COLVARS/fix_colvars.cpp +++ b/src/USER-COLVARS/fix_colvars.cpp @@ -1,3 +1,12 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories diff --git a/src/USER-COLVARS/fix_colvars.h b/src/USER-COLVARS/fix_colvars.h index a1dae0d757..c00b18aa46 100644 --- a/src/USER-COLVARS/fix_colvars.h +++ b/src/USER-COLVARS/fix_colvars.h @@ -1,3 +1,12 @@ +// -*- c++ -*- + +// This file is part of the Collective Variables module (Colvars). +// The original version of Colvars and its updates are located at: +// https://github.com/colvars/colvars +// Please update all Colvars source files before making any changes. +// If you wish to distribute your changes, please submit them to the +// Colvars repository at GitHub. + /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories diff --git a/src/USER-COLVARS/group_ndx.cpp b/src/USER-COLVARS/group_ndx.cpp index 06b404098c..5076918039 100644 --- a/src/USER-COLVARS/group_ndx.cpp +++ b/src/USER-COLVARS/group_ndx.cpp @@ -1,3 +1,5 @@ +// -*- c++ -*- + /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories diff --git a/src/USER-COLVARS/group_ndx.h b/src/USER-COLVARS/group_ndx.h index e0104f176f..25c38dcf9f 100644 --- a/src/USER-COLVARS/group_ndx.h +++ b/src/USER-COLVARS/group_ndx.h @@ -1,4 +1,6 @@ -/* -*- c++ -*- ---------------------------------------------------------- +// -*- c++ -*- + +/* ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov diff --git a/src/USER-COLVARS/ndx_group.cpp b/src/USER-COLVARS/ndx_group.cpp index 31d8332c9c..c7972e372e 100644 --- a/src/USER-COLVARS/ndx_group.cpp +++ b/src/USER-COLVARS/ndx_group.cpp @@ -1,3 +1,5 @@ +// -*- c++ -*- + /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories @@ -10,9 +12,8 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ - /* ---------------------------------------------------------------------- - Contributing author: Axel Kohlmeyer (Temple U) + Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ #include "ndx_group.h" @@ -35,7 +36,7 @@ static char *find_section(FILE *fp, const char *name) { char linebuf[BUFLEN]; char *n,*p,*t,*r; - + while ((p = fgets(linebuf,BUFLEN,fp))) { t = strtok(p," \t\n\r\f"); if ((t != NULL) && *t == '[') { diff --git a/src/USER-COLVARS/ndx_group.h b/src/USER-COLVARS/ndx_group.h index 479c442f61..cd3250a1d5 100644 --- a/src/USER-COLVARS/ndx_group.h +++ b/src/USER-COLVARS/ndx_group.h @@ -1,4 +1,6 @@ -/* -*- c++ -*- ---------------------------------------------------------- +// -*- c++ -*- + +/* ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator http://lammps.sandia.gov, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov From 925f42727f3211ee9bd961b163901768472a3631 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Tue, 27 Dec 2016 14:26:43 -0500 Subject: [PATCH 25/70] Fix typo --- doc/src/fix_colvars.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/fix_colvars.txt b/doc/src/fix_colvars.txt index d16853861f..e2be03f46b 100644 --- a/doc/src/fix_colvars.txt +++ b/doc/src/fix_colvars.txt @@ -10,7 +10,7 @@ fix colvars command :h3 [Syntax:] -fix ID group-ID Colvars configfile keyword values ... :pre +fix ID group-ID colvars configfile keyword values ... :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l colvars = style name of this fix command :l From b0263e87bbaa46a3560f4cc8ef79faa8ea8e9780 Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Tue, 27 Dec 2016 17:16:32 -0500 Subject: [PATCH 26/70] Fix missing force with extended-Lagrangian mass --- lib/colvars/Makefile.colvars | 119 +++++++++++++++++++++++++++++++++++ lib/colvars/colvar.cpp | 7 +++ lib/colvars/colvarmodule.h | 2 +- 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 lib/colvars/Makefile.colvars diff --git a/lib/colvars/Makefile.colvars b/lib/colvars/Makefile.colvars new file mode 100644 index 0000000000..d1a2044038 --- /dev/null +++ b/lib/colvars/Makefile.colvars @@ -0,0 +1,119 @@ +# library build -*- makefile -*- for colvars module + +# which file will be copied to Makefile.lammps + +EXTRAMAKE = Makefile.lammps.empty + +# ------ SETTINGS ------ + +CXX = g++ +CXXFLAGS = -O2 -g -Wall -fPIC -funroll-loops # -DCOLVARS_DEBUG +ARCHIVE = ar +ARCHFLAG = -rscv +SHELL = /bin/sh + +# ------ DEFINITIONS ------ + +SRC = colvaratoms.cpp colvarbias_abf.cpp colvarbias_alb.cpp colvarbias.cpp \ + colvarbias_histogram.cpp colvarbias_meta.cpp colvarbias_restraint.cpp \ + colvarcomp_angles.cpp colvarcomp_coordnums.cpp colvarcomp.cpp \ + colvarcomp_distances.cpp colvarcomp_protein.cpp colvarcomp_rotations.cpp \ + colvardeps.cpp colvar.cpp colvargrid.cpp colvarmodule.cpp colvarparse.cpp \ + colvarscript.cpp colvartypes.cpp colvarvalue.cpp + +LIB = libcolvars.a +OBJ = $(SRC:.cpp=.o) +EXE = #colvars_standalone + +# ------ MAKE PROCEDURE ------ + +default: $(LIB) $(EXE) Makefile.lammps + +Makefile.lammps: + @cp $(EXTRAMAKE) Makefile.lammps + +$(LIB): $(OBJ) + $(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ) + +colvars_standalone: colvars_main.o colvarproxy_standalone.o $(LIB) + $(CXX) -o $@ $(CXXFLAGS) $^ + +# ------ MAKE FLAGS ------ + +.SUFFIXES: +.SUFFIXES: .cpp .o + +.PHONY: default clean + +# ------ COMPILE RULES ------ + +.cpp.o: + $(CXX) $(CXXFLAGS) -c $< + +# ------ DEPENDENCIES ------ +# +colvaratoms.o: colvaratoms.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvarparse.h colvardeps.h colvaratoms.h +colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h colvartypes.h \ + colvarproxy.h colvarvalue.h colvar.h colvarparse.h colvardeps.h \ + colvarbias_abf.h colvarbias.h colvargrid.h +colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h colvartypes.h \ + colvarproxy.h colvarvalue.h colvarbias_alb.h colvar.h colvarparse.h \ + colvardeps.h colvarbias_restraint.h colvarbias.h +colvarbias.o: colvarbias.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvarbias.h colvar.h colvarparse.h colvardeps.h +colvarbias_histogram.o: colvarbias_histogram.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \ + colvardeps.h colvarbias_histogram.h colvarbias.h colvargrid.h +colvarbias_meta.o: colvarbias_meta.cpp colvar.h colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvardeps.h \ + colvarbias_meta.h colvarbias.h colvargrid.h +colvarbias_restraint.o: colvarbias_restraint.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarbias_restraint.h \ + colvarbias.h colvar.h colvarparse.h colvardeps.h +colvarcomp_angles.o: colvarcomp_angles.cpp colvarmodule.h colvartypes.h \ + colvarproxy.h colvarvalue.h colvar.h colvarparse.h colvardeps.h \ + colvarcomp.h colvaratoms.h +colvarcomp_coordnums.o: colvarcomp_coordnums.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvardeps.h \ + colvaratoms.h colvar.h colvarcomp.h +colvarcomp.o: colvarcomp.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvar.h colvarparse.h colvardeps.h colvarcomp.h \ + colvaratoms.h +colvarcomp_distances.o: colvarcomp_distances.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvardeps.h \ + colvar.h colvarcomp.h colvaratoms.h +colvarcomp_protein.o: colvarcomp_protein.cpp colvarmodule.h colvartypes.h \ + colvarproxy.h colvarvalue.h colvarparse.h colvardeps.h colvar.h \ + colvarcomp.h colvaratoms.h +colvarcomp_rotations.o: colvarcomp_rotations.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvardeps.h \ + colvar.h colvarcomp.h colvaratoms.h +colvar.o: colvar.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvarparse.h colvardeps.h colvar.h colvarcomp.h \ + colvaratoms.h colvarscript.h colvarbias.h +colvardeps.o: colvardeps.cpp colvardeps.h colvarmodule.h colvartypes.h \ + colvarproxy.h colvarvalue.h colvarparse.h +colvargrid.o: colvargrid.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvarparse.h colvardeps.h colvar.h colvarcomp.h \ + colvaratoms.h colvargrid.h +colvarmodule.o: colvarmodule.cpp colvarmodule.h colvartypes.h \ + colvarproxy.h colvarvalue.h colvarparse.h colvardeps.h colvar.h \ + colvarbias.h colvarbias_abf.h colvargrid.h colvarbias_alb.h \ + colvarbias_restraint.h colvarbias_histogram.h colvarbias_meta.h \ + colvarscript.h +colvarparse.o: colvarparse.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvarparse.h +colvarscript.o: colvarscript.cpp colvarscript.h colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarbias.h colvar.h \ + colvarparse.h colvardeps.h +colvartypes.o: colvartypes.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h colvarparse.h +colvarvalue.o: colvarvalue.cpp colvarmodule.h colvartypes.h colvarproxy.h \ + colvarvalue.h + +# ------ CLEAN ------ + +clean: + -rm *.o *~ $(LIB) + diff --git a/lib/colvars/colvar.cpp b/lib/colvars/colvar.cpp index 95a40084f5..d60a9e90f7 100644 --- a/lib/colvars/colvar.cpp +++ b/lib/colvars/colvar.cpp @@ -314,6 +314,9 @@ colvar::colvar(std::string const &conf) enable(f_cv_extended_Lagrangian); provide(f_cv_Langevin); + // The extended mass will apply forces + enable(f_cv_gradient); + xr.type(value()); vr.type(value()); fr.type(value()); @@ -1209,6 +1212,10 @@ cvm::real colvar::update_forces_energy() if (is_enabled(f_cv_extended_Lagrangian)) { + if (cvm::debug()) { + cvm::log("Updating extended-Lagrangian degrees of freedom.\n"); + } + cvm::real dt = cvm::dt(); colvarvalue f_ext(fr.type()); f_ext.reset(); diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index c63d04bcc4..0e98709adb 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -11,7 +11,7 @@ #define COLVARMODULE_H #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2016-12-22" +#define COLVARS_VERSION "2016-12-27" #endif #ifndef COLVARS_DEBUG From 616ca1de0345a2a097848087acec80f5e4384cdc Mon Sep 17 00:00:00 2001 From: Efrem Braun Date: Wed, 28 Dec 2016 16:17:07 +0100 Subject: [PATCH 27/70] Fix nvk implemented. --- doc/src/Section_commands.txt | 1 + doc/src/fix.txt | 1 + doc/src/fix_nvk.txt | 62 ++++++++++ doc/src/fixes.txt | 1 + src/fix_nvk.cpp | 217 +++++++++++++++++++++++++++++++++++ src/fix_nvk.h | 67 +++++++++++ 6 files changed, 349 insertions(+) create mode 100644 doc/src/fix_nvk.txt create mode 100644 src/fix_nvk.cpp create mode 100644 src/fix_nvk.h diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt index 20503e8522..8baf8fd1b7 100644 --- a/doc/src/Section_commands.txt +++ b/doc/src/Section_commands.txt @@ -603,6 +603,7 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "nve/noforce"_fix_nve_noforce.html, "nve/sphere (o)"_fix_nve_sphere.html, "nve/tri"_fix_nve_tri.html, +"nvk"_fix_nvk.html, "nvt (iko)"_fix_nh.html, "nvt/asphere (o)"_fix_nvt_asphere.html, "nvt/body"_fix_nvt_body.html, diff --git a/doc/src/fix.txt b/doc/src/fix.txt index 464eab3169..abe56bd764 100644 --- a/doc/src/fix.txt +++ b/doc/src/fix.txt @@ -217,6 +217,7 @@ of "this page"_Section_commands.html#cmd_5. "nve/noforce"_fix_nve_noforce.html - NVE without forces (v only) "nve/sphere"_fix_nve_sphere.html - NVE for spherical particles "nve/tri"_fix_nve_tri.html - NVE for triangles +"nvk"_fix_nvk.html - constant kinetic energy time integration "nvt"_fix_nh.html - constant NVT time integration via Nose/Hoover "nvt/asphere"_fix_nvt_asphere.html - NVT for aspherical particles "nvt/body"_fix_nve_body.html - NVT for body particles diff --git a/doc/src/fix_nvk.txt b/doc/src/fix_nvk.txt new file mode 100644 index 0000000000..33c2109126 --- /dev/null +++ b/doc/src/fix_nvk.txt @@ -0,0 +1,62 @@ +"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 nvk command :h3 + +[Syntax:] + +fix ID group-ID nvk :pre + +ID, group-ID are documented in "fix"_fix.html command +nvk = style name of this fix command :ul + +[Examples:] + +fix 1 all nvk :pre + +[Description:] + +Perform constant kinetic energy integration using the Gaussian +thermostat to update position and velocity for atoms in the group each +timestep. V is volume; K is kinetic energy. This creates a system +trajectory consistent with the isokinetic ensemble. + +The equations of motion used are those of Minary et al in +"(Minary)"_#nvk-Minary, a variant of those initially given by Zhang in +"(Zhang)"_#nvk-Zhang. + +:line + +[Restart, fix_modify, output, run start/stop, minimize info:] + +No information about this fix is written to "binary restart +files"_restart.html. None of the "fix_modify"_fix_modify.html options +are relevant to this fix. No global or per-atom quantities are stored +by this fix for access by various "output +commands"_Section_howto.html#howto_15. 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:] + +The Gaussian thermostat only works when it is applied to all atoms in +the simulation box. Therefore, the group must be set to all. + +This fix has not yet been implemented to work with the RESPA integrator. + +[Related commands:] none + +[Default:] none + +:line + +:link(nvk-Minary) +[(Minary)] Minary, Martyna, and Tuckerman, J Chem Phys, 18, 2510 (2003). + +:link(nvk-Zhang) +[(Zhang)] Zhang, J Chem Phys, 106, 6102 (1997). diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt index d17b88306d..ca43a1d1e7 100644 --- a/doc/src/fixes.txt +++ b/doc/src/fixes.txt @@ -90,6 +90,7 @@ Fixes :h1 fix_nve_noforce fix_nve_sphere fix_nve_tri + fix_nvk fix_nvt_asphere fix_nvt_body fix_nvt_manifold_rattle diff --git a/src/fix_nvk.cpp b/src/fix_nvk.cpp new file mode 100644 index 0000000000..ffcea358e7 --- /dev/null +++ b/src/fix_nvk.cpp @@ -0,0 +1,217 @@ +/* ---------------------------------------------------------------------- + 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 "fix_nvk.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" +#include "compute.h" +#include "math_extra.h" +#include "domain.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixNVK::FixNVK(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (narg < 3) + error->all(FLERR,"Illegal fix nvk command"); + if (igroup) error->all(FLERR,"Fix nvk currently only supports group all"); + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixNVK::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + mask |= INITIAL_INTEGRATE_RESPA; + mask |= FINAL_INTEGRATE_RESPA; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixNVK::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt; + + if (strstr(update->integrate_style,"respa")) { + error->all(FLERR,"Fix nvk not yet enabled for RESPA"); + step_respa = ((Respa *) update->integrate)->step; + } + + // compute initial kinetic energy + // make better by calling compute_ke instead of copy/pasting code from compute_ke.cpp + double pfactor = 0.5 * force->mvv2e; + double **v = atom->v; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *mask = atom->mask; + int *type = atom->type; + int nlocal = atom->nlocal; + double ke = 0.0; + if (rmass) { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + ke += rmass[i] * (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + } else { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + ke += mass[type[i]] * + (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + } + MPI_Allreduce(&ke,&K_target,1,MPI_DOUBLE,MPI_SUM,world); + K_target *= pfactor; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixNVK::initial_integrate(int vflag) +{ + double sm; + double a,b,sqtb,s,sdot; + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // calculate s and sdot from Minary 2003, equations 4.12 and 4.13 + double a_local = 0.0; + double b_local = 0.0; + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + a_local += MathExtra::dot3(f[i], v[i]); + if (rmass) b_local += MathExtra::dot3(f[i], f[i]) / rmass[i]; + else b_local += MathExtra::dot3(f[i], f[i]) / mass[type[i]]; + } + MPI_Allreduce(&a_local,&a,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&b_local,&b,1,MPI_DOUBLE,MPI_SUM,world); + a /= (2.0*K_target); // units of inverse time + b /= (2.0*K_target * force->mvv2e); // units of inverse time squared + sqtb = sqrt(b); + s = a/b * (cosh(dtf*sqtb) - 1.0) + sinh(dtf*sqtb) / sqtb; + sdot = a/b * sqtb * sinh(dtf*sqtb) + cosh(dtf*sqtb); + + // update v and x of atoms in group per Minary 2003, equations 4.15-4.17 + // note that equation 4.15, 4.17 should read p = (p+F*s/m)/sdot + // note that equation 4.16 should read r = r + delt*p/m + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) sm = s / rmass[i]; + else sm = s / mass[type[i]]; + v[i][0] = (v[i][0] + f[i][0] * sm * force->ftm2v) / sdot; + v[i][1] = (v[i][1] + f[i][1] * sm * force->ftm2v) / sdot; + v[i][2] = (v[i][2] + f[i][2] * sm * force->ftm2v) / sdot; + x[i][0] += dtv * v[i][0]; + x[i][1] += dtv * v[i][1]; + x[i][2] += dtv * v[i][2]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNVK::final_integrate() +{ + double sm; + double a,b,sqtb,s,sdot; + + double **v = atom->v; + double **f = atom->f; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + // calculate s and sdot from Minary 2003, equations 4.12 and 4.13 + double a_local = 0.0; + double b_local = 0.0; + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + a_local += MathExtra::dot3(f[i], v[i]); + if (rmass) b_local += MathExtra::dot3(f[i], f[i]) / rmass[i]; + else b_local += MathExtra::dot3(f[i], f[i]) / mass[type[i]]; + } + MPI_Allreduce(&a_local,&a,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&b_local,&b,1,MPI_DOUBLE,MPI_SUM,world); + a /= (2.0*K_target); // units of inverse time + b /= (2.0*K_target * force->mvv2e); // units of inverse time squared + sqtb = sqrt(b); + s = a/b * (cosh(dtf*sqtb) - 1.0) + sinh(dtf*sqtb) / sqtb; + sdot = a/b * sqtb * sinh(dtf*sqtb) + cosh(dtf*sqtb); + + // update v and x of atoms in group per Minary 2003, equations 4.15-4.17 + // note that equation 4.15, 4.17 should read p = (p+F*s/m)/sdot + // note that equation 4.16 should read r = r + delt*p/m + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) sm = s / rmass[i]; + else sm = s / mass[type[i]]; + v[i][0] = (v[i][0] + f[i][0] * sm * force->ftm2v) / sdot; + v[i][1] = (v[i][1] + f[i][1] * sm * force->ftm2v) / sdot; + v[i][2] = (v[i][2] + f[i][2] * sm * force->ftm2v) / sdot; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixNVK::initial_integrate_respa(int vflag, int ilevel, int iloop) +{ + dtv = step_respa[ilevel]; + dtf = 0.5 * step_respa[ilevel]; + + // innermost level - NVK update of v and x + // all other levels - NVK update of v + + if (ilevel == 0) initial_integrate(vflag); + else final_integrate(); +} + +/* ---------------------------------------------------------------------- */ + +void FixNVK::final_integrate_respa(int ilevel, int iloop) +{ + dtf = 0.5 * step_respa[ilevel]; + final_integrate(); +} + +/* ---------------------------------------------------------------------- */ + +void FixNVK::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt; +} diff --git a/src/fix_nvk.h b/src/fix_nvk.h new file mode 100644 index 0000000000..6c473def08 --- /dev/null +++ b/src/fix_nvk.h @@ -0,0 +1,67 @@ +/* -*- 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(nvk,FixNVK) + +#else + +#ifndef LMP_FIX_NVK_H +#define LMP_FIX_NVK_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixNVK : public Fix { + public: + FixNVK(class LAMMPS *, int, char **); + virtual ~FixNVK() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void initial_integrate_respa(int, int, int); + virtual void final_integrate_respa(int, int); + virtual void reset_dt(); + + protected: + double dtv,dtf; + double *step_respa; + int mass_require; + double K_target; +}; + +} + +#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 nvk currently only supports group all + +Self-explanatory. + +E: Fix nvk not yet enabled for RESPA + +Self-explanatory. + +*/ From 68814d4fc818134b89dadd93c964f99c8e51aba5 Mon Sep 17 00:00:00 2001 From: Efrem Braun Date: Wed, 28 Dec 2016 16:26:05 +0100 Subject: [PATCH 28/70] Made documentation changes to fix nvk --- doc/src/fix_nvk.txt | 5 +++++ src/fix_nvk.cpp | 2 +- src/fix_nvk.h | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/src/fix_nvk.txt b/doc/src/fix_nvk.txt index 33c2109126..f4c9fa4c3d 100644 --- a/doc/src/fix_nvk.txt +++ b/doc/src/fix_nvk.txt @@ -30,6 +30,11 @@ The equations of motion used are those of Minary et al in "(Minary)"_#nvk-Minary, a variant of those initially given by Zhang in "(Zhang)"_#nvk-Zhang. +The kinetic energy will be held constant at its value given when fix +nvk is initiated. If a different kinetic energy is desired, the +"velocity"_velocity.html command should be used to change the kinetic +energy prior to this fix. + :line [Restart, fix_modify, output, run start/stop, minimize info:] diff --git a/src/fix_nvk.cpp b/src/fix_nvk.cpp index ffcea358e7..862a555fed 100644 --- a/src/fix_nvk.cpp +++ b/src/fix_nvk.cpp @@ -34,7 +34,7 @@ FixNVK::FixNVK(LAMMPS *lmp, int narg, char **arg) : { if (narg < 3) error->all(FLERR,"Illegal fix nvk command"); - if (igroup) error->all(FLERR,"Fix nvk currently only supports group all"); + if (igroup) error->all(FLERR,"Fix nvk only supports group all"); dynamic_group_allow = 1; time_integrate = 1; diff --git a/src/fix_nvk.h b/src/fix_nvk.h index 6c473def08..1d73e2f5df 100644 --- a/src/fix_nvk.h +++ b/src/fix_nvk.h @@ -56,7 +56,7 @@ 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 nvk currently only supports group all +E: Fix nvk only supports group all Self-explanatory. From 06ae2804f6c28688c1a6e688a62cf5aead32a1bc Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 10:05:01 -0700 Subject: [PATCH 29/70] ensure velocity is marked as modified before syncing it worked before, but this seems more reliable --- src/KOKKOS/fix_momentum_kokkos.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 253e61699e..333889ab98 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -181,6 +181,8 @@ void FixMomentumKokkos::end_of_step() }); } + atomKK->modified(execution_space, V_MASK); + // the following sync should not be needed once everything supports Kokkos atomKK->sync(ExecutionSpaceFromDevice::space, V_MASK); } From 371df8ea72d6a5e00e44c78de2eb7fa3a2381316 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Fri, 23 Dec 2016 13:08:34 -0700 Subject: [PATCH 30/70] repair sync bugs in fix_momentum_kokkos Since the Group class is completely unaware of Kokkos, the direct calls from FixMomentumKokkos to Group methods need to be preceded by atomKK->sync calls for every atom variable that Group intends to use. fix_momentum_kokkos definitely does not work on GPUs prior to this commit. --- src/KOKKOS/fix_momentum_kokkos.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/fix_momentum_kokkos.cpp b/src/KOKKOS/fix_momentum_kokkos.cpp index 333889ab98..8dc4a15551 100644 --- a/src/KOKKOS/fix_momentum_kokkos.cpp +++ b/src/KOKKOS/fix_momentum_kokkos.cpp @@ -108,6 +108,9 @@ void FixMomentumKokkos::end_of_step() auto groupbit2 = groupbit; if (linear) { + /* this is needed because Group is not Kokkos-aware ! */ + atomKK->sync(ExecutionSpaceFromDevice::space, + V_MASK | MASK_MASK | TYPE_MASK | RMASS_MASK); Few vcm; group->vcm(igroup,masstotal,&vcm[0]); @@ -125,13 +128,21 @@ void FixMomentumKokkos::end_of_step() if (zflag2) v(i,2) -= vcm[2]; } }); + atomKK->modified(execution_space, V_MASK); } if (angular) { Few xcm, angmom, omega; double inertia[3][3]; + /* syncs for each Kokkos-unaware Group method */ + atomKK->sync(ExecutionSpaceFromDevice::space, + X_MASK | MASK_MASK | TYPE_MASK | IMAGE_MASK | RMASS_MASK); group->xcm(igroup,masstotal,&xcm[0]); + atomKK->sync(ExecutionSpaceFromDevice::space, + X_MASK | V_MASK | MASK_MASK | TYPE_MASK | IMAGE_MASK | RMASS_MASK); group->angmom(igroup,&xcm[0],&angmom[0]); + atomKK->sync(ExecutionSpaceFromDevice::space, + X_MASK | MASK_MASK | TYPE_MASK | IMAGE_MASK | RMASS_MASK); group->inertia(igroup,&xcm[0],inertia); group->omega(&angmom[0],inertia,&omega[0]); @@ -162,6 +173,7 @@ void FixMomentumKokkos::end_of_step() v(i,2) -= omega[0]*dy - omega[1]*dx; } }); + atomKK->modified(execution_space, V_MASK); } // compute kinetic energy after momentum removal, if needed @@ -179,11 +191,8 @@ void FixMomentumKokkos::end_of_step() v(i,2) *= factor; } }); + atomKK->modified(execution_space, V_MASK); } - - atomKK->modified(execution_space, V_MASK); - // the following sync should not be needed once everything supports Kokkos - atomKK->sync(ExecutionSpaceFromDevice::space, V_MASK); } namespace LAMMPS_NS { From b3557bfbf50f9aecbbcd1054584ff9199cd90dad Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 10:45:31 -0700 Subject: [PATCH 31/70] add missing return in comm_tiled_kokkos --- src/KOKKOS/comm_tiled_kokkos.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/comm_tiled_kokkos.cpp b/src/KOKKOS/comm_tiled_kokkos.cpp index f3ea9d7abf..adcc634aa1 100644 --- a/src/KOKKOS/comm_tiled_kokkos.cpp +++ b/src/KOKKOS/comm_tiled_kokkos.cpp @@ -262,5 +262,5 @@ void CommTiledKokkos::forward_comm_array(int nsize, double **array) int CommTiledKokkos::exchange_variable(int n, double *inbuf, double *&outbuf) { - CommTiled::exchange_variable(n,inbuf,outbuf); -} \ No newline at end of file + return CommTiled::exchange_variable(n,inbuf,outbuf); +} From 994f36bc6f8b3ab117e7a7278ccf4c96099710c6 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 10:45:57 -0700 Subject: [PATCH 32/70] silence "implicit dereference" warning see kokkos/kokkos#177 for detailed discussion of the issue and fix --- src/KOKKOS/fix_setforce_kokkos.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/KOKKOS/fix_setforce_kokkos.h b/src/KOKKOS/fix_setforce_kokkos.h index ccf3863900..dffa22c93a 100644 --- a/src/KOKKOS/fix_setforce_kokkos.h +++ b/src/KOKKOS/fix_setforce_kokkos.h @@ -43,11 +43,10 @@ struct s_double_3 { } KOKKOS_INLINE_FUNCTION - volatile s_double_3& operator+=(const volatile s_double_3 &rhs) volatile { + void operator+=(const volatile s_double_3 &rhs) volatile { d0 += rhs.d0; d1 += rhs.d1; d2 += rhs.d2; - return *this; } }; typedef s_double_3 double_3; From 9a0007a13f43d00393d525998e67c502c9641dd4 Mon Sep 17 00:00:00 2001 From: Dan Ibanez Date: Thu, 22 Dec 2016 10:49:28 -0700 Subject: [PATCH 33/70] rename region_block_kokkos inside() this prevents compiler confusion with the inside() function provided by the normal region_block, as the two should be completely separate. --- src/KOKKOS/region_block_kokkos.cpp | 6 +++--- src/KOKKOS/region_block_kokkos.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/KOKKOS/region_block_kokkos.cpp b/src/KOKKOS/region_block_kokkos.cpp index 68cc7e49c2..6734d7fdd1 100644 --- a/src/KOKKOS/region_block_kokkos.cpp +++ b/src/KOKKOS/region_block_kokkos.cpp @@ -46,7 +46,7 @@ RegBlockKokkos::~RegBlockKokkos() template KOKKOS_INLINE_FUNCTION -int RegBlockKokkos::inside(double x, double y, double z) const +int RegBlockKokkos::k_inside(double x, double y, double z) const { if (x >= xlo && x <= xhi && y >= ylo && y <= yhi && z >= zlo && z <= zhi) return 1; @@ -85,7 +85,7 @@ void RegBlockKokkos::operator()(TagRegBlockMatchAll, const int &i) c /* ---------------------------------------------------------------------- determine if point x,y,z is a match to region volume XOR computes 0 if 2 args are the same, 1 if different - note that inside() returns 1 for points on surface of region + note that k_inside() returns 1 for points on surface of region thus point on surface of exterior region will not match if region has variable shape, invoke shape_update() once per timestep if region is dynamic, apply inverse transform to x,y,z @@ -99,7 +99,7 @@ KOKKOS_INLINE_FUNCTION int RegBlockKokkos::match(double x, double y, double z) const { if (dynamic) inverse_transform(x,y,z); - return !(inside(x,y,z) ^ interior); + return !(k_inside(x,y,z) ^ interior); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/region_block_kokkos.h b/src/KOKKOS/region_block_kokkos.h index 19b3204973..f570e3ed33 100644 --- a/src/KOKKOS/region_block_kokkos.h +++ b/src/KOKKOS/region_block_kokkos.h @@ -52,7 +52,7 @@ class RegBlockKokkos : public RegBlock { typename AT::t_int_1d_randomread mask; KOKKOS_INLINE_FUNCTION - int inside(double, double, double) const; + int k_inside(double, double, double) const; KOKKOS_INLINE_FUNCTION int match(double, double, double) const; KOKKOS_INLINE_FUNCTION From 4f195254af35231d404a6d433b75a09a05df3c98 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 23 Dec 2016 10:13:01 -0700 Subject: [PATCH 34/70] Fixing bug with Kokkos and reading restart files --- src/KOKKOS/atom_vec_angle_kokkos.cpp | 2 +- src/KOKKOS/atom_vec_atomic_kokkos.cpp | 2 +- src/KOKKOS/atom_vec_bond_kokkos.cpp | 2 +- src/KOKKOS/atom_vec_charge_kokkos.cpp | 2 +- src/KOKKOS/atom_vec_full_kokkos.cpp | 2 +- src/KOKKOS/atom_vec_molecular_kokkos.cpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/KOKKOS/atom_vec_angle_kokkos.cpp b/src/KOKKOS/atom_vec_angle_kokkos.cpp index 6d063793e0..221a5e738a 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.cpp +++ b/src/KOKKOS/atom_vec_angle_kokkos.cpp @@ -1593,7 +1593,7 @@ int AtomVecAngleKokkos::unpack_restart(double *buf) double **extra = atom->extra; if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; + int size = static_cast (buf[0]) - m; for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.cpp b/src/KOKKOS/atom_vec_atomic_kokkos.cpp index 2117073077..0a03cf9f6a 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.cpp +++ b/src/KOKKOS/atom_vec_atomic_kokkos.cpp @@ -1232,7 +1232,7 @@ int AtomVecAtomicKokkos::unpack_restart(double *buf) double **extra = atom->extra; if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; + int size = static_cast (buf[0]) - m; for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } diff --git a/src/KOKKOS/atom_vec_bond_kokkos.cpp b/src/KOKKOS/atom_vec_bond_kokkos.cpp index d42ec04834..f7bbb4dad5 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.cpp +++ b/src/KOKKOS/atom_vec_bond_kokkos.cpp @@ -1460,7 +1460,7 @@ int AtomVecBondKokkos::unpack_restart(double *buf) double **extra = atom->extra; if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; + int size = static_cast (buf[0]) - m; for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } diff --git a/src/KOKKOS/atom_vec_charge_kokkos.cpp b/src/KOKKOS/atom_vec_charge_kokkos.cpp index 4669dd8d7c..b7b5cbac7d 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.cpp +++ b/src/KOKKOS/atom_vec_charge_kokkos.cpp @@ -1314,7 +1314,7 @@ int AtomVecChargeKokkos::unpack_restart(double *buf) double **extra = atom->extra; if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; + int size = static_cast (buf[0]) - m; for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } diff --git a/src/KOKKOS/atom_vec_full_kokkos.cpp b/src/KOKKOS/atom_vec_full_kokkos.cpp index 7c1ebeed3a..731168b6ea 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.cpp +++ b/src/KOKKOS/atom_vec_full_kokkos.cpp @@ -1936,7 +1936,7 @@ int AtomVecFullKokkos::unpack_restart(double *buf) double **extra = atom->extra; if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; + int size = static_cast (buf[0]) - m; for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.cpp b/src/KOKKOS/atom_vec_molecular_kokkos.cpp index 7217ad49cb..b4370e239d 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.cpp +++ b/src/KOKKOS/atom_vec_molecular_kokkos.cpp @@ -1850,7 +1850,7 @@ int AtomVecMolecularKokkos::unpack_restart(double *buf) double **extra = atom->extra; if (atom->nextra_store) { - int size = static_cast (ubuf(buf[m++]).i) - m; + int size = static_cast (buf[0]) - m; for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; } From 27172c4a553bcea852d8b2646e0056c9790b2d95 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 23 Dec 2016 10:47:08 -0700 Subject: [PATCH 35/70] Fixing Kokkos bug when many atom types --- src/KOKKOS/pair_buck_coul_cut_kokkos.h | 2 +- src/KOKKOS/pair_buck_coul_long_kokkos.h | 2 +- src/KOKKOS/pair_buck_kokkos.h | 2 +- src/KOKKOS/pair_coul_cut_kokkos.h | 2 +- src/KOKKOS/pair_coul_debye_kokkos.h | 2 +- src/KOKKOS/pair_coul_long_kokkos.h | 2 +- .../pair_lj_charmm_coul_charmm_implicit_kokkos.cpp | 9 +++------ src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h | 2 +- src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp | 9 +++------ src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h | 2 +- src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp | 9 +++------ src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h | 2 +- src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp | 7 ++++--- src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h | 2 +- src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp | 6 +++--- src/KOKKOS/pair_lj_class2_coul_long_kokkos.h | 2 +- src/KOKKOS/pair_lj_class2_kokkos.cpp | 2 +- src/KOKKOS/pair_lj_class2_kokkos.h | 2 +- src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp | 7 ++++--- src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h | 2 +- src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp | 7 ++++--- src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h | 2 +- src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp | 7 ++++--- src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h | 2 +- src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp | 6 +++--- src/KOKKOS/pair_lj_cut_coul_long_kokkos.h | 2 +- src/KOKKOS/pair_lj_cut_kokkos.cpp | 3 ++- src/KOKKOS/pair_lj_cut_kokkos.h | 2 +- src/KOKKOS/pair_lj_expand_kokkos.cpp | 3 ++- src/KOKKOS/pair_lj_expand_kokkos.h | 2 +- src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp | 6 +++--- src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h | 2 +- src/KOKKOS/pair_lj_gromacs_kokkos.cpp | 4 ++-- src/KOKKOS/pair_lj_gromacs_kokkos.h | 2 +- src/KOKKOS/pair_lj_sdk_kokkos.cpp | 3 ++- src/KOKKOS/pair_lj_sdk_kokkos.h | 2 +- src/KOKKOS/pair_tersoff_kokkos.h | 2 +- src/KOKKOS/pair_tersoff_mod_kokkos.h | 2 +- src/KOKKOS/pair_tersoff_zbl_kokkos.h | 2 +- 39 files changed, 67 insertions(+), 69 deletions(-) diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.h b/src/KOKKOS/pair_buck_coul_cut_kokkos.h index 89730e32e0..8bccabf8de 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.h @@ -75,7 +75,7 @@ class PairBuckCoulCutKokkos : public PairBuckCoulCut { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_buck_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.h b/src/KOKKOS/pair_buck_coul_long_kokkos.h index 04586bd1a3..c4af7e19f3 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.h +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.h @@ -76,7 +76,7 @@ class PairBuckCoulLongKokkos : public PairBuckCoulLong { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_buck_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_buck_kokkos.h b/src/KOKKOS/pair_buck_kokkos.h index e95fa903fe..6b6e6f793e 100644 --- a/src/KOKKOS/pair_buck_kokkos.h +++ b/src/KOKKOS/pair_buck_kokkos.h @@ -68,7 +68,7 @@ class PairBuckKokkos : public PairBuck { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - params_buck m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 15 atom types + params_buck m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 12 atom types F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; diff --git a/src/KOKKOS/pair_coul_cut_kokkos.h b/src/KOKKOS/pair_coul_cut_kokkos.h index 754706ef4d..2049385c3f 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_coul_cut_kokkos.h @@ -81,7 +81,7 @@ class PairCoulCutKokkos : public PairCoulCut { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_coul_debye_kokkos.h b/src/KOKKOS/pair_coul_debye_kokkos.h index 4007108588..1f6d222e04 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.h +++ b/src/KOKKOS/pair_coul_debye_kokkos.h @@ -79,7 +79,7 @@ class PairCoulDebyeKokkos : public PairCoulDebye { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_coul_long_kokkos.h b/src/KOKKOS/pair_coul_long_kokkos.h index af38686d68..19789fbd86 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.h +++ b/src/KOKKOS/pair_coul_long_kokkos.h @@ -80,7 +80,7 @@ class PairCoulLongKokkos : public PairCoulLong { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp index 914711a8e5..1cf2dfe054 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp @@ -490,14 +490,11 @@ double PairLJCharmmCoulCharmmImplicitKokkos::init_one(int i, int j) m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; - k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j); + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; - k_cut_ljsq.h_view(j,i) = k_cut_ljsq.h_view(i,j); + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; - k_cut_coulsq.h_view(j,i) = k_cut_coulsq.h_view(i,j); + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h index 431aca589f..3c0b7d46ae 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.h @@ -76,7 +76,7 @@ class PairLJCharmmCoulCharmmImplicitKokkos : public PairLJCharmmCoulCharmmImplic Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp index 4af6a896d0..a4d0316ca7 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp @@ -491,14 +491,11 @@ double PairLJCharmmCoulCharmmKokkos::init_one(int i, int j) m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; - k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j); + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; - k_cut_ljsq.h_view(j,i) = k_cut_ljsq.h_view(i,j); + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; - k_cut_coulsq.h_view(j,i) = k_cut_coulsq.h_view(i,j); + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h index 9dc7914d3d..202cda68b3 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.h @@ -76,7 +76,7 @@ class PairLJCharmmCoulCharmmKokkos : public PairLJCharmmCoulCharmm { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp index 5efba2742d..5b1176278a 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp @@ -521,14 +521,11 @@ double PairLJCharmmCoulLongKokkos::init_one(int i, int j) m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; - k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j); + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; - k_cut_ljsq.h_view(j,i) = k_cut_ljsq.h_view(i,j); + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; - k_cut_coulsq.h_view(j,i) = k_cut_coulsq.h_view(i,j); + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h index 8f50722e01..fcdab7ddb6 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.h @@ -75,7 +75,7 @@ class PairLJCharmmCoulLongKokkos : public PairLJCharmmCoulLong { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp index 96507a599e..0e33958a22 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp @@ -326,11 +326,12 @@ double PairLJClass2CoulCutKokkos::init_one(int i, int j) m_cut_ljsq[j][i] = m_cut_ljsq[i][j] = cut_ljsqm; m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h index a1d8a8bded..1ea5bc69bf 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.h @@ -75,7 +75,7 @@ class PairLJClass2CoulCutKokkos : public PairLJClass2CoulCut { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp index 2d1abc9cd3..00becd0ec6 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp @@ -480,11 +480,11 @@ double PairLJClass2CoulLongKokkos::init_one(int i, int j) m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h index 72b0b8609e..0b1b2dc90b 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.h @@ -76,7 +76,7 @@ class PairLJClass2CoulLongKokkos : public PairLJClass2CoulLong { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_class2_kokkos.cpp b/src/KOKKOS/pair_lj_class2_kokkos.cpp index b5c4c19b8e..9f9e3c72a5 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_kokkos.cpp @@ -258,7 +258,7 @@ double PairLJClass2Kokkos::init_one(int i, int j) m_params[i][j] = m_params[j][i] = k_params.h_view(i,j); m_cutsq[j][i] = m_cutsq[i][j] = cutone*cutone; } - k_cutsq.h_view(i,j) = cutone*cutone; + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_class2_kokkos.h b/src/KOKKOS/pair_lj_class2_kokkos.h index e8ac07da80..73865928f5 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.h +++ b/src/KOKKOS/pair_lj_class2_kokkos.h @@ -75,7 +75,7 @@ class PairLJClass2Kokkos : public PairLJClass2 { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 15 atom types + params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 12 atom types F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp index e68ec5579c..f1a7950521 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp @@ -317,11 +317,12 @@ double PairLJCutCoulCutKokkos::init_one(int i, int j) m_cut_ljsq[j][i] = m_cut_ljsq[i][j] = cut_ljsqm; m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h index 20b2de2b8e..36f31d176c 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.h @@ -77,7 +77,7 @@ class PairLJCutCoulCutKokkos : public PairLJCutCoulCut { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp index f4011b6f5c..3eb793c52a 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp @@ -347,11 +347,12 @@ double PairLJCutCoulDebyeKokkos::init_one(int i, int j) m_cut_ljsq[j][i] = m_cut_ljsq[i][j] = cut_ljsqm; m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h index 7d4527cb7f..9e1e30abad 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.h @@ -75,7 +75,7 @@ class PairLJCutCoulDebyeKokkos : public PairLJCutCoulDebye { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp index 13c930a15b..6507bb0272 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp @@ -338,11 +338,12 @@ double PairLJCutCoulDSFKokkos::init_one(int i, int j) m_cut_ljsq[j][i] = m_cut_ljsq[i][j] = cut_ljsqm; m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h index dad5fd0b98..b1f578ec0b 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.h @@ -74,7 +74,7 @@ class PairLJCutCoulDSFKokkos : public PairLJCutCoulDSF { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp index 42319cfa99..11095bf4de 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp @@ -499,11 +499,11 @@ double PairLJCutCoulLongKokkos::init_one(int i, int j) m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h index ed35c6d471..5bdaaf96ca 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.h @@ -76,7 +76,7 @@ class PairLJCutCoulLongKokkos : public PairLJCutCoulLong { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_kokkos.cpp index 5f2805622a..066961cc89 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_kokkos.cpp @@ -276,7 +276,8 @@ double PairLJCutKokkos::init_one(int i, int j) m_params[i][j] = m_params[j][i] = k_params.h_view(i,j); m_cutsq[j][i] = m_cutsq[i][j] = cutone*cutone; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_cut_kokkos.h b/src/KOKKOS/pair_lj_cut_kokkos.h index b779874fe8..81c25c20d8 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.h +++ b/src/KOKKOS/pair_lj_cut_kokkos.h @@ -71,7 +71,7 @@ class PairLJCutKokkos : public PairLJCut { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 15 atom types + params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 12 atom types F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; diff --git a/src/KOKKOS/pair_lj_expand_kokkos.cpp b/src/KOKKOS/pair_lj_expand_kokkos.cpp index 3ed03f0d0b..d7daef2a66 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.cpp +++ b/src/KOKKOS/pair_lj_expand_kokkos.cpp @@ -262,7 +262,8 @@ double PairLJExpandKokkos::init_one(int i, int j) m_params[i][j] = m_params[j][i] = k_params.h_view(i,j); m_cutsq[j][i] = m_cutsq[i][j] = cutone*cutone; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_expand_kokkos.h b/src/KOKKOS/pair_lj_expand_kokkos.h index 339950a6b2..125c638527 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.h +++ b/src/KOKKOS/pair_lj_expand_kokkos.h @@ -75,7 +75,7 @@ class PairLJExpandKokkos : public PairLJExpand { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 15 atom types + params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 12 atom types F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp index 943cf988c9..499a826676 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp @@ -478,11 +478,11 @@ double PairLJGromacsCoulGromacsKokkos::init_one(int i, int j) m_cut_coulsq[j][i] = m_cut_coulsq[i][j] = cut_coulsqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_ljsq.h_view(i,j) = cut_ljsqm; + k_cut_ljsq.h_view(i,j) = k_cut_ljsq.h_view(j,i) = cut_ljsqm; k_cut_ljsq.template modify(); - k_cut_coulsq.h_view(i,j) = cut_coulsqm; + k_cut_coulsq.h_view(i,j) = k_cut_coulsq.h_view(j,i) = cut_coulsqm; k_cut_coulsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h index 492ef0c369..8b10eb71a3 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.h @@ -76,7 +76,7 @@ class PairLJGromacsCoulGromacsKokkos : public PairLJGromacsCoulGromacs { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj_coul m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp index bb4dcb39bf..a72fb7dbf9 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp @@ -314,9 +314,9 @@ double PairLJGromacsKokkos::init_one(int i, int j) m_cut_inner_sq[j][i] = m_cut_inner_sq[i][j] = cut_inner_sqm; } - k_cutsq.h_view(i,j) = cutone*cutone; + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); - k_cut_inner_sq.h_view(i,j) = cut_inner_sqm; + k_cut_inner_sq.h_view(i,j) = k_cut_inner_sq.h_view(j,i) = cut_inner_sqm; k_cut_inner_sq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.h b/src/KOKKOS/pair_lj_gromacs_kokkos.h index bfe752e93f..4c03bf6e9b 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.h +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.h @@ -79,7 +79,7 @@ class PairLJGromacsKokkos : public PairLJGromacs { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.cpp b/src/KOKKOS/pair_lj_sdk_kokkos.cpp index 46715e6fa3..1acf35f18d 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.cpp +++ b/src/KOKKOS/pair_lj_sdk_kokkos.cpp @@ -290,7 +290,8 @@ double PairLJSDKKokkos::init_one(int i, int j) m_params[i][j] = m_params[j][i] = k_params.h_view(i,j); m_cutsq[j][i] = m_cutsq[i][j] = cutone*cutone; } - k_cutsq.h_view(i,j) = cutone*cutone; + + k_cutsq.h_view(i,j) = k_cutsq.h_view(j,i) = cutone*cutone; k_cutsq.template modify(); k_params.template modify(); diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.h b/src/KOKKOS/pair_lj_sdk_kokkos.h index 03ca361c1b..0b9056a23e 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.h +++ b/src/KOKKOS/pair_lj_sdk_kokkos.h @@ -72,7 +72,7 @@ class PairLJSDKKokkos : public PairLJSDK { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um params; - params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 15 atom types + params_lj m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; // hardwired to space for 12 atom types F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; typename ArrayTypes::t_x_array_randomread x; typename ArrayTypes::t_x_array c_x; diff --git a/src/KOKKOS/pair_tersoff_kokkos.h b/src/KOKKOS/pair_tersoff_kokkos.h index 7490d3f45a..128df40d60 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.h +++ b/src/KOKKOS/pair_tersoff_kokkos.h @@ -186,7 +186,7 @@ class PairTersoffKokkos : public PairTersoff { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um paramskk; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types //params_ters m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; int inum; diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.h b/src/KOKKOS/pair_tersoff_mod_kokkos.h index 5a26fa1557..a6582e63e5 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.h +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.h @@ -186,7 +186,7 @@ class PairTersoffMODKokkos : public PairTersoffMOD { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um paramskk; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types //params_ters m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; int inum; diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.h b/src/KOKKOS/pair_tersoff_zbl_kokkos.h index 136366d3fa..afdc0052b2 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.h +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.h @@ -191,7 +191,7 @@ class PairTersoffZBLKokkos : public PairTersoffZBL { Kokkos::DualView k_params; typename Kokkos::DualView::t_dev_const_um paramskk; - // hardwired to space for 15 atom types + // hardwired to space for 12 atom types //params_ters m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; int inum; From eca9539f84f725d5d81b821c03efe876d0c941cd Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 23 Dec 2016 11:38:48 -0700 Subject: [PATCH 36/70] Disallowing full neighborlist for pair_tersoff_kokkos styles until a bugfix is released --- src/KOKKOS/pair_tersoff_kokkos.cpp | 3 +++ src/KOKKOS/pair_tersoff_kokkos.h | 4 ++++ src/KOKKOS/pair_tersoff_mod_kokkos.cpp | 5 ++++- src/KOKKOS/pair_tersoff_mod_kokkos.h | 6 +++++- src/KOKKOS/pair_tersoff_zbl_kokkos.cpp | 3 +++ src/KOKKOS/pair_tersoff_zbl_kokkos.h | 4 ++++ 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index 40e54df33b..66faa956c6 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -99,6 +99,9 @@ void PairTersoffKokkos::init_style() neighbor->requests[irequest]-> kokkos_device = Kokkos::Impl::is_same::value; + if (neighflag == FULL) + error->all(FLERR,"Cannot (yet) use full neighbor list style with tersoff/kk"); + if (neighflag == FULL || neighflag == HALF || neighflag == HALFTHREAD) { //if (neighflag == FULL || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 1; diff --git a/src/KOKKOS/pair_tersoff_kokkos.h b/src/KOKKOS/pair_tersoff_kokkos.h index 128df40d60..9a3c152604 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.h +++ b/src/KOKKOS/pair_tersoff_kokkos.h @@ -225,6 +225,10 @@ class PairTersoffKokkos : public PairTersoff { /* ERROR/WARNING messages: +E: Cannot (yet) use full neighbor list style with tersoff/kk + +Self-explanatory. + E: Cannot use chosen neighbor list style with tersoff/kk Self-explanatory. diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index dd6adb128c..d89b411110 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -99,6 +99,9 @@ void PairTersoffMODKokkos::init_style() neighbor->requests[irequest]-> kokkos_device = Kokkos::Impl::is_same::value; + if (neighflag == FULL) + error->all(FLERR,"Cannot (yet) use full neighbor list style with tersoff/mod/kk"); + if (neighflag == FULL || neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; @@ -107,7 +110,7 @@ void PairTersoffMODKokkos::init_style() else neighbor->requests[irequest]->ghost = 0; } else { - error->all(FLERR,"Cannot use chosen neighbor list style with tersoff/kk"); + error->all(FLERR,"Cannot use chosen neighbor list style with tersoff/mod/kk"); } } diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.h b/src/KOKKOS/pair_tersoff_mod_kokkos.h index a6582e63e5..38320ca1be 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.h +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.h @@ -225,7 +225,11 @@ class PairTersoffMODKokkos : public PairTersoffMOD { /* ERROR/WARNING messages: -E: Cannot use chosen neighbor list style with tersoff/kk +E: Cannot (yet) use full neighbor list style with tersoff/mod/kk + +Self-explanatory. + +E: Cannot use chosen neighbor list style with tersoff/mod/kk Self-explanatory. diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index 40145dbec0..04195d4e45 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -110,6 +110,9 @@ void PairTersoffZBLKokkos::init_style() neighbor->requests[irequest]-> kokkos_device = Kokkos::Impl::is_same::value; + if (neighflag == FULL) + error->all(FLERR,"Cannot (yet) use full neighbor list style with tersoff/zbl/kk"); + if (neighflag == FULL || neighflag == HALF || neighflag == HALFTHREAD) { neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->half = 0; diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.h b/src/KOKKOS/pair_tersoff_zbl_kokkos.h index afdc0052b2..31c5912ff6 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.h +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.h @@ -239,6 +239,10 @@ E: Pair tersoff/zbl/kk requires metal or real units This is a current restriction of this pair potential. +E: Cannot (yet) use full neighbor list style with tersoff/zbl/kk + +Self-explanatory. + E: Cannot use chosen neighbor list style with tersoff/zbl/kk Self-explanatory. From aa146e9b383cb7c71928ad65590bdadb363b589a Mon Sep 17 00:00:00 2001 From: Efrem Braun Date: Wed, 28 Dec 2016 19:06:35 +0100 Subject: [PATCH 37/70] Moved fix_nvk to USER-MISC, updated documentation to reflect move --- doc/src/Section_commands.txt | 2 +- doc/src/fix.txt | 1 - doc/src/fix_nvk.txt | 4 ++++ src/{ => USER-MISC}/fix_nvk.cpp | 0 src/{ => USER-MISC}/fix_nvk.h | 0 5 files changed, 5 insertions(+), 2 deletions(-) rename src/{ => USER-MISC}/fix_nvk.cpp (100%) rename src/{ => USER-MISC}/fix_nvk.h (100%) diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt index 8baf8fd1b7..51c199f272 100644 --- a/doc/src/Section_commands.txt +++ b/doc/src/Section_commands.txt @@ -603,7 +603,6 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "nve/noforce"_fix_nve_noforce.html, "nve/sphere (o)"_fix_nve_sphere.html, "nve/tri"_fix_nve_tri.html, -"nvk"_fix_nvk.html, "nvt (iko)"_fix_nh.html, "nvt/asphere (o)"_fix_nvt_asphere.html, "nvt/body"_fix_nvt_body.html, @@ -703,6 +702,7 @@ package"_Section_start.html#start_3. "manifoldforce"_fix_manifoldforce.html, "meso/stationary"_fix_meso_stationary.html, "nve/manifold/rattle"_fix_nve_manifold_rattle.html, +"nvk"_fix_nvk.html, "nvt/manifold/rattle"_fix_nvt_manifold_rattle.html, "nph/eff"_fix_nh_eff.html, "npt/eff"_fix_nh_eff.html, diff --git a/doc/src/fix.txt b/doc/src/fix.txt index abe56bd764..464eab3169 100644 --- a/doc/src/fix.txt +++ b/doc/src/fix.txt @@ -217,7 +217,6 @@ of "this page"_Section_commands.html#cmd_5. "nve/noforce"_fix_nve_noforce.html - NVE without forces (v only) "nve/sphere"_fix_nve_sphere.html - NVE for spherical particles "nve/tri"_fix_nve_tri.html - NVE for triangles -"nvk"_fix_nvk.html - constant kinetic energy time integration "nvt"_fix_nh.html - constant NVT time integration via Nose/Hoover "nvt/asphere"_fix_nvt_asphere.html - NVT for aspherical particles "nvt/body"_fix_nve_body.html - NVT for body particles diff --git a/doc/src/fix_nvk.txt b/doc/src/fix_nvk.txt index f4c9fa4c3d..271483b441 100644 --- a/doc/src/fix_nvk.txt +++ b/doc/src/fix_nvk.txt @@ -54,6 +54,10 @@ the simulation box. Therefore, the group must be set to all. This fix has not yet been implemented to work with the RESPA integrator. +This fix is part of the USER-MISC 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:] none [Default:] none diff --git a/src/fix_nvk.cpp b/src/USER-MISC/fix_nvk.cpp similarity index 100% rename from src/fix_nvk.cpp rename to src/USER-MISC/fix_nvk.cpp diff --git a/src/fix_nvk.h b/src/USER-MISC/fix_nvk.h similarity index 100% rename from src/fix_nvk.h rename to src/USER-MISC/fix_nvk.h From 94c4f8fe5f13e320dcb2d957c03f01a727429935 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 28 Dec 2016 17:03:37 -0500 Subject: [PATCH 38/70] add authorship attribution --- src/USER-MISC/README | 1 + src/USER-MISC/fix_nvk.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 513973b4f5..8aed797235 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -43,6 +43,7 @@ fix gle, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov fix grem, David Stelter, dstelter@bu.edu, 22 Nov 16 fix imd, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 2009 fix ipi, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014 +fix nvk, Efrem Braun (UC Berkeley), efrem.braun at gmail.com, https://github.com/lammps/lammps/pull/310 fix pimd, Yuxing Peng (U Chicago), yuxing at uchicago.edu, 24 Nov 2014 fix smd, Axel Kohlmeyer, akohlmey at gmail.com, 19 May 2008 fix ti/spring, Rodrigo Freitas (Unicamp/Brazil), rodrigohb at gmail.com, 7 Nov 2013 diff --git a/src/USER-MISC/fix_nvk.cpp b/src/USER-MISC/fix_nvk.cpp index 862a555fed..5dcfe53e78 100644 --- a/src/USER-MISC/fix_nvk.cpp +++ b/src/USER-MISC/fix_nvk.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Efrem Braun (UC Berkeley) +------------------------------------------------------------------------- */ + #include #include #include @@ -27,8 +31,6 @@ using namespace LAMMPS_NS; using namespace FixConst; -/* ---------------------------------------------------------------------- */ - FixNVK::FixNVK(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { From 391ab761a40d4faed574e831896c9fe107ee18f8 Mon Sep 17 00:00:00 2001 From: Stefan Paquay Date: Mon, 2 Jan 2017 17:55:02 +0100 Subject: [PATCH 39/70] Finally updated the github tutorial. --- doc/src/JPG/tutorial_branch.png | Bin 74432 -> 16567 bytes doc/src/JPG/tutorial_fork.png | Bin 33708 -> 15243 bytes doc/src/JPG/tutorial_https_block.png | Bin 17671 -> 71654 bytes doc/src/tutorial_github.txt | 169 ++++++++------------------- 4 files changed, 50 insertions(+), 119 deletions(-) diff --git a/doc/src/JPG/tutorial_branch.png b/doc/src/JPG/tutorial_branch.png index 0c6d2c08812058ced3e9aea5494fc819553b1bc5..b23c5fec9fc404cdd501c8d2d20d468ac5457189 100644 GIT binary patch literal 16567 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 literal 74432 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

cW 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

8Z!EhVQlKk{4t}kZ_Xyon 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 MaY{W`%_`{M08o}uAOHXW diff --git a/doc/src/JPG/tutorial_fork.png b/doc/src/JPG/tutorial_fork.png index f22db97112fc7556faa622a0f4739f01d4a59163..1d512ba3e7f0c83268f412c88967a43fc3f323a0 100644 GIT binary patch literal 15243 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 z z)#=vYoU?>B`_ik!Cdgu6Kx9rN>zJ#q;Obh@THqho+|~xe~Kyw^rApa3Lr*Pb0&0(nE| zDNtFk$123b{qMsEJ{?=>uuj%OO0;o}}2iF*C{4N}C+mi!3 zD32@oHG7m$c1iAQ_kPdMBbF>ooePlQ^aq!2ny1of^%b~UM)N;D9Dv^n5}Pl$7qlQe zGjS^@Fc4i1$DW1jBf)x}vKQHTP;HZU^_hK7g8w=ZA6 zZbEtjQq0GRaQGYBuy*x4yBHNZ%88O8vBXb4sXg57?n9Di}U>eDSU$CeYrI}oIWvPUu%-sh)$ zFggOEALVEie)@Tob!{yMraUA!kT@jreG5Cg!q(0(xL10J=m3Tp`f7p$8}>z|!$qu% z3Q!!mzeuGOKvj)GBdiIpV=KUK7Z44o&g;|`#x(MO5z9<1=K-XCOV-+;Jm5PVjc`6U z8!pl!GAu+{5azW3o|d{7MF=JmyR3HI=5kn6;ujE@X}PM8s5L0n@cdB-C-TuL__@ZkpZB@a_9AHz~s0bmsE=_`mtG~zYLh55TWcZK?R2y&M;WDS5gGi zjws$4H5*4L1ke<7y#1~%O_y|;vpU`#2}^tc5iHK)Kl41r*J1J(x%(e#U>{c zKu<(;=(aXVV;#V`eU&=uL?PmqW0ZioM~8NE^J+PDu5Ss|46}blW+@JLvFINTe z8KBNXe*IDgTJh!KZWnwZ$)E|6S<key83UE#TL zWXD{8(1Sa7vsASfhP1>~x_(0J2Nxh(m^2>G?c3MicUbD`(FTRbb094Z(8@#OQseqN z-_r-kce_-Vt}5L#C;jN@vE@H{M7iSa+Xie5L}o404%>gAZ&L(fUBEfxrR~ zd_bvhqM|TBN&~y-?w{wmK}owB^pWKEHS?|fXpCJ8O!D#ucMY+No(#6W`;OdO-_rXm z$mgvbUK=!dNwrl~4rzn-}VXp2duDMz`G$ir9P=x^LGw6xUDjZdkn5(IV5 zQg=c}69Q#Z^}ekfL27up-s#G9s9pv7nVFdah&dx5Ipgpy?wsK(=O^g{zb2^}nVE6; z-tCx#sySI&E;Cg;1QZw4^K^WQ)-kLHFNw8nc5vq)Kj@7VLzu8v)HQ|OEbnyHIwU2r zy7|nJ@O2BK=mMU^Q~h$>H`^?4QtfOX!H4MhHqSLPOj~~aA_7X@qczmo*-0D15#PtZ z12?5sw-ooScSw#=THSJOlL`4gWmvlauONcZ;p=juDL(KcllIGX-V}xh`~YGP5jT3P z`=q_tJli`*AF}B2pzDVQ!e7Z66%H|&X{SqKEKjBeBCkeoY`}y1>n0HXUl92JKQG{s zGBllKQ9;2fCid@5op7Q@!g>FFpE%f+tWe!cf9)80`pSs$DRAVFhaB#I9uGZn)4#sZ r%Wuv9xk>c5x&Qkf<^O}HZl71&I<9{k7IzK4U5k>IP!P`(HSqgCacGx% literal 33708 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 Yx-v~Ux+Y2a5e2`_OI#4o5YzVhKV}W^8~^|S diff --git a/doc/src/JPG/tutorial_https_block.png b/doc/src/JPG/tutorial_https_block.png index ffa4523681f13a1dcca46246fed11b7c0ee7479f..6eecc6ad2c811dd4b38eafdbe1f2fe0412ccc363 100644 GIT binary patch literal 71654 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 Xyb6Nf^y;J@Y($;Y)YT|bvkmiYb>i*sp8dt~ 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/lammps.git :pre -I assume that git is installed on the local machine and you know how -to use a command line. +or, if you have SSH keys setup, using your SSH key: -First of all, you need to clone your own fork of LAMMPS: - - $ git clone https://github.com//lammps.git :pre - -You can find the proper url to the right of the "HTTPS" block, see figure. + $ git clone git@github.com:/lammps.git :pre + +You can find the proper url by clicking the "Clone or download"-button: :c,image(JPG/tutorial_https_block.png) The above command copies ("clones") the git repository to your local -machine. You can use this local clone to make changes and test them -without interfering with the repository on github. First, however, it -is recommended to make a new branch for a particular feature you would -like added to LAMMPS. In this example, I will try adding a new -USER-package called USER-MANIFOLD. +machine to a directory with the name you chose. If none is given, it will +default to "lammps". Typical names are "mylammps" or something similar. -To create a new branch, run the following git command in your repository: +You can use this local clone to make changes and +test them without interfering with the repository on Github. -$ git checkout -b add-user-manifold :pre +To pull changes from upstream into this copy, you can go to the directory +and use git pull: -The name of this new branch is "add-user-manifold" in my case. Just -name it after something that resembles the feature you want added to -LAMMPS. + $ cd mylammps :pre + $ git pull https://github.com/lammps/lammps :pre -Now that you've changed branches, you can edit the files as you see -fit, add new files, and commit as much as you would like. Just -remember that if halfway you decide to add another, unrelated feature, -you should switch branches! +You can also add this url as a remote: + + $ git remote add lammps_upstream https://www.github.com/lammps/lammps :pre + +At this point, you typically make a feature branch for the feature you +want to work on. This tutorial contains the workflow that updated this +tutorial, and hence we will call the branch "github-tutorial-update": + + $ git checkout -b github-tutorial-update :pre + +Now that we have changed branches, we can make our changes to our local +repository. Just remember that if you want to start working on another, +unrelated feature, you should switch branches! + +[After changes are made] After everything is done, add the files to the branch and commit them: - $ git add src/USER-MANIFOLD examples/USER/manifold/ - $ git add doc/fix_nv\{t,e\}_manifold_rattle.txt - $ git add doc/fix_manifoldforce.txt doc/user_manifolds.txt :pre + $ git add doc/src/tutorial_github.txt :pre + $ git add doc/src/JPG/tutorial_*.png :pre -After the files are added, the change should be comitted: - - $ git commit -m 'Added user-manifold package' :pre - -The "-m" switch is used to add a message to the commit. Use this to -indicate what type of change was commited. - -[Wisdom by Axel] +[Warning] {"Do not use "git commit -a". the -a flag will automatically include *all* modified or new files. mercurial does that and it find it @@ -121,7 +119,12 @@ renaming and then git commit to finalize the commit. personally, i find it very convenient to use the bundled gui for commits, i.e. git gui. typically, i will do git add and other operations, but then verify and review them with git gui. git gui also allows to do -line-by-line unstaging and other convenient operations."} +line-by-line unstaging and other convenient operations." - Axel} + +After adding all files, the change can be commited with some useful message +that explains the change. + + $ git commit -m 'Finally updated the github tutorial' :pre After the commit, the changes can be pushed to the same branch on GitHub: @@ -140,75 +143,3 @@ or using an explicit URL: $ git push git@github.com:Pakketeretet2/lammps.git :pre -After that, you can file a new pull request based on this -branch. GitHub will now look like this: - -:c,image(JPG/tutorial_pull_request_feature_branch1.png) - -Make sure that the current branch is set to the correct one, which, in -this case, is "add-user-manifold". Now click "New pull request". If -done correctly, the only changes you will see are those that were made -on this branch, so in my case, I will see nothing related to -$\mathrm{pair\_dzugatov}.$ - -This will open up a new window that lists changes made to the -repository. If you are just adding new files, there is not much to do, -but I suppose merge conflicts are to be resolved here if there are -changes in existing files. If all changes can automatically be merged, -green text at the top will say so and you can click the "Create pull -request" button, see image. - -:c,image(JPG/tutorial_pull_request2.png) - -After this you have to specify a short title and a comment with -details about your pull request. I guess here you write what your -modifications do and why they should be incorporated upstream. After -that, click the "Create pull request" button, see image below. - -:c,image(JPG/tutorial_pull_request3.png) - -Now just write some nice comments, click "Comment", and that is it. It -is now up to the maintainer(s) of the upstream repository to -incorporate the changes into the repository and to close the pull -request. - -:c,image(JPG/tutorial_pull_request4.png) - -:line - -[Additional changes] - -Before the pull request is accepted, any additional changes you push -into your repository will automatically become part of the pull -request. - -:line - -[After a merge] - -When everything is fine the feature branch is merged into the LAMMPS -repositories: - -:c,image(JPG/tutorial_merged.png) - -Now one question remains: What to do with the feature branch that got -merged into upstream? - -It is in principle safe to delete them from your own fork. This helps -keep it a bit more tidy. Note that you first have to switch to another -branch! - -$ git checkout lammps-icms -$ git pull lammps-icms -$ git branch -d add-user-manifold :pre - -If you do not pull first, it is not really a problem but git will warn -you at the next statement that you are deleting a local branch that -was not yet fully merged into HEAD. This is because git does not yet -know your branch just got merged into lammps-icms upstream. If you -first delete and then pull, everything should still be fine. - -Finally, if you delete the branch locally, you might want to push this -to your remote(s) as well: - -$ git push origin :add-user-manifold :pre From 4d98bbdfa502cd525c9f8249e1d750d74a8226e8 Mon Sep 17 00:00:00 2001 From: Stefan Paquay Date: Mon, 2 Jan 2017 18:08:14 +0100 Subject: [PATCH 40/70] Almost done with the tutorial now --- doc/src/JPG/tutorial_new_pull_request.png | Bin 0 -> 19578 bytes doc/src/tutorial_github.txt | 96 +++++++++++++++++++++- 2 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 doc/src/JPG/tutorial_new_pull_request.png diff --git a/doc/src/JPG/tutorial_new_pull_request.png b/doc/src/JPG/tutorial_new_pull_request.png new file mode 100644 index 0000000000000000000000000000000000000000..c442282c817a632b577322a23ceea7c53953bfab GIT binary patch literal 19578 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